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 для нескольких контактов, вы должны опросить контакты в прерывании, чтобы определить, какой из них активировал его.