esp8266 вылетает с ошибкой

dunkel
Offline
Зарегистрирован: 28.03.2017

esp8266 Wemos D1 mini, Arduino IDE 1.8.5, ESP8266 core for Arduino 2.4.1

Скетч:

[code]
void setup() {
  Serial.begin(9600);
}
void loop() {
  unsigned long t = micros();
  for (long i = 1; i <= 2000; i++) {
    delayM(1000);
  }
  t = micros() - t;
  Serial.print("  t = ");   Serial.print(t); Serial.println(" us");
}

void delayM(long micr) {
  unsigned long tim = micros();
  do {}
  while (micros() - tim < micr);
}

[/code]

Результат:

  t = 2001684 us
  t = 2001685 us
  t = 2001684 us

Soft WDT reset

ctx: cont 
sp: 3ffef750 end: 3ffef950 offset: 01b0

>>>stack>>>
3ffef900:  3ffe8868 00000001 3ffee8fc 402022cc  
3ffef910:  3fffdad0 001e8b14 3ffee8fc 40202072  
3ffef920:  00000000 00c8bc9c 0000000e 402020a8  
3ffef930:  3fffdad0 00000000 3ffee918 40202520  
3ffef940:  feefeffe feefeffe 3ffee930 40100108  
<<<stack<<<
H⸮⸮⸮⸮⸮⸮⸮

Что я делаю не так?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

dunkel пишет:

Что я делаю не так?

сложно сказать, скетч приведен не полностью.  В часности, где включается WDT?

dunkel
Offline
Зарегистрирован: 28.03.2017

Скетч приведен целиком и полностью. 

На другом форуме мне подсказали решение:

"Поставте в цикл do{ yield(); }"

После этого зависать перестало, но причину я так и не понял.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Причина в том что в ESP код не "голый" а с дополнительными библиотеками, которые не отключаются. Вот они то и решают что что-то зависло, когда пустой цикл крутите.