プラットフォーム - ARM9
I2C 経由で ARM9 に接続されたサードパーティ デバイスがあります。私の問題は、I2C の読み取り/書き込みがねじれていることです。IRQ ラインがアサートされているように見えますが、読み取るデータがある場合はアサート解除されません。サードパーティ デバイスがアドレス パケットに対して NACK を返すため、読み取りは失敗します。したがって、後続の書き込みはすべて失敗します。
割り込み処理が正常かどうか疑問に思っています。IRQ を処理する ISR では、割り込みを無効にし、割り込みハンドラーの登録を解除してから、I2C バスから読み取るようにタスクに通知します。最後に、割り込みを再度有効にします。
タスクが上記の信号を処理するときに、I2C バスからデータを読み取ろうとしましたが、失敗しました。最後に、読み取りを試みた後は常に ISR を再登録します。読み取り信号の処理中に発生する割り込みの無効化/有効化はありません。
私の質問は、I2C バスの読み取り/書き込み時に割り込みを無効にする必要がありますか?
選択したプログラミング言語は、独自の RTOS を使用した c です。