Yaumen 0 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба Есть готовое устройство на PIC18F14K22, у которого на выводе MCLR висит кнопка, которая в процессе работы за счет различных типов нажатий (click, double click, long pressed) переключает режимы работы и отображения информации на дисплее. После некоторого простоя, устройство надо переводить в режим SLEEP, с возможностью просыпания или хотя бы перезапуска устройства по нажатию на эту же кнопку. Так вот перед тем как уснуть, я разрешаю прерывание по изменению порта RA3(MCLR) и выполняю команду SLEEP. Но вместо того чтобы уснуть, устройство тут же просыпается и продолжает работу, хотя на кнопку никто не нажимал. Если в качестве просыпания используется любой другой вход, то все нормально работает, но мне нужно чтобы работало от RA3/MCLR. Что за чудо вход, где я косячу? INTERRUPT_GlobalInterruptDisable(); IOCAbits.IOCA3 = 1; INTCONbits.RABIF = 0; Nop(); Sleep(); Nop(); IOCAbits.IOCA3 = 0; INTCONbits.RABIF = 0; INTERRUPT_GlobalInterruptEnable(); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 66 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба 40 минут назад, Yaumen сказал: Но вместо того чтобы уснуть, устройство тут же просыпается и продолжает работу, хотя на кнопку никто не нажимал. watchdog включен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба 1 час назад, Yaumen сказал: но мне нужно чтобы работало от RA3/MCLR. Что за чудо вход, где я косячу? Скорее всего, в конфигурации не установили режим: "RA3 input pin enabled". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба 28 minutes ago, HardEgor said: watchdog включен? нет 4 minutes ago, quark said: Скорее всего, в конфигурации не установили режим: "RA3 input pin enabled". Установил. Иначе бы выбор режимов по кнопке, подключенной к RA3 не работал, а постоянно бы сбрасывался! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба Почитайте в даташите раздел "I/O Ports". Там есть правильная последовательность действий. Нужна еще операция чтения регистра обязательно, на сколько я помню, перед сбросом флагов прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба 5 minutes ago, quark said: Почитайте в даташите раздел I/O Ports. Там есть правильная последовательность действий. Нужна еще операция чтения регистра обязательно, на сколько я помню, перед сбросом флагов прерываний. Уже до дыр зачитал ... Я не первый день уже с этим борюсь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба 51 минуту назад, Yaumen сказал: Уже до дыр зачитал ... Я не первый день уже с этим борюсь А подтягивающие резисторы внешние или внутренние используете? Попробуете внешнюю подтяжку поставить на A3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба стоит 10К к питанию и емкость 0.1 мкФ к земле Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба 6 минут назад, Yaumen сказал: стоит 10К к питанию и емкость 0.1 мкФ к земле В общем, если хотите чтобы вам помогли разобраться, нужно выложить установленную конфигурацию полностью и кусок программы перехода в Sleep целиком, где устанавливаются все рабочие регисторы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба Я это и сделал в самом первом посте. Это и есть полный код перехода в SLEEP. Проблема решилась добавлением PORTA перед сбросом RABIF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба 7 минут назад, Yaumen сказал: Проблема решилась добавлением PORTA перед сбросом RABIF Понятно. Порт A3 - только для чтения. В этом его отличие от других. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться