クロック分周比とタイマーコンペアレジスタ設定値の計算

インターバルタイマーの割込み周期からレジスタ設定値を計算します。 1. タイマークロック周波数・周期の算出 : システムクロックが $32\,\text{MHz} = 32 \times 10^6\,\text{Hz}$ であり、これを 32 分周するため: $$\text{タイマークロック周波数} = \frac{32 \times 10^6}{32} = 1 \times 10^6\,\text{Hz} = 1\,\text{MHz}$$ タイマークロックの1周期は: $$T_{\text{timer}} = \frac{1}{1 \times 10^6} = 1\,\mu\text{s} = 10^{-6}\,\text{秒}$$ 2. 割込み周期に必要なカウント数の算出 : 目標とする割込み間隔は $20\,\text{ミリ秒} = 20 \times 10^{-3}\,\text{秒} = 20,000\,\mu\text{s}$ です。 したがって、必要なクロックカウント数 $N$ は: $$N = \frac{20,000\,\mu\text{s}}{1\,\mu\text{s}} = 20,000\,\text{カウント}$$ 3. コンペアレジスタ設定値の決定 : カウンターは 0 からスタートして毎クロック1ずつインクリメントされます。コンペアレジスタの値と一致した瞬間に初期化され、 0 から再スタートします。 0から始まって $N=20,000$ 回目のクロックパルスで一致して初期化されるための設定値 $C$ は: $$C = 20,000 - 1 = 19,999$$ (カウンターが 0, 1, 2, ..., 19999 と遷移して計 20,000 ステップで割込み発生) したがって、設定する値は 19,999 であり、正解は エ です。 ア: 極めて微小な値であり、ミリ秒単位のインターバルタイマーにはなりません。 イ: 20マイクロ秒に相当するカウント値であり、単位の接頭語を取り違えた誤算です。 ウ: 2ミリ秒間隔(1桁小さい時間)を生成する場合の設定値です。

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

問題画像
出典令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問11
ア
1
イ
19
ウ
1,999
エ
19,999