トップページ > dsPIC入門 > コンフィグレーションについて(2)

ウォッチドッグ・タイマーの設定

ウォッチドッグタイマの有効/無効

ウォッチドッグタイマは,システムが暴走した場合を想定して, ある時間が経過した時に自動リセットをかけるために使用します.

動作のイメージは,単なるカウンタと変わりません. ウォッチドッグタイマは,クロックパルス(クロックを分周して入れることもできます)が印加されるたびに +1されるカウンタです. このカウンタの値がいっぱいになった時に,マイコン全体へのリセット信号が発生します.

よって,プログラムの中で何もしないと, このウォッチドッグタイマから来るリセット信号で,システムがリセットされてしまいます. そこで,プログラム(メイン・ループ内)のどこか一か所で, ウォッチドッグタイマをリセットする操作を記述します. こうしておくと,正常にプログラムが走っている場合は, ウォッチドッグタイマからリセット信号が発生することはありません. しかし,何らかの原因でプログラムが走っていない場合は, ウォッチドッグタイマがリセットされることはないので, ある時間が経過した時点でリセットがかかることになります.

この「ある時間」というのは, 自分が書いたプログラムがどのくらいの処理時間がかかるか計算しておいて, それより十分に長い時間をウォッチドッグタイマ側で設定します. 「設定」とは言っても,クロックの分周を調節する程度なので,かなりおおざっぱなイメージです. また,リセットが発生するまでの時間が長すぎると意味がないので, そのシステムがどのくらいシビアなのか考慮して,適切な時間を設定します...

以下にパラメーターとして使用されるマクロを列挙します。

プリススケーラAの設定

内部クロックを分周してウォッチドッグタイマのインクリメント・タイミングを作るようですが…。
以下にパラメーターとして使用されるマクロを列挙します。

プリスケーラBの設定

以上をふまえた設定例

ウォッチドッグタイマは使わない場合,

_FWDT(WDT_OFF);

…のように記述します。




前へ   次へ