こんにちは。MMA8652FC と nrf52832 を使用して、FIFO、Trans、自動スリープ/ウェイク機能を実現したいと考えています。
そしてほぼ終わりました。しかし予期せぬ中断に遭遇しました。
まず INT1 は Trans INT と Auto Sleep/Wake で、INT2 は FIFO INT のみです。
ロジックは、スタート -> 初期化トランザクション、車載スリープ/ウェイク、FIFO、HPF -> 2 秒後、スリープ モードです。
Trans INT が発生した場合、ウェイク アップして 2 秒後にスリープ モードになります。
また、nrf52832 のボタンを押してスタンバイ モードを設定し、HPF を無効にして、FIFO からデータを取得します。
その後、HPF が有効になり、スリープ モードになります。
車載スリープとトランス機能は問題ありません。それは非常にうまく機能します。
しかし、ボタンを押すと、FIFO からの読み取りは正常です。ただし、スリープモードの前です。INT 1 が発生します。
SO、私の意見では、ボタンを押した場合、Sleep INT は 1 回だけ発生します。しかし、今ではINT1が2回発生しています。
INT_SOURCEレジスタをデバッグします。0 です。割り込みは何も起こりません。
自動スリープ/ウェイクを無効にした場合。予期しない割り込みは発生しません。
割り込みに関して、スリープ <-> ウェイク遷移またはスタンバイ <-> アクティブ モードが失われているのでしょうか?
何が問題なのか教えてください。
よろしくお願いします。
INT1の割り込み時にINT_SOURCEの内容がゼロになるという問題が発生しました。原因は、加速度センサがINT_SOURCEのチェック前にスリープ状態になったためだと分かりました。自動スリープを無効にしたら、空の割り込みが発生しなくなりました。
こんにちは、 Bヨンファンさん
この問題の根本的な原因が何であるかを言うのは非常に困難です。
割り込みが発生したときは、INT_SOURCE (0x0C) レジスタのビットがどの組み込み関数が割り込みをアサートしたかを示すため、そのレジスタを再確認してください。
INT1 ピンとバスのアクティビティを確認するためのロジック アナライザーまたはオシロスコープをお持ちですか?
予期しない割り込みが具体的にいつ発生するのかを詳しく説明していただけますか?時間依存性はありますか?
よろしくお願いいたします。
トーマス