平成31年度 春期 午前Ⅱ 問15
ハードウェア
タイマに関する問題
表のインターバルタイマを用いて約20ミリ秒ごとにタイマ割込みを発生させたいとき,16ビットタイマコンペアレジスタに設定する値は10進数で幾つか。ここで,システムクロックは32MHzとする。
| 項目 | 説明 |
|---|---|
| タイマクロック | システムクロックを32分周したもの |
| 16ビットタイマカウンタ | タイマクロックの立ち上がりに同期してインクリメントされる。16ビットタイマコンペアレジスタからの初期化指示があると0で初期化される。 |
| 16ビットタイマコンペアレジスタ | 設定された値と16ビットタイマカウンタの値が一致すると,タイマ割込みを発生し,16ビットタイマカウンタに初期化指示を出す。 |
- ア1
- イ19
- ウ1,999
- エ19,999
答えと解説を見る
✓ これが正解エ19,999
解説
1マイクロ秒刻みで2万回数えるので、0から数えて19,999です。
タイマクロックは32MHzを32分周した1MHzなので、カウンタは1マイクロ秒ごとに1ずつ増えます。20ミリ秒は20,000マイクロ秒なので、20,000刻みごとに割込みを出せばよいことになります。表の説明では、カウンタはコンペアレジスタの値と一致すると割込みを出し、0に初期化されます。0から数え始めて設定値Nで一致すると、0、1、…、NのN+1刻みで一周するので、N+1=20,000からN=19,999となります。カウンタが0から始まる分だけ1を引くことが、この型の計算の要点です。
ほかの選択肢はなぜ違うのか
- ア1:1を設定すると、カウンタは0と1の2刻み、つまり約2マイクロ秒ごとに一致して割込みが出ます。求める約20ミリ秒の周期とは桁がまったく合いません。
- イ19:19を設定すると20刻みごと、1マイクロ秒刻みでは約20マイクロ秒の周期になります。20ミリ秒をマイクロ秒に直さず20のまま刻みの数にすると、この値になります。
- ウ1,999:1,999を設定すると2,000刻みごと、すなわち約2ミリ秒の周期です。求める約20ミリ秒より1桁短く、刻みの数を10分の1に見積もっています。
出典:平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問15
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)