クラス WDT -- ウォッチドッグタイマー
アプリケーションがクラッシュして回復不可能な状態になった場合、WDT を使ってシステムを再起動します。一度起動すると、停止したり再設定したりはできません。有効にした後、アプリケーションはウォッチドッグが期限切れになりシステムがリセットされるのを防ぐために、定期的にウォッチドッグに「フィード」する必要があります。
使用例:
from machine import WDT
wdt = WDT(timeout=2000) # タイムアウト 2s で有効化
wdt.feed()
対応ポート: Alif, ESP32, ESP8266, MIMXRT, RP2, SAMD, STM32, Zephyr
コンストラクタ
- class machine.WDT(id=0, timeout=5000)
WDT オブジェクトを作成して起動します。タイムアウトはミリ秒単位で指定します。一度実行するとタイムアウトを変更することはできず、WDT の停止もできません。
注記
alif ポートでは、HP コアと HE コアはそれぞれ独立したウォッチドッグを備えており、どちらもデフォルトの ID=0 でアクセスできます。HP コアの最大タイムアウトは 10737ms です。ウォッチドッグはディープスリープ中は動作しません。
esp8266 ポートではタイムアウト値が指定できす、基盤システムによって決定されます。
rp2040 デバイスでは最大タイムアウト値が 8388ms になっています。
stm 32ポートでは、デフォルトの
id=0が IWDG であり、idを"IWDG"とも指定できます。WWDG ペリフェラルにアクセスするには、idを"WWDG"とします。デュアルコア STM32H7 MCU の場合、"IWDG2"と"WWDG2"も存在します。WWDGの最大タイムアウトは、すべての MCU で約100msと非常に制限されています(ただし、APBクロックに大きく依存します)。
メソッド
- WDT.feed()
システムがリセットされないようにWDTをフィードします。アプリケーションは、この呼出しを適切な場所に配置して、すべてが正しく機能していることを確認した後に WDT にのみフィードが供給されるようにする必要があります。