戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

エンベデッドシステムスペシャリスト 2023年 午前2 問11


問題文

表のインターバルタイマーを用いて約20ミリ秒ごとにタイマー割込みを発生させたい。16ビットタイマーコンペアレジスタに設定する値は10進数で幾つか。ここで、システムクロックは32MHzとする。
エンベデッドシステムスペシャリスト 2023年 午前2 問11の問題画像

選択肢

ア:1
イ:19
ウ:1,999
エ:19,999(正解)

🔒 解説は解答すると表示されます

タイマー割込み周期の設定【午前2解説】

正解の理由

タイマークロックは、システムクロックを32分周したものです。
タイマーカウンターは1 MHzで動作するため、1カウントにかかる時間は次のとおりです。
約20ミリ秒は20,000マイクロ秒なので、必要なカウント数は20,000です。カウンターは0から数えるため、設定値は「20,000 − 1」の19,999になります。したがって、エが正解です。

解法ステップ

  1. システムクロックを分周し、タイマークロックを求めます。
  2. タイマークロックの周期を求めます。
  3. 20ミリ秒をマイクロ秒に換算します。
  4. カウンターが0から数えることを考慮し、比較レジスタの値を求めます。

選択肢別の誤答解説

選択肢設定値誤りの理由
ア1タイマークロックの周期や目標時間を反映した値ではありません。
イ19目標の20ミリ秒に対して、カウント数が大幅に不足します。
ウ1,9991マイクロ秒を1カウントとすると、約2ミリ秒に相当します。
エ19,9990から数えて20,000カウントとなり、約20ミリ秒になります。

よくある誤解

  • システムクロックをそのままタイマーの動作周波数として計算する
    タイマークロックは32分周後の1 MHzです。システムクロックの32 MHzを使うと、周期を誤って計算してしまいます。
  • カウント数と比較レジスタの設定値を同じにする
    0から数えるため、20,000カウントにする設定値は19,999です。
  • ミリ秒とマイクロ秒の換算を誤る
    1ミリ秒は1,000マイクロ秒です。20ミリ秒は20,000マイクロ秒です。

補足コラム

16ビットのタイマーカウンターで表せる値は、0〜65,535です。今回必要な設定値19,999はこの範囲内なので、16ビットで問題なく設定できます。

FAQ

なぜ設定値を20,000ではなく19,999にするのですか?
カウンターが0から始まり、0もカウントに含めて20,000回分の時間を作るためです。数える値は0〜19,999の20,000個になります。
タイマークロックが1 MHzだと、1カウントは何秒ですか?
1マイクロ秒です。周波数が1秒間に1,000,000回なので、1回分の周期はその逆数です。

関連キーワード: タイマークロック、分周、タイマーカウンター、比較レジスタ、タイマー割込み
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について