ウォッチドッグタイマ


【ウォッチドッグタイマ】(Watch Dog Timer)

ウォッチドッグタイマ(WDT)は、プログラムの正常な実行状態を監視するための
タイマです。
ウォッチドッグタイマは常時一定間隔でカウントアップしており、一定時間後に
フルカウントに達するとリセット信号を発生してプログラムを0番地から再起動します。

このカウントアップ中に、命令でウォッチドッグタイマをクリアすると、タイマは最初
からカウントアップを再開します。
従って、一定時間以内にこのクリア命令を実行し続ければ、ウォッチドッグタイマは
カウントアップしないことになり、リセットも発生しません。

そこでプログラムが正常に実行中は、一定時間以内にクリア命令を実行するように
しておけば、もし、プログラム実行が異常になった場合には、このクリア命令が実行
されないため、リセットがかかり0番地からプログラムを再開させることが可能になり
ます。 これが「番犬」と呼ばれる所以です。

【WDTの構成】

ウォッチドッグタイマの内部回路構成は、下図のようになっています。

まず、ウォッチドッグタイマ自身は、図中のWDT Counterです。これのクロック入力は、
内部RC発振クロックであるINTRC(31kHz)となっています。従ってこれを125カウント
するので、そのままの状態では、約4msecでWDT Counterがカウントアップします。

このカウントアップの許可を、WDTENとSWDTENの2つのコンフィギュレーションビット
で行っています。

タイムアップが4msecでは余りにも短い時間なので、これにポストスケーラが追加されて
いて、最大32768倍の長さの時間にすることができます。
従ってWDT Resetの信号は、4msecから4msec×32768=131秒まで延ばせることに
なります。

このWDTカウンタは「CLRWDT」命令とRESET信号でリセットされ、0からカウントを再開
します。
さらに「SLEEP」命令でSLEEP中はリセットではなくWakeUp信号となります。

WDTの時間の精度は、内部RC発振のINTRCの精度に依存しています。このINTRCの
発振周波数精度は、工場出荷時に±1%に調整されていますが、OSCTUNEレジスタ
の値を変更することで、周波数を変更することも可能です。



【WDTの設定】

上記の動作モードを設定するためには、WDTCONレジスタとCONFIG2Hレジスタを
使います。

(1) WDTCONレジスタ
  PIC18Fxxxxシリーズで新たに追加された機能で、ソフトウェアでウォッチドッグ
  タイマの使う/使わないを制御できるようになりました。そのための制御レジスタ
  がWDTCONレジスタで、内容は下図のようになっています。




(2) CONFIG2Hレジスタ
  コンフィギュレーション時に、WDTの使用と時間を設定するためのレジスタです。
  内容は下図のようになっています。
  時間は4msec×ポストスケーラ値 となります。
  






   目次ページへ