Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

Watchdog Timer (WDT) いまさら

何でいまさら Watchdog Timer かというと、昨日から PIC10F222 で遊んでて、なぜかWatchdog Timer をONにしてしまっていて、しかもそれに気づかずに、「おかしいなあ」って思ってたというバカをやらかしたからだ。

この際、自戒の意味を込めて PIC10F222 の Data Sheet の説明を見直しておこう。

そもそも、あそびでやってる分には Watchdog Timer を ON にして動作を監視させるような必要はまったく無い。
なので、その存在がほとんど念頭に無く、何かの拍子に ON にしてしまっても気づかないということになる。

wdt_imasara_01
WDTは他のシステムから独立していて、SLEEP中でも動いてますよ。
そうだろうね、番犬がご主人様と一緒に休んでたら意味ないから。
wdt_imasara_02
WDT をリセットするとTO bit がクリアされますよ。
configuration の WDTE を 0 にすることで使わない設定に出来ますよ。
これを間違えて設定しちゃってんだな、今回は。
そもそも使ったことが無いので、リセットの仕方とかまったく気にしたことも無かった。
wdt_imasara_03
時間間隔はプリスケーラで変更できて、基本的には18msから2.3sの間だけど、諸条件によって変わるから、数秒間必要な場合もあるよ。
OPTION register で設定できるよ。
wdt_imasara_04
ということは Timer0 と排他利用ということなのかな。
wdt_imasara_05
CLRWDT命令で WDT と Postscaler がクリアされるし、SLEEP命令でもリセットされるよ。

つまり、Watchdog Timer を使うなら、決められた間隔内で定期的にクリアする必要があり、それをしないとシステムに異常があったと判断されて Reset がかかるというわけ。
いや、そのこと自体は知ってたんだけど、使ったことも無かったので、この覚書きとなった。

PIC10F222 米粒PIC 関連記事一覧へ

このエントリーをはてなブックマークに追加

Posted under: PIC その他, PIC10F222


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.