LoginSignup
2

More than 5 years have passed since last update.

ESP8266 > Link > watchdogのdisable / enable > wdt_disable() / wdt_enable(WDTO_8S)

Last updated at Posted at 2016-06-24
動作環境
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単位で指定でき、その制限がないのだろうか。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2