組込み・ファームウェア
割り込みハンドラの中で避けるべきこととして最も適切なものはどれか。
- Aフラグ変数に1を書いて、メイン処理に知らせること
- B割り込みの原因を示すビットを消すこと
- Cprintfでの長い文字列の出力や、何かが起こるまで待ち続けるループのような時間のかかる処理
答えと解説を見る
正解:C. printfでの長い文字列の出力や、何かが起こるまで待ち続けるループのような時間のかかる処理
割り込みハンドラが長く動いていると、その間はほかの割り込みに応えられず、メイン処理も止まります。printfは出力が終わるまで時間がかかり、中で割り込みを使うこともあるので特に危険です。ハンドラでは、データを受け取ってバッファに入れる、フラグを立てるといった最小限の処理だけを行い、重い処理はメイン処理やタスクに任せます。原因のビットを消すことも忘れてはいけません。
- A. 短い処理でメイン処理に知らせるのは良い方法です。
- B. 原因のビットを消さないと、同じ割り込みが繰り返し起きます。
- C. 正しい。ほかの割り込みやメイン処理を長く止めてしまいます。