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