ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Вторник
7 июля
/914975
Топик полностью
Nikolay_Po (09.04.2019 20:56 - 21:03, просмотров: 16) в ответ на I2C мастер, что на PIC24HJ, что на dsPIC30F, не вызывает прерываний по завершению "СТОП" [РАЗОБРАЛСЯ] см. ниже сообщение "РЕШЕНИЕ ПРОБЛЕМЫ". - автор: Nikolay_Po
РЕШЕНИЕ ПРОБЛЕМЫ: Потребовалась проверка бит активности модуля, 5 младших, регистра I2CxCON, перед принудительной установкой флага прерывания мастера, что выполняется при помещении задания в пустую очередь транзакций. Исходный код MCC (MPLAB Code Configurator) не содержал такой проверки и, при особо интенсивном использовании очереди сообщений, приводил к вызову прерывания I2C-мастера в момент, когда ещё не было завершено событие шины, а именно, СТОП, но сама очередь была уже пуста. В этом случае модуль зависал при попытке выполнить другую операцию, например, СТАРТ, и больше не вызывал прерываний. На картинках - примеры опроса EEPROM до возвращения её отзывчивости после записи страницы.
Ответить