動作環境
ESP-WROOM-02
wdt_disable() / wdt_enable()
watchdog resetがかかるESP8266の調査をしている中で、setup()内の処理時間が長くなる場合にwatchdogを無効にして処理をして、setupが終わったらwatchdogを有効にすればいい、という記載が以下で見つかった。
igrr commented on 2 Apr 2015
I meant something like this:
void setup() {
wdt_disable();
/// some initialization
ThirdPartyLibrary.begin();
/// more stuff
wdt_enable();
}
上記を実際にESP8266のコードに追加してみた。
wdt_enable()を引数なしでコンパイルすると以下のエラーが出る。
void wdtEnable(WDTO_t timeout_ms = WDTO_0MS);
^
exit status 1
コンパイル時にエラーが発生しました。
wdt_enable()は以下のように引数が必要だった。WDTO_8Sだと初期値の8秒にセットできる。
void setup() {
wdt_disable();
Serial.begin(115200);
Serial.println("");
// 時間のかかる処理
wdt_enable(WDTO_8S);
}
ESP.wdtDisable()とESP.wdtEnable(15000)
上記と同じリンク
https://github.com/esp8266/Arduino/issues/34
その下の方に以下の関数が示されている。
ESP.wdtDisable();
ESP.wdtEnable(15000);
wdt_enable()だと http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html に記載の通り設定時間の選択子が9通りしかない。
ESP.wdtEnable()だとmsec単位で指定でき、その制限がないのだろうか。