• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
Извиняюсь за мою панику! Доверился китайской зарядке, а там

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

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