第 6 章 ウォッチドッグタイマ(WDT)
6.2 ウォッチドッグタイマの制御
もし、何らかの原因で暴走またはデッドロック状態に陥り、2進カウンタのクリアが行われない場 合、2進カウンタのオーバフローでウォッチドッグタイマ出力がアクティブになります。このとき
WDTCR1<WDTOUT> =“1”
なら、リセット要求が発生しRESET
端子から“L
”レベルを出力すると ともに内蔵ハードウエアをリセットします。また、WDTCR1<WDTOUT> =“0” なら、ウォッチドッ グタイマ割り込み (INTWDT) を発生します。なお、STOPモード (ウォーミングアップ中を含む) または IDLE/SLEEPモード中ウォッチドッグタ イマは、一時的にカウントアップ停止し、
STOP/IDLE/SLEEP
モード解除後、自動的に再起動(
カウ ントアップ継続) します。注) ウォッチドッグタイマは内部デバイダと
2
段の2
進カウンタによって構成されており、クリアコード (4EH) を書き込んだ場合、2進カウンタはクリアされますが、内部デバイダはクリアされません。従って2
進カ ウンタのオーバフロー時間は、WDTCR2レジスタにクリアコード (4EH) を書き込むタイミングによっ て、最短でWDTCR1<WDTT>の設定時間の 3/4
となる場合がありますので、これより短い周期でクリアコ ードを書き込んでください。(プログラム例)ウォッチドッグタイマ検出時間を
2
21/fc [s]
に設定し、暴走検出リセットを行う。LD (WDTCR2), 4EH ; 2進カウンタのクリア
LD (WDTCR1), 00001101B ; WDTT←10, WDTOUT←1
WDT検出 時間3/4以内
LD (WDTCR2), 4EH ; 2進カウンタのクリア
: ; (WDTT変更直前直後は必ずクリアします)
:
LD (WDTCR2), 4EH ; 2進カウンタのクリア
WDT検出 時間3/4以内 :
LD (WDTCR2), 4EH ; 2進カウンタのクリア
ウォッチドッグタイマ制御レジスタ
WDTCR1 (0034H)
7 6 5 4 3 2 1 0
− − (ATAS) (ATOUT) WDTEN WDTT WDTOUT (初期値: **11 1001)
WDTEN ウォッチドッグタイマの
許可/禁止
0: 禁止 (WDTCR2にディセーブルコードを書き込む必要あり
1: 許可
Write only
WDTT
ウォッチドッグタイマ 検出時間の設定 単位: [s]
NORMAL1/2モード SLOW1/2
モード
Write only DV7CK = 0 DV7CK = 1
00 225/fc 217/fs 217/fs
01 223/fc 215/fs 215fs
10 221fc 213/fs 213fs
11 219/fc 211/fs 211/fs
WDTOUT ウォッチドッグタイマ
出力の選択
0: 割り込み要求 1: リセット要求
Write only
注
1) WDTOUT
を“0” にクリア後は、プログラムで“1” に再セットできません。注
2) fc; 高周波クロック[Hz] fs; 低周波クロック[Hz] *; Don’t care
注
3) WDTCR1
は書き込み専用レジスタですので、ビット操作などのリードモディファイライト命令ではアクセスできません。読み出すと不定値が読み込まれるためです。
注
4) STOP
モード起動時は、STOPモードに入る直前にウォッチドッグタイマを禁止するか、カウンタをクリアしてください。また、カウンタをクリアした場合、STOPモード解除直後に再度カウンタをクリアしてください。
注
5) WDTEN
を“1” から“0” に切り替える場合は、誤動作の原因となる場合がありますので「6.2.3 -- ウォッチドッグタイマ のディセーブル」に従ってレジスタを設定してください。TMP86FH47BUG
第6
章 ウォッチドッグタイマ(WDT)6.2
ウォッチドッグタイマの制御Page 54
ウォッチドッグタイマ制御レジスタ2
WDTCR2 (0035H)
7 6 5 4 3 2 1 0
(初期値: **** ****)
WDTCR2 ウォッチドッグタイマの
制御コード書き込み
4EH: ウォッチドッグタイマの2進カウンタのクリア (クリアコード)
Write B1H: ウォッチドッグタイマのディセーブル only
(ディセーブルコード) D2H アドレストラップ領域選択有効 その他 無効
注
1)
ディセーブルコードは、WDTCR1<WDTEN> =“0” のとき以外は書き込み無効です。注
2) *; Don’t care
注
3)
ウォッチドッグタイマの2
進カウンタのクリアは割り込みタスクで行わないでください。注
4)
クリアコード (4EH) はWDTCR1<WDTT>の設定時間の 3/4
以内に書き込んでください。6.2.2 ウォッチドッグタイマのイネーブル
ウォッチドッグタイマは、WDTCR1<WDTEN> を “1”にセットするとイネーブルになります。リ セット時、WDTCR1<WDTEN>は“1” に初期化されますので、リセット解除後は自動的にイネーブ ルになります。
6.2.3 ウォッチドッグタイマのディセーブル
ウォッチドッグタイマをディセーブルにするには、以下の順序でレジスタを設定してください。以 下の順序以外の方法でレジスタを設定すると、マイコンが誤動作する場合があります。
1.
割り込みマスタ許可フラグ(IMF)
を“0”
に設定します。2. WDTCR2
にクリアコード (4EH) を設定します。3. WDTCR1<WDTEN>
を“0”
に設定します。4. WDTCR2
にディセーブルコード (B1H) を設定します。注) ウォッチドッグタイマのディセーブル中は、ウォッチドッグタイマの
2
進カウンタはクリアされています。(プログラム例)ウォッチドッグタイマのディセーブル
DI ; IMF ← 0
LD (WDTCR2) , 04EH ; 2進カウンタのクリア
LDW (WDTCR1) , 0B101H ; WDTEN ← 0, WDTCR2 ← ディセーブルコード
表
6-1 ウォッチドッグタイマ検出時間(例: fc = 16.0 MHz, fs = 32.768 kHz
時)WDTT
ウォッチドッグタイマ検出時間[s]
NORMAL1/2モード
SLOWモード
DV7CK = 0 DV7CK = 1
00 2.097 4 4
01 524.288 m 1 1
10 131.072 m 250 m 250 m
11 32.768 m 62.5 m 62.5 m
6.2.4 ウォッチドッグタイマ割り込み (INTWDT)
WDTCR1<WDTOUT>
が“0
”のときに2
進カウンタがオーバフローすると、ウォッチドッグタイマ割り込み要求
(INTWDT)
が発生します。ウォッチドッグタイマ割り込みはノンマスカブル割り込みですので、割り込みマスタ許可フラグ
(IMF)
の設定に関係なくかならず割り込みは受け付けられます。また、他の割り込み (ウォッチドッグタイマ割り込みを含む) を受付け中にウォッチドッグタイマ 割り込みが発生した場合、先の割り込み処理は保留され、直ちにウォッチドッグタイマ割り込み処理 が実行されます。従って
RETN
命令が実行されないままウォッチドッグタイマ割り込みが連続して 発生すると、過重なネスティングによりマイコンが誤動作する場合があります。なお、ウォッチドッグタイマ割り込みを使用する場合は、
WDTCR1<WDTOUT>
を設定する前にス タックポインタを設定してください。(プログラム例)ウォッチドッグタイマ割り込みの設定例
LD SP, 023FH ; SPの設定
LD (WDTCR1) , 00001000B ; WDTOUT←0
6.2.5 ウォッチドッグタイマリセット
WDTCR1<WDTOUT>
が“1
”のときに2
進カウンタがオーバフローすると、ウォッチドッグタイマのリセット要求が発生します。ウォッチドッグタイマのリセット要求が発生すると、RESET端子 から“
L
”レベルを出力するとともに内蔵ハードウエアはリセットされます。リセット時間は、最大24/fc [s] (1.5μs @ fc = 16.0 MHz)
です。注)
SLOW1
モードでウォッチドッグタイマリセットが発生した場合、高周波クロックが発振を再開するためリセット時間は 最大で
24/fc (高周波クロック) となります。ただし、高周波クロックの発振開始時に発振
周波数にゆらぎがある場合は、リセット時間は誤差を含むことになり、概略値としてとらえてください。TMP86FH47BUG
第6
章 ウォッチドッグタイマ(WDT)6.2
ウォッチドッグタイマの制御Page 56
2 1 219/fc [s]
217/fc
2 3 0
3 0
1
INTWDT
(WDTCR1<WDTOUT>="0")
(WDTCR1<WDTOUT>="1")
2
WDT (High-Z)
(WDTT = "11" )
WDTCR2 4EH