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

選択肢
ア:1
イ:19
ウ:1,999
エ:19,999(正解)
🔒 解説は解答すると表示されます
インターバルタイマの比較値【午前2解説】
正解の理由
タイマクロックは、システムクロックを32分周したものです。
したがって、タイマカウンタは1秒間に100万回、つまり1回のカウントに かかります。20ミリ秒の間に必要なカウント数は、次のとおりです。
カウンタは0から数え始めるため、20,000カウントの最後の値は です。よって、比較レジスタに設定する値は エ の19,999です。
解法ステップ
-
タイマクロックを求めます。
-
タイマクロック1周期の時間を求めます。
-
20ミリ秒に相当するカウント数を求めます。
-
カウンタが0から数えることを考慮し、1を引きます。
選択肢別の誤答解説
-
ア:1
タイマクロックの周波数や、20ミリ秒に必要なカウント数を正しく反映できていません。 -
イ:19
20ミリ秒から1を引いただけの値です。比較値は時間をそのまま数値化するのではなく、タイマクロックの周期に基づいて求めます。 -
ウ:1,999
必要なカウント数を10分の1に見積もっています。タイマクロックは1MHzなので、20ミリ秒では20,000カウントが必要です。 -
エ:19,999
20,000カウント分の間隔を作る値です。カウンタが0から始まるため、設定値はカウント数から1を引いた値になります。
よくある誤解
-
20,000カウントなら設定値も20,000だと思う
カウンタは0から始まるため、0から19,999までで20,000個の値を数えます。 -
システムクロックをそのまま使って計算する
この問題では、タイマクロックはシステムクロックを32分周したものです。分周後のクロックで計算します。 -
ミリ秒とマイクロ秒の換算を間違える
です。20ミリ秒は20,000マイクロ秒です。
補足コラム
16ビットのタイマカウンタが表せる値は、0〜65,535です。今回の比較値19,999はこの範囲内なので、16ビットのタイマで設定できます。
FAQ
なぜ比較値から1を引くのですか?
カウンタが0から始まり、0も1カウント分として数えるためです。たとえば、0から3まで数えると、カウント値は0、1、2、3の4つです。
カウンタが0から始まり、0も1カウント分として数えるためです。たとえば、0から3まで数えると、カウント値は0、1、2、3の4つです。
タイマクロック1MHzから、1カウントが1マイクロ秒と分かるのはなぜですか?
1MHzは1秒間に100万回のクロックを意味します。したがって、1周期は 秒、すなわち です。
1MHzは1秒間に100万回のクロックを意味します。したがって、1周期は 秒、すなわち です。
関連キーワード: インターバルタイマ、タイマクロック、分周、タイマカウンタ、コンペアレジスタ

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

