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