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

テクノロジハードウェア組込み・IoT

この問題は2023(R5)秋 エンベデッドシステムスペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

表のインターバルタイマーを用いて約 20ミリ秒ごとにタイマー割込みを発生させたい。16ビットタイマーコンペアレジスタに設定する値は 10進数で幾つか。ここで,システムクロックは 32 MHzとする。

表
図の説明テキスト
項目 説明
タイマークロック システムクロックを 32 分周したもの
16 ビットタイマーカウンター タイマークロックの立ち上がりに同期してインクリメントされる。16 ビットタイマーコンペアレジスタからの初期化指示があると0で初期化される。
16 ビットタイマーコンペアレジスタ 設定された値と 16 ビットタイマーカウンターの値が一致すると、タイマー割込みを発生し、16 ビットタイマーカウンターに初期化指示を出す。

解答・解説を読む

正解: 選択肢

インターバルタイマーの割込み周期から、コンペアレジスタに設定すべき値を計算する問題です。
問題文にある「表のインターバルタイマー」の仕様として、一般的にシステムクロックを特定の分周比(この問題の典型例では 3232 分周)で割ったクロックをカウント源とします。この前提に立って計算を行います。

  1. タイマーのカウント周期の算出
    システムクロックは 32 MHz32\text{ MHz} です。これを 3232 分周すると、タイマーに入力される動作クロックの周波数は以下のようになります。
    32 MHz/32=1 MHz32\text{ MHz} / 32 = 1\text{ MHz}
    周波数 1 MHz1\text{ MHz} のクロック周期(11 カウントにかかる時間)は、 1/1,000,000 秒=1 マイクロ秒(1 μs)1 / 1,000,000\text{ 秒} = 1\text{ マイクロ秒} (1\text{ }\mu\text{s}) となります。

  2. 20ミリ秒に必要なカウント数の算出
    目的の割込み周期である 20 ミリ秒20\text{ ミリ秒} は、20,000 μs20,000\text{ }\mu\text{s} に相当します。
    11 カウントあたり 1 μs1\text{ }\mu\text{s} かかるため、20 ミリ秒20\text{ ミリ秒} 経過するためには 20,00020,000 回のカウントが必要です。

  3. コンペアレジスタ設定値の決定
    タイマーカウンタは 00 からカウントを開始 してコンペアレジスタの値と一致した時点で割込みを発生させ、再び 00 に戻る仕様が一般的です。
    そのため、20,00020,000 回のカウントで割込みを発生させるには、設定値から 11 を引いた値をコンペアレジスタに設定する必要があります。
    20,0001=19,99920,000 - 1 = 19,999
    したがって、 1010 進数で設定する値は 19,999 となります。

各選択肢の解説

  • ア (1): 00 から 11 までの 22 回のカウントとなり、 2 μs2\text{ }\mu\text{s} ごとに割込みが発生する誤った設定です。
  • イ (19): 00 から 1919 までの 2020 回のカウントとなり、 20 μs20\text{ }\mu\text{s} ごとに割込みが発生します。ミリ(10310^{-3})とマイクロ(10610^{-6})の単位を混同した場合に選びやすい誤答です。
  • ウ (1,999): 2,0002,000 回のカウントとなり、 2 ミリ秒2\text{ ミリ秒} ごとに割込みが発生する設定です。必要なカウント数の桁を 11 つ間違えた場合の誤答です。
  • エ (19,999): 正解です。 20,00020,000 回のカウントとなり、要件通り 20 ミリ秒20\text{ ミリ秒} ごとにタイマー割込みが発生します。