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

選択肢
ア:1
イ:19
ウ:1,999
エ:19,999(正解)
🔒 解説は解答すると表示されます
インターバルタイマの比較値【午前2解説】
正解の理由
システムクロックは32 MHzで、タイマクロックはその32分の1です。
タイマは1秒間に100万回カウントするため、1回のカウントにかかる時間は1マイクロ秒です。20ミリ秒の間に必要なカウント数は、次のとおりです。
カウンタは0から数え始めるため、20,000回分のカウント値は0から19,999までです。したがって、比較レジスタには19,999を設定します。該当する選択肢はエです。
解法ステップ
-
タイマクロックを求めます。
-
タイマクロックの周期を求めます。
-
20ミリ秒間のカウント回数を求めます。
回 -
カウンタが0から数えることを考慮し、比較値を求めます。
選択肢別の誤答解説
-
ア:1
タイマクロックの周期や分周比の扱いを誤り、必要なカウント数を求められていません。 -
イ:19
20ミリ秒を20として扱い、マイクロ秒単位でのカウント回数への換算を誤っています。 -
ウ:1,999
タイマクロックの周波数、または時間単位の換算を誤った場合に生じる値です。必要なカウント数は20,000回です。 -
エ:19,999
0から19,999までの値を数えると合計20,000回となり、1マイクロ秒ごとのカウントで約20ミリ秒になります。
よくある誤解
- 「20ミリ秒分のカウント数が20,000回だから、比較値も20,000」と考える誤りです。カウンタが0から始まるため、比較値は1小さくなります。
- システムクロックの32 MHzをそのままカウント周波数として使う誤りです。タイマクロックは32分周後の1 MHzです。
- 1 MHzを「1マイクロ秒ごとに100万回」と取り違える誤りです。1 MHzは1秒間に100万回、つまり周期は1マイクロ秒です。
補足コラム
カウンタが0から比較値までの値を順に取る場合、1周期のカウント数は「比較値+1」です。そのため、必要なカウント数を とすると、比較レジスタの値は通常 になります。この問題では、20,000回のカウントに対して比較値は19,999です。
FAQ
Q. なぜ比較値を20,000にしないのですか?
A. カウンタが0から始まり、0もカウント値の一つとして含まれるためです。0から20,000まで数えると、カウント数は20,001回になります。
A. カウンタが0から始まり、0もカウント値の一つとして含まれるためです。0から20,000まで数えると、カウント数は20,001回になります。
Q. タイマクロックの周期はどう求めますか?
A. 周波数の逆数です。1 MHzなら、秒、つまり1マイクロ秒です。
A. 周波数の逆数です。1 MHzなら、秒、つまり1マイクロ秒です。
関連キーワード: インターバルタイマ、タイマクロック、分周、タイマコンペアレジスタ、カウンタ】【。

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

