第 5 章 ウォッチドッグタイマ(WDT)
5.3 機能
ウォッチドッグタイマは
8
ビットアップカウンタのオーバーフロー検出、8
ビットアップカウンタクリ アの禁止時間でのクリア動作検出により、CPU
の暴走、デッドロックを検出することができます。また、
8
ビットアップカウンタのカウント値を不定期に読み出し、前回の読み出し値と比較すること で、ウォッチドッグタイマの停止などの異常を検出することができます。5.3.1 ウォッチドッグタイマ動作の許可/禁止の設定
WDCTR<WDTEN>を"1"にセットするとウォッチドッグタイマの動作が許可され、8
ビットアップカウンタはソースクロックのカウントを始めます。
WDCTR<WDTEN>はリセット後のウォーミングアップ動作解除後に"1"に初期化されるため、ウォ
ッチドッグタイマは許可されています。ウォッチドッグタイマ動作を禁止するには
WDCTR<WDTEN>を"0"にクリアした後に WDCDR
に0xB1
を書き込みます。ウォッチドッグタイマ動作を禁止すると8
ビットアップカウンタは"0"
にクリ アされます。注)
8
ビットアップカウンタのオーバーフローとWDCTR<WDTEN>が"1"のときの WDCDR
への0xB1 (Disable
コード)の書き込みタイミングが重なった場合、ウォッチドッグタイマ動作の禁止が優先され、オーバーフ ロー検出は行われません。再度、ウォッチドッグタイマの動作を許可するためには
WDCTR<WDTEN>を"1"にセットします。
WDCDR
への制御コード書き込みは必要ありません。8ࡆ࠶࠻ࠕ࠶ࡊࠞ࠙ࡦ࠲୯
࠙ࠜ࠶࠴࠼࠶ࠢ࠲ࠗࡑߩ
࠰ࠬࠢࡠ࠶ࠢ
WDCTR<WDTEN>
0x00 0x01 0xFF
WDCTR<WDTEN>
ഀࠅㄟߺⷐ᳞ାภ
0x00
ࠝࡃࡈࡠᤨ㑆
ࠝࡃࡈࡠᤨ㑆
1ࠢࡠ࠶ࠢ(Max.)
図 5-2 WDCTR<WDTEN>のセットタイミングとオーバーフロー時間
注)
8
ビットアップカウンタのソースクロックはWDCTR<WDTEN>と非同期に動作しています。そのため、
WDCTR<WDTEN>を"1"にした後の最初の 8
ビットアップカウンタのオーバーフロー時間は最大1
ソース クロック分短くなることがあります。8ビットアップカウンタのクリア動作はオーバーフロー時間-1ソー スクロック周期以内に行うようにしてください。5.3.2 8 ビットアップカウンタのクリア時間の設定
WDCTR<WDTW>で 8
ビットアップカウンタのクリア時間を設定します。WDCTR<WDTW>が"00"のとき、クリア時間は 8
ビットアップカウンタのオーバーフロー時間と同じとなり、いつでも
8
ビットアップカウンタのクリア動作を行えます。WDCTR<WDTW>
が"00"
以外のとき、クリア時間は8
ビットアップカウンタのオーバーフロー時間 の決まった時間のみとなり、クリア時間外で8
ビットアップカウンタのクリア動作を行うと、ウォッ チドッグタイマ割り込み要求信号が発生します。TMP89CM46
5.3
機能このとき、ウォッチドッグタイマはクリアされずカウントを継続します。クリア時間中で
8
ビット アップカウンタをクリアしないとWDCTR<WDTOUT>の設定に応じて、オーバーフローによるウォ
ッチドッグタイマリセット要求信号またはウォッチドッグタイマ割り込み要求信号が発生します。WDCTR<WDTW>=̍00̍ߩߣ߈ 8ࡆ࠶࠻ࠕ࠶ࡊࠞ࠙ࡦ࠲୯
WDCTR<WDTW>=̍01̍ߩߣ߈
WDCTR<WDTW>=̍10̍ߩߣ߈
WDCTR<WDTW>=̍11̍ߩߣ߈
0x00 0x01 0x3F 0x40 0x7F 0x80 0xBF 0xC0 0xFF 0x00
0xFF
ࠢࠕᤨ㑆
ࠢࠕᤨ㑆
ࠢࠕᤨ㑆ᄖ
ࠢࠕᤨ㑆
ࠢࠕᤨ㑆ᄖ
ࠢࠕᤨ㑆
ࠢࠕᤨ㑆ᄖ
図 5-3 WDCTR<WDTW>と 8 ビットアップカウンタのクリア時間
Page 77
5.3.3 8 ビットアップカウンタのオーバーフロー時間の設定
WDCTR<WDTT>で 8
ビットアップカウンタのオーバーフロー時間を設定します。8
ビットアップカウンタがオーバーフローするとWDCTR<WDTOUT>
の設定に応じて、ウォッチ ドッグタイマリセット要求信号またはウォッチドッグタイマ割り込み要求信号が発生します。暴走検出信号としてウォッチドッグタイマ割り込み要求信号が選択されていると、オーバーフロー 発生後もウォッチドッグカウンタのカウント動作は継続します。
なお、STOPモード (ウォーミングアップ中を含む) または IDLE/SLEEPモード中、ウォッチドッグ タイマは、一時的にカウントアップ停止し、
STOP/IDLE/SLEEP
モード解除後、カウントアップを再 開します。STOP/IDLE/SLEEP
モード解除直後に8
ビットアップカウンタのオーバーフローが発生し ないように、動作モード遷移前に8
ビットアップカウンタをクリアすることを推奨します。表
5-1
ウォッチドッグタイマオーバーフロー時間(fcgck = 10.0 MHz, fs = 32.768 kHz
時)
WDTT
ウォッチドッグタイマオーバーフロー時間 [s]
NORMALモード SLOW
DV9CK = 0 DV9CK = 1 モード
00 26.21 m 62.50 m 62.50 m
01 104.86 m 250.00 m 250.00 m
10 419.43 m 1.000 1.000
11 1.678 4.000 4.000
注)
8
ビットアップカウンタのソースクロックはWDCTR<WDTEN>と非同期に動作しています。そのため、
WDCTR<WDTEN>を"1"にした後の最初の 8
ビットアップカウンタのオーバーフロー時間は最大1
ソース クロック分短くなることがあります。8ビットアップカウンタのクリア動作はオーバーフロー時間-1ソー スクロック周期以内に行うようにしてください。5.3.4 8 ビットアップカウンタのオーバーフロー検出信号の設定
WDCTR<WDTOUT>
で8
ビットアップカウンタのオーバーフローが検出されたときの検出信号を設定します。
1.
ウォッチドッグタイマ割り込み要求信号選択の場合(WDCTR<WDTOUT>="0"
のとき) WDCTR<WDTOUT>
を"0"
にクリアすると8
ビットアップカウンタがオーバーフローした とき、ウォッチドッグタイマ割り込み要求信号が発生します。ウォッチドッグタイマ割り込みはノンマスカブル割り込みですので、割り込みマスタ許可
フラグ
(IMF)
の設定に関係なく、必ず割り込み要求が受け付けられます。注) 他の割り込み (ウォッチドッグタイマ割り込みを含む) を受付け中にウォッチドッグタイマ割り込みが発生した場 合、先の割り込み処理は保留され、直ちにウォッチドッグタイマ割り込み処理が実行されます。従って
RETN
命令 が実行されないままウォッチドッグタイマ割り込みが連続して発生すると、過重なネスティングによりマイコンが 誤動作する場合があります。2.
ウォッチドッグタイマリセット要求信号選択の場合(WDCTR<WDTOUT>="1"のとき)WDCTR<WDTOUT>
を"1"
にセットすると8
ビットアップカウンタがオーバーフローした とき、ウォッチドッグタイマリセット要求信号が発生します。このウォッチドッグタイマリセット要求信号により、
TMP89CM46
はリセットされ、ウォ ーミングアップ動作を開始します。5.3.5 ウォッチドッグタイマの制御コードの書き込み
TMP89CM46
5.3
機能WDCDR
に0x4E (Clear
コード)を書き込むと、8ビットアップカウンタは"0"にクリアされ、ソース クロックのカウントを続けます。WDCTR<WDTEN>が"0"の状態で、WDCDR
に0xB1 (Disable
コード)を書き込むと、ウォッチドッ グタイマの動作が禁止されます。8
ビットアップカウンタのオーバーフロー時間未満の間隔で、かつクリア時間内に8
ビットアップ カウンタをクリアすることで、8
ビットアップカウンタのオーバーフローが発生しなくなります。あらかじめプログラムをオーバーフローが発生しないように設計しておくことで、ウォッチドッグ タイマ割り込み要求信号による割り込み発生でプログラムの暴走、デッドロックの検出を行うことが できます。
また、ウォッチドッグタイマリセット要求信号によりマイコンにリセットをかけることで暴走、デ ッドロック状態から回復することができます。
(プログラム例) WDCTR<WDTEN>が"0"のとき、ウォッチドッグタイマ検出時間を220/fcgck [s] 、カウンタクリア時間をオーバーフロー時間 の半分に設定し、暴走検出時にウォッチドッグタイマリセット要求信号発生を行う。
LD (WDCTR), 0y00110011 ;WDTW←10 , WDTT←01, WDTOUT←1 8ビットアップカウンタのオーバーフロー
時間の半分を超え、オーバーフロー時間-ソースクロックの1周期分以内に8ビット アップカウンタをクリア
:
:
:
LD (WDCDR), 0x4E ;8ビットアップカウンタのクリア
8ビットアップカウンタのオーバーフロー 時間の半分を超え、オーバーフロー時間-ソースクロックの1周期分以内に8ビット アップカウンタをクリア
:
:
:
LD (WDCDR), 0x4E ;8ビットアップカウンタのクリア
注)
8
ビットアップカウンタのオーバーフローとWDCDR
への0x4E (Clear
コード)の書き込みタイミングが重 なった場合、8ビットアップカウンタのクリアが優先され、オーバーフロー検出は行われません。5.3.6 8 ビットアップカウンタの読み出し
WDCNT
を読み出すことで、8ビットアップカウンタのカウンタ値を読み出すことができます。WDCNT
を不定期に読み出し、前回の読み出し値と比較することで、8ビットアップカウンタの停止を検出することができます。
5.3.7 ウォッチドッグタイマのステータスの読み出し
WDST
によりウォッチドッグタイマのステータスを読み出すことができます。WDST<WDTST>
はウォッチドッグタイマの動作が許可されていると"1"
にセットされ、禁止されていると"0"にクリアされます。
WDST<WINTST2>は 8
ビットアップカウンタのオーバーフローによるウォッチドッグタイマ割り込み要求信号が発生したときに"1"にセットされます。
WDST<WINTST1>
は8
ビットアップカウンタのクリア動作がクリア時間外で行われたことによるウォッチドッグタイマ割り込み要求信号発生で
"1"
にセットされます。ウォッチドッグタイマの割り込みサービスルーチン内で
WDST<WINTST2>
、WDST<WINTST1>
を 読み出すことでウォッチドッグタイマ割り込み要求信号が発生した要因を知ることができます。WDST<WINTST2>、WDST<WINTST1>ともに WDST
を読み出すことで"0"にクリアされます。ま た、WDSTの読み出しとWDST<WINTST2>、WDST<WINTST1>の成立タイミングが重なったとき、
クリア動作よりも成立動作が優先され