組込み・ファームウェア
1 msごとに一定の制御の計算を行いたい。OSを使わないマイコンでの実装として最も適切なものはどれか。
- A1 msごとのタイマ割り込みでフラグを立て、メインのループがフラグを見て計算を行う
- Bメインのループの中に、だいたい1 msかかりそうな空のループを入れて間隔を作る
- C計算が終わるたびにマイコンを再起動する
答えと解説を見る
正解:A. 1 msごとのタイマ割り込みでフラグを立て、メインのループがフラグを見て計算を行う
空のループで時間を作ると、ほかの処理にかかる時間やコンパイラの最適化によって間隔が変わり、正確になりません。ハードウェアのタイマは処理に関係なく正確に数えるので、1 msごとの割り込みを基準にすれば一定の間隔を保てます。計算が短ければ割り込みの中で直接行うこともできますが、長い場合はフラグで知らせてメインのループで行うと、ほかの割り込みを妨げません。
- A. 正しい。ハードウェアのタイマで正確な間隔を作れます。
- B. ほかの処理の時間で間隔が変わり、正確になりません。
- C. 再起動は必要ありません。