IPA過去問ドリル

平成22年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問4

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

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

出典:平成22年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問4

正解:エ

解説

システムクロック32MHzを32分周すると,タイマクロックの周期は32/32MHz=1マイクロ秒になります。約20ミリ秒ごとに割込みを発生させるには,20ミリ秒/1マイクロ秒=20,000回のタイマクロックが必要です。16ビットタイマカウンタは0から始まり,コンペアレジスタの値と一致した時点で割込みを発生して0に初期化されるため,カウンタが0,1,2,…,設定値と20,000個の値(0を含む)を数え終えるように,設定値には20,000-1=19,999を設定します。

選択肢ごとの解説

  • 誤り。1は,分周後のクロック回数の計算を全く反映していない値です。
  • 誤り。19は,20,000回のクロックを数えるために必要な設定値の桁を大きく取り違えた値です。
  • 誤り。1,999は,20ミリ秒ではなく2ミリ秒相当のクロック数から求めた値であり,1桁不足しています。
  • 正しい。1マイクロ秒周期のクロックを20,000回(0から数えて19,999まで)カウントすると20ミリ秒になるため,コンペアレジスタには19,999を設定します。
エンベデッドシステムスペシャリストの過去問を演習モードで解く