View on GitHub

Seeed K.K. Wiki

basic/watchdog

ウォッチドッグタイマでプログラムが暴走したり停止したときにCPUを再起動させる操作を示すスケッチです。

概要

プログラムが暴走したり停止すると、プログラム自体では対処のしようがありません。 しかし、なんらかの手段で復旧させたいときがあります。 このようなときには、ウォッチドックタイマという仕組みを使ってCPUを再起動するのが一般的です。 ウォッチドッグタイマはCPUとは別に動いているハードウェアで、CPUの暴走や停止の影響を受けません。 CPUから定期的にウォッチドッグタイマのリセットが無いとCPUを再起動させます。

このスケッチはウォッチドックタイマの操作を示しています。 ウォッチドッグタイマを10秒に設定しておき、USERボタンをクリックしたときにウォッチドッグタイマをリセットします。 つまり、CPUを動かし続けるには10秒待つことなく頻繁にUSERボタンのクリックしてください。

詳細

ウォッチドッグタイマの操作にAdafruit SleepyDog Libraryを使用します。 Adafruit_SleepyDog.hをインクルードするとWatchdogインスタンスが使えるようになります。

#include <Adafruit_SleepyDog.h>

そして、ウォッチドッグタイマのタイムアウト時間をWatchdog.enable()で設定します。 引数の単位はミリ秒です。

Watchdog.enable(10000);

以降、指定した時間以内にWatchdog.reset()を実行してください。 実行しないとCPUが再起動します。

Watchdog.reset();

参考リンク