• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Периодически срабатывает WDT

sav-13

Member
Отлаживаю код отправки данных на свой WEB-сервер через WiFiClient.connect("сервер","порт");
И вот периодически программа начинает глючить уходя в циклическую перезагрузку с вот с таким сообщением

Код:
ctx: cont
 ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1264, room 16 
tail 0
chksum 0x42
csum 0x42
~ld
От чего может срабатывать сторожевой таймер ESP-шки?
 

Tomahawk

New member
От того, что программа надолго выходит из основного цикла и чем-то занимается, либо от переполнения оперативной памяти, указатель может сбиться и вы не можете вернуться в основной цикл, чтобы сбросить сторожевой таймер. Всё это может происходить от кривых библиотек, кривого пользовательского кода, либо банально слишком навороченной программы, с которой ESP не справляется.
 

sav-13

Member
От того, что программа надолго выходит из основного цикла и чем-то занимается, либо от переполнения оперативной памяти, указатель может сбиться и вы не можете вернуться в основной цикл, чтобы сбросить сторожевой таймер. Всё это может происходить от кривых библиотек, кривого пользовательского кода, либо банально слишком навороченной программы, с которой ESP не справляется.
Очень похоже на какое то переполнение. Убираю произвольные часть кода и программа стабильно работает.
ESP.getFreeHeap() показывает ~29000 свободной памяти
Из сторонних библиотек только DHT использую ардуиновскую последнюю

Код:
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiClient.h>
#include <EEPROM.h>
#include <DHT.h>
Может текстовые константы в PROGMEM поубирать? В Ардуине это спасает.
 

Tomahawk

New member
Эти якобы "готовые" библиотеки очень прожорливые, поэтому вполне возможно и переполнение. Ардуину в принципе не люблю, скажу лишь в целом, что кривая реализация кода увеличивает потребление памяти (хотя код и работает, но пока память не переполнится). *В NodeMCU, например, переполнение происходит на каждом шагу, если с точки зрения языка код написать не слишком оптимально.
 
Не уверен что у нас похожие ситуации, но изначально у меня был модуль ESP-03, с год валялся, ждал пока руки до него дойдут. Недавно дошли, начал пробовать стандартные примеры собрав макет на бредборде по схеме с этого сайта. Все отлично работало, без каких бы то ни было глюков. Начал расширять возможности стандартного скетча. Пока я его не переполюсовал. Заказал новых модулей (07 и 03), 07 приехали с белой макеткой, собрал без улучшайзинга схемы макетки, начал пробовать. Постоянные глюки и перезагрузка по WDT. Вчера весь день убил. Вечером в надежде что поможет добавил подтяжку на Reset и GPIO0, не помогло. Сегодня решил на всякий случай подтянуть и GPIO2. На мое удивление глюки пропали, связь не отваливается, перезагрузки прекратились. Может кому пригодится информация.
 
Похоже поторопился я с выводами, работает так-же не стабильно, даже стандартный скетч WiFiWebServer. Но выяснил еще особенность. Если перед прошивкой почистить память стандартным скетчем eeprom_clear то все нормально работает. Надеюсь так и будет в дальнейшем.
 

askhat

New member
Похоже поторопился я с выводами, работает так-же не стабильно, даже стандартный скетч WiFiWebServer. Но выяснил еще особенность. Если перед прошивкой почистить память стандартным скетчем eeprom_clear то все нормально работает. Надеюсь так и будет в дальнейшем.
как решить эту проблему?


ets Jan 8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
 

sav-13

Member
как решить эту проблему?


ets Jan 8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
Вылизать свой код, чтобы программа надолго не уходила в обработку и давала отработать WiFi. Тогда таймер не срабатывает. Обычно помогает комментирование кусков своего кода с целью выявления, что вызывает срабатывание WDT, а потом борьба с этим
 

askhat

New member
Вылизать свой код, чтобы программа надолго не уходила в обработку и давала отработать WiFi. Тогда таймер не срабатывает. Обычно помогает комментирование кусков своего кода с целью выявления, что вызывает срабатывание WDT, а потом борьба с этим
спасибо) буду разбираться)
 

artem-sky

New member
Никак не могу заставить стабильно работать ESP! Код из 3-х строк вываливается в wdt reset со всеми вытекающими...!

WiFi.begin(SSID,PASS);
.
(WiFi connected to SSID)
.
Спустя некоторое время wdt reset

Ситуация похожа и при программировании в Eclipse IDE
Оень надеялся на стабильную работу без использования внешнего микроконтроллера, но...
Может кто победил эту проблему? Ответьте!
 

artem-sky

New member
Извиняюсь за мою панику! Доверился китайской зарядке, а там

не удосужился даже питание проверить...
добавил фильтр по питанию и...

Всё работает как часы!
 
Сверху Снизу