Платформа - ARM9
У меня есть устройство стороннего производителя, подключенное через I2C к ARM9. Моя проблема заключается в том, что чтение / запись I2C происходит в поворот. Кажется, что линия IRQ установлена, но никогда не отменяется, когда есть данные для чтения. Сбой чтения, когда стороннее устройство NACKs адресует пакет. Так что любая последующая запись не удалась.
Мне интересно, нормально ли обработано мое прерывание. В ISR, который обслуживает IRQ, я отключаю прерывания, отменяю регистрацию обработчика прерываний и затем сигнализирую задаче перейти к чтению с шины I2C. Наконец, я снова включаю прерывания.
Когда задача обрабатывает сигнал, указанный выше, я пытаюсь прочитать данные с шины I2C, но это не удается. Наконец, я всегда перерегистрирую ISR после каждой попытки чтения. Во время обработки сигнала считывания отключение / включение прерываний не происходит.
Мой вопрос: нужно ли отключать прерывания при чтении / записи на шину I2C?
Язык программирования выбран с использованием собственной RTOS.