Previous: 11.1.1. アクセス可否の設定 |
Up: 11.1. 無限ループの例(値のチェック漏れ) |
Next: 11.1.3. カウント数の設定 |
次に独立型ウォッチドッグのカウント速度を設定します。独立型ウォッチドッグはLSIで動作しているのですが、LSI自体のクロック速度は固定されています(40KHz)。そこでカウント速度の調整は、プリスケーラの分周比を調整することによって行います。分周比は4分周から256分周まで設定可能です。
独立型ウォッチドッグの再ロードレジスタに設定できる値の範囲は0x0から0xFFF(4096)までです。
LSIクロックの周波数が40KHzとすると、独立型ウォッチドッグのカウンタアンダーフローが発生するまでの時間は、プリスケーラの分周比と再ロードレジスタの値によって、表 17?1の通りとなります。
表 17?1 LSIクロックの分周比に応じた設定可能時間
分周比 |
最小時間(0x0) |
最大時間(0xFFF) |
4 |
0.1ms |
409.6ms |
8 |
0.2ms |
819.2ms |
16 |
0.4ms |
1,638.4ms |
32 |
0.8ms |
3,276.8ms |
64 |
1.6ms |
6,553.6ms |
128 |
3.2ms |
13,107.2ms |
256 |
6.4ms |
26,214.4ms |
分周比を小さくするとアンダーフローまでの時間を細かく設定できますが、カウントできる最大時間が短くなってしまうことがわかるかと思います。
なおLSIクロックは動作条件(温度等)や個体差によって30KHzから60KHzまでの誤差が発生しますので、独立型ウォッチドッグの作動は想定した時間の倍くらいかかることがあると考えておいた方がよいでしょう。
独立型ウォッチドッグのプリスケーラを設定するためには、IWDG_SetPrescaler関数(ライブラリ 17?2)を使用します。
ライブラリ 17?2 IWDG_SetPrescaler関数
関数プロトタイプ |
void (uint8_t IWDG_Prescaler) |
|
動作 |
独立型ウォッチドッグの分周比を設定します。 |
|
引数 |
IWDG_Prescaler |
分周比をいずれかのマクロ(ライブラリ 17?3)で指定します |
戻り値 |
無し |
ライブラリ 17?3 IWDG_Prescalerに指定するマクロ
IWDG_Prescaler_4 |
4分周 |
IWDG_Prescaler_8 |
8分周 |
IWDG_Prescaler_16 |
16分周 |
IWDG_Prescaler_32 |
32分周 |
IWDG_Prescaler_64 |
64分周 |
IWDG_Prescaler_128 |
128分周 |
IWDG_Prescaler_256 |
256分周 |
Previous: 11.1.1. アクセス可否の設定 |
Up: 11.1. 無限ループの例(値のチェック漏れ) |
Next: 11.1.3. カウント数の設定 |