Где-то год назад мне на озоне пришёл NodeMCU v3 с вайфаем. Попытался я его прошить, а он в последовательный порт выводит:
текст в выделенной строке, кстати, главная зараза
Обшарил этот форум, но ничего так и не нашёл.
Спустя год, когда у меня появился компьютер (до этого пользовался ноутбуком), решил вернуться к этой теме. В итоге выяснил, что этот wdt reset это сброс из-за так называемого WatchDogTimer, вшитого в само ядро ESP-шки. Работает он как-то так: раз в 5 секунд программа должна передать управление платой ядру, которое автоматически происходит после каждой итерации loop(). А если код управление ядру передать не успевает, то срабатывает WDT который сбрасывает плату, ибо думает что она зависла (а она к Wi-Fi подключается или что-то подобное). Я нашёл кучу решений, но самое оптимальное - просто увеличить WDT до большого значения. Вот так:
Или выключить его вовсе:
Кстати, в большинстве готовых скетчей даже банального yield(); в цикле нету (а он в большинстве случаев помогает), ни то что этих нагромождений
мусор какойто:
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
ets Jan 8 2013,rst cause:4, boot mode:(3,6)
wdt reset
load 0x4010f000, len 3424, room 16
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8
tail 0
chksum 0x2b
csum 0x2b
v0004a600
~ld
Обшарил этот форум, но ничего так и не нашёл.
Спустя год, когда у меня появился компьютер (до этого пользовался ноутбуком), решил вернуться к этой теме. В итоге выяснил, что этот wdt reset это сброс из-за так называемого WatchDogTimer, вшитого в само ядро ESP-шки. Работает он как-то так: раз в 5 секунд программа должна передать управление платой ядру, которое автоматически происходит после каждой итерации loop(). А если код управление ядру передать не успевает, то срабатывает WDT который сбрасывает плату, ибо думает что она зависла (а она к Wi-Fi подключается или что-то подобное). Я нашёл кучу решений, но самое оптимальное - просто увеличить WDT до большого значения. Вот так:
Кусок кода:
void setup(){
ESP.wdtEnable(20000) //включаем wdt с задержкой 20000 мс (20 секунд), можно увеличивать
//код
}
Кусок кода:
void setup(){
ESP.wdtDisable() //выключаем wdt
//код
}