dsPic33E: Как реализовать уведомление об изменении входа на выводе цифрового входа?

Как говорится в вопросе, я хочу реализовать ICN (Уведомление об изменении входа) для цифрового входа.

Я использую dsPic33EP512GM604.

Я настроил контакт<22> RB1 ​​в качестве входного.

ИК-датчик подключен к тому же контакту. Я ищу способ (кроме опроса), чтобы получить прерывание всякий раз, когда датчик обнаруживает объект (отправляет высокий сигнал).

При просмотре таблицы данных устройства я обнаружил доступную функцию уведомления об изменении ввода (ICN).

Это говорит:

"Функция уведомления об изменении ввода портов ввода / вывода позволяет устройствам генерировать запросы прерывания к процессору в ответ на изменение состояния (COS) на выбранных входных выводах. Эта функция может обнаруживать изменение состояния входа (COS)), даже в спящем режиме, когда часы отключены. Каждый вывод порта ввода / вывода может быть выбран (включен) для генерации запроса прерывания при изменении состояния. "

Я пытался найти дополнительную информацию о его реализации, но не смог найти никакой информации.

Кто-нибудь может подсказать мне способ его реализации или поделится ссылкой, объясняющей его реализацию или связанной с ней информацией???

1 ответ

Решение

Вам необходимо общее руководство по dspic33e (руководство с отдельным файлом на периферийное устройство).

Попробуйте что-то вроде

 CNENBbits.CNIEB1 = 1; // Enable RB1 pin for interrupt detection
 _CNIP=7;       // priority (7 = highest)
 _CNIE = 1; // Enable CN interrupts
 _CNIF = 0; // clear interrupt flag

и определите свою процедуру прерывания _CN примерно так:

void __attribute__((__interrupt__, no_auto_psv)) _CNInterrupt(void)
{
     _CNIF = 0; 
}  

Если вы включаете CN для нескольких контактов, вы должны опросить контакты в прерывании, чтобы определить, какой из них активировал его.

Другие вопросы по тегам