IPA過去問ドリル

令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問11

テクノロジ/ハードウェア

表のインターバルタイマーを用いて約 20 ミリ秒ごとにタイマー割込みを発生させたい。16 ビットタイマーコンペアレジスタに設定する値は 10 進数で幾つか。ここで,システムクロックは 32 MHz とする。 〔インターバルタイマーの仕様〕 タイマークロック:システムクロックを 32 分周したもの 16 ビットタイマーカウンター:タイマークロックの立ち上がりに同期してインクリメントされる。16 ビットタイマーコンペアレジスタからの初期化指示があると 0 で初期化される。 16 ビットタイマーコンペアレジスタ:設定された値と 16 ビットタイマーカウンターの値が一致すると,タイマー割込みを発生し,16 ビットタイマーカウンターに初期化指示を出す。 (注:本サイトでは原問題の表を文字表記に変換しています)

出典:令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問11

正解:エ

解説

タイマークロックはシステムクロック 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 になります。
エンベデッドシステムスペシャリストの過去問を演習モードで解く