令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問11
テクノロジ/ハードウェア表のインターバルタイマーを用いて約 20 ミリ秒ごとにタイマー割込みを発生させたい。16 ビットタイマーコンペアレジスタに設定する値は 10 進数で幾つか。ここで,システムクロックは 32 MHz とする。 〔インターバルタイマーの仕様〕 タイマークロック:システムクロックを 32 分周したもの 16 ビットタイマーカウンター:タイマークロックの立ち上がりに同期してインクリメントされる。16 ビットタイマーコンペアレジスタからの初期化指示があると 0 で初期化される。 16 ビットタイマーコンペアレジスタ:設定された値と 16 ビットタイマーカウンターの値が一致すると,タイマー割込みを発生し,16 ビットタイマーカウンターに初期化指示を出す。 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問11
- ア1
- イ19
- ウ1,999
- エ19,999
正解:エ
解説
タイマークロックはシステムクロック 32 MHz を 32 分周したものなので 1 MHz,すなわち周期は 1 マイクロ秒です。20 ミリ秒は 20,000 マイクロ秒なので,20,000 カウント分の時間が必要です。カウンターは 0 から始まって 1 ずつ増え,コンペアレジスタの値と一致した時点で割込みを発生させて 0 に初期化されるので,1 周期は「設定値 + 1」カウントになります。したがって設定値は 20,000 - 1 = 19,999 です。
選択肢ごとの解説
- ア誤り。設定値 1 では 2 カウント,すなわち 2 マイクロ秒ごとの割込みとなり,20 ミリ秒には遠く及びません。
- イ誤り。タイマークロックの周期を 1 ミリ秒と取り違えた場合の値です。実際の周期は 1 マイクロ秒なので,1,000 倍のカウント数が必要です。
- ウ誤り。2 ミリ秒ごとに割込みを発生させる場合の設定値であり,時間の桁を一つ間違えた値です。分周後のクロック周期は 1 マイクロ秒なので 20 ミリ秒は 20,000 カウントです。
- エ正しい。20 ミリ秒 ÷ 1 マイクロ秒 = 20,000 カウントであり,0 から数え始めるため設定値は 19,999 になります。