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