エンベデッドシステムスペシャリスト 2023年 午前2 問11
問題文
表のインターバルタイマーを用いて約20ミリ秒ごとにタイマー割込みを発生させたい。16ビットタイマーコンペアレジスタに設定する値は10進数で幾つか。ここで、システムクロックは32MHzとする。

選択肢
ア:1
イ:19
ウ:1,999
エ:19,999(正解)
🔒 解説は解答すると表示されます
タイマー割込み周期の設定【午前2解説】
正解の理由
タイマークロックは、システムクロックを32分周したものです。
タイマーカウンターは1 MHzで動作するため、1カウントにかかる時間は次のとおりです。
約20ミリ秒は20,000マイクロ秒なので、必要なカウント数は20,000です。カウンターは0から数えるため、設定値は「20,000 − 1」の19,999になります。したがって、エが正解です。
解法ステップ
-
システムクロックを分周し、タイマークロックを求めます。
-
タイマークロックの周期を求めます。
-
20ミリ秒をマイクロ秒に換算します。
-
カウンターが0から数えることを考慮し、比較レジスタの値を求めます。
選択肢別の誤答解説
よくある誤解
-
システムクロックをそのままタイマーの動作周波数として計算する
タイマークロックは32分周後の1 MHzです。システムクロックの32 MHzを使うと、周期を誤って計算してしまいます。 -
カウント数と比較レジスタの設定値を同じにする
0から数えるため、20,000カウントにする設定値は19,999です。 -
ミリ秒とマイクロ秒の換算を誤る
1ミリ秒は1,000マイクロ秒です。20ミリ秒は20,000マイクロ秒です。
補足コラム
16ビットのタイマーカウンターで表せる値は、0〜65,535です。今回必要な設定値19,999はこの範囲内なので、16ビットで問題なく設定できます。
FAQ
なぜ設定値を20,000ではなく19,999にするのですか?
カウンターが0から始まり、0もカウントに含めて20,000回分の時間を作るためです。数える値は0〜19,999の20,000個になります。
カウンターが0から始まり、0もカウントに含めて20,000回分の時間を作るためです。数える値は0〜19,999の20,000個になります。
タイマークロックが1 MHzだと、1カウントは何秒ですか?
1マイクロ秒です。周波数が1秒間に1,000,000回なので、1回分の周期はその逆数です。
1マイクロ秒です。周波数が1秒間に1,000,000回なので、1回分の周期はその逆数です。
関連キーワード: タイマークロック、分周、タイマーカウンター、比較レジスタ、タイマー割込み

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

