Seeeduino XIAO (ATSAMD21G18) のWDTライブラリ

ウォッチドッグ・ライブラリを作ってみた。

タイムアウト時間は8ms(1.024ms x 8)から16S(1.024ms x 16384)まで。begin()で指定したタイムアウト時間以内にreset()が呼び出されないとシステムリセットされる。逆に指定時間以内にreset()が呼び出されるとシステムリセットするウインドウ・モードもある。

GCLOCK_SRC_OSCULP32Kからのクロックなのでスリープ・モードでも動作し続ける。そのため早期警告割り込みを使うと定期的にウェイクアップする間欠処理型アプリケーションに応用できるとドキュメントには書かれている。この場合の設定は、windowとewoffsetに同じ時間を指定すると良い。逆に言うと待ち時間の不明なスリープモードに入る前には停止する必要があるということになる。

・ノーマル・モード

正常範囲<タイムアウト値(8ms-16S)

・ウインドウ・モード

ウインドウ値(8ms-16S)<正常範囲<ウインドウ値+タイムアウト値(16ms-32S)

PS.
本日、OSアップデートしたところ本ブログがバッサリと丸ごと消されてしまい焦ってしまった。普段何気にアップデートしていたがこういうこともあるんだと思うとやはりバックアップはこまめにとっておくべきだと痛感した今日この頃。もう、こんなことはないと祈るしか手段がないのが辛いが...って、鯖メーカーさん、アップデートで既存ディレクトリ丸ごと消すってはいくらなんでも酷すぎはしませんか?
ということで、このブログも昨年から事故続きでいつまで持つかわからないのでした...

【概要】

指定したタイムアウト時間(timeout)でウォッチドッグを開始する。ウインドウ・モード(window)や早期警告割り込み(ewoffset and cb)も設定可能。

ウォッチドッグを停止する。

ウォッチドッグを再スタートする。

【サンプルスケッチ】

【ライブラリ】

【参照ライブラリ】
Seeeduino XIAO (ATSAMD21G18) のGCLKライブラリ (gclock.h/gclock.cpp)

コメントを残す

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

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください