私はTI CC2541 BLEチップ内で8051をプログラミングしています。タイマー割り込みのコールバックとイベント ループで実行されるイベントの間の優先度はどのように処理されますか?
timer1 割り込みを使用して i2c を読み取る理由は、10ms ごとにサンプリングしたいためですが、イベント ループはその期間を保証しません (センサー タグのサンプル コードでは、i2c はイベント ループから読み取られます)。
私はTI CC2541 BLEチップ内で8051をプログラミングしています。タイマー割り込みのコールバックとイベント ループで実行されるイベントの間の優先度はどのように処理されますか?
timer1 割り込みを使用して i2c を読み取る理由は、10ms ごとにサンプリングしたいためですが、イベント ループはその期間を保証しません (センサー タグのサンプル コードでは、i2c はイベント ループから読み取られます)。
答えは、システムのセットアップ方法によって異なります。
シナリオ 1) 「イベント ループ」は、常に何をすべきか (ポーリング) をチェックする「通常の」ループです。タイマー割り込みは起動時に初期化され、無効になることはありません。
-> タイマー割り込みは「イベント ループ」より優先度が高い
シナリオ 2) 「イベント ループ」は、常に何をすべきか (ポーリング) をチェックする「通常の」ループです。タイマー割り込みは起動時に初期化されます。イベント ループは、特定の重要な操作中のタイマー割り込みを無効にします。
-> タイマー割り込みは、「イベント ループ」内の通常のコードよりも優先度が高くなります。イベントループの「重要な操作」よりも優先度が低くなります。