ESP8266 Różnica między ESP.restart() a ESP.reset()

Jaka jest różnica między reset a restart zostało opisane w jednym z linków w źródłach.
Poniżej opis jak zadziałało to u mnie.

ESP.reset() is a hard reset and can leave some of the registers in the old state which can lead to problems, its more or less like the reset button on the PC.

ESP.restart() tells the SDK to reboot, so its a more clean reboot, use this one if possible.

the boot mode:(1,7) problem is known and only happens at the first restart after serial flashing.
if you do one manual reboot by power or RST pin all will work more info see: #1017

Kod źródłowy:

int cnt=10;
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
 
  Serial.println(cnt);
 
  if(cnt==0){
    Serial.println("Reset..");
    ESP.restart();
  }
 
  cnt--;
  delay(1000);
}

Jak podano w opisie po pierwszym wgraniu oprogramowania przez seial urządzenie zrestartuje się ale wyświetlona zostanie informacja o wdt reset a urządzenie nie uruchomi się ponownie (nie nastąpił restart). Aby to naprawić wystarczy tylko raz ręcznie zresetować urządzenie (klikamy raz button) i po ręcznym restarcie urządzenie będzie się już restartowało bez problemów.
W moim przypadku po pierwszym resecie okazało się, że urządzenie wstaje w boot mode:(1,6) zamiast jak w podawanym boot mode:(1,7).
Po ręcznym zrestartowaniu urządzenia ESP8266 zaczął restartować się tak jak zaplanowano (co 10 sekund).

Wemos d1 mini: Logi z monitora dotyczące softwarowego restartu urządzenia.

Źródła:

https://github.com/esp8266/Arduino/issues/1722
https://www.pieterverhees.nl/sparklesagarbage/esp8266/130-difference-between-esp-reset-and-esp-restart

Leave a Reply

Your email address will not be published. Required fields are marked *