平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問15
テクノロジ/ハードウェア表のインターバルタイマを用いて約 20 ミリ秒ごとにタイマ割込みを発生させたいとき,16 ビットタイマコンペアレジスタに設定する値は 10 進数で幾つか。ここで,システムクロックは 32 MHz とする。(タイマクロック:システムクロックを 32 分周したもの。16 ビットタイマカウンタ:タイマクロックの立ち上がりに同期してインクリメントされる。16 ビットタイマコンペアレジスタからの初期化指示があると 0 で初期化される。16 ビットタイマコンペアレジスタ:設定された値と 16 ビットタイマカウンタの値が一致すると,タイマ割込みを発生し,16 ビットタイマカウンタに初期化指示を出す。) (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問15
- ア1
- イ19
- ウ1,999
- エ19,999
正解:エ
解説
システムクロック 32 MHz を 32 分周したタイマクロックの周波数は 1 MHz,すなわち 1 周期は 1 マイクロ秒です。16 ビットタイマカウンタは,タイマクロックに同期して 0 から 1 ずつインクリメントされ,設定値と一致するとタイマ割込みが発生して 0 に初期化されます。約 20 ミリ秒(=20,000 マイクロ秒)ごとに割込みを発生させるには,カウンタが 0 から数えて 20,000 個目のクロックで一致する必要があるので,一致検出の対象となる設定値(コンペアレジスタの値)は,0 から数え始めることを考慮して 20,000-1=19,999 にする必要があります。
選択肢ごとの解説
- ア誤り。1 は,タイマクロック 1 周期(1 マイクロ秒)に相当する値であり,約 20 ミリ秒という要求される周期には遠く及びません。
- イ誤り。19 は,桁を大きく見誤った値であり,1 マイクロ秒単位で数える 20,000 カウント相当の値とは大きく異なります。
- ウ誤り。1,999 は,20 ミリ秒ではなく 2 ミリ秒相当のカウント数から 1 を引いた値であり,桁(一桁分)を取り違えています。
- エ正しい。1 マイクロ秒ごとにインクリメントされるカウンタが 0 から数えて 20,000 マイクロ秒(20 ミリ秒)で一致するようにするには,0 から数え始めることを考慮してコンペアレジスタに 19,999 を設定する必要があります。