ウォッチドッグタイマ

【ウォッチドッグタイマとは】

  ウォッチドッグはその名前の通り「番犬」でコンピュータが正常かどうか
を常に監視するためのタイマです。
このタイマの特徴は、タイマがタイムアップするとハードウェアにリセットが
かかるということで。リセットがかかると当然コンピュータは初期状態からの
スタートになり再スタートすることになります。

これを図で説明すると下図の様になります。
 まず例1は単純にウォッチドッグタイマをスタートさせただけの時です。
このときには指定した時間(To)が経つとウォッチドッグタイマがタイムアップ
しコンピュータにリセット信号が出力され再スタートします。
   



 実際のこのタイマの使い方は上図例2のように、タイマを最初スタートさせ
たら、あとは常に一定時間以内に(タイマがタイムアップする前に)タイマを
CLRWDT命令でクリアしてタイマのカウントを再スタートさせます。
これが続いている限りはタイマがタイムアップすることが無いので、リセットが
かかることは有りません。
しかし、例3の様に、万一プログラムが異常になり、停止したり、どこかで永久
ループしたりすると、このタイマクリアが出せなくなるためウォッチドッグタイ
マがタイムアップしてしまいます。
そうするとリセットがかかるためコンピュータは初期スタートから再開する
ことになり正常に戻すことができることになります。

このように、ウォッチドッグタイマはコンピュータのプログラムの異常を常に
監視しており、万一異常になったときには、初期スタートから再開させて
正常状態に戻す働きをします。


【WDTの構成】

 ウォッチドッグタイマ(WDT)の内部構成は下図のようになっており、プリ
スケーラをタイマ0と共用しているため、プリスケーラはどちらか片方にしか
使えません。
またウォッチドッグタイマそのものは、内部の専用RC発振回路で動作しており、
SLEEP状態でもカウントし続けています。その速さは、ウォッチドッグタイマ単体で
プリスケーラ無しの場合には、標準で約18msecでタイムアウトするようになって
います。しかもこの時間は周囲温度にかなり影響されるため、実際の使用に際し
てはこの半分くらいの時間と考えて余裕をみておく必要があります。
そうすると、ほぼ10msec周期でCLRWDT命令を実行しないと、ウォッチドッグタイマ
がタイムアウトしてしまうことになり、この速さでCLRWDT命令を実行するのは現実
的には難しいということです。
結局、ウォッチドッグタイマを使う時には、プリスケーラを一緒につかうことが必須と
なってしまいますので、タイマ0用にプリスケーラを使うことが出来ないので、全体の
設計をする時に注意する必要があります。
プリスケーラを使って最大のウォッチドッグタイマの時間は18msec×128=約2.3秒
ということになり、最大2.3秒周期でウォッチドッグをリセットする必要があります。
 




       目次へ