Watchdogs для ESP32

Приветствую гуру форума. Нарисовалась проблемка на одном из объектов. Использую WiFi реле на основе ESP32. Такие реле у меня стоят минимум на более 200 обьектах. Начинал ставить довольно на большой территории в разных городах года 3 назад. Все работают без сбоев и каких то проблем круглыми сутками. Коммутируют активную нагрузку (лампочки 60 ватт). И вот неожиданно для меня попался обьект, на котором контроллер время от времени зависает, не известно в каком состоянии. Помогает только передёргивание питанием, или EN на корпус. Пробовал менять на другие такие же реле, не помогает, менять с обьекта, на котором релюха работает без сбоев, на этом обьекте уходит в даун. Особенность установки данного обьекта в том, что это дачный посёлок. и в нем частенько кто то использует сварку, включает какието мощные нагреватели. Вообщем сеть похоже грязновата. Пока не хочу лезть в изменения железки (ведь везде то работает) , хочу попрововать вачдоком попытаться решить вопрос. Пока не было опыта внедрения вачдока в ESP32 (на атмеге делал, но там вообщем то было просто, вовремя обнуляй и всё). Почитал про ESP32, как то всё очень мудрёно выглядит эта собака. Вот и прошу сообщество поделиться кусочком кода, кому не жалко сторожевой собакой. Чесно, мне не верится что поможет, а вдруг. Или может у кого есть опыт, и была точно такая же ситация, побороли или нет? Спасибо.

отсюда не подойдёт? код особо не смотрел, как там реализовано

Что прямо действительно так просто?

#include <esp_task_wdt.h>

#define WDT_TIMEOUT 60
void setup() {
esp_task_wdt_init(WDT_TIMEOUT, true);  // Init Watchdog timer
}

void loop() {
esp_task_wdt_reset();  // Reset watchdog timer
}

по крайней мере компилируется. Попробую. вдруг сработает. Спасибо. Но жду ещё предложений, или этапов борьбы с похожей поблемой.

У меня не сработало. Вернее в тепличных условиях стола работает. На даче следит за температурой и включает обогреватель. Вот там иногда зависает и никакой вачдог не возвращает в нормальный режим. Найдёте решение будет отлично.

насколько я помню, на ЕСП32 ватчдог работает всегда, его отдельно запускать не надо.

1 лайк

Нет не работает всегда. Может когда loop () выполняется он и срабатывает, но у меня луп точно не крутится (диодик не моргает :slight_smile: )
Залил обновленную прошивку на обьект. Посмотрим сработает или нет отпишусь. Там каждые пару тройку дней приходится механически перегружать релюху.

К сожалению не помогла собака. Процессор в очередной раз завис в неизвестном состоянии. При нормальной работе, он сосдаёт всегда собственную точку доступа, подключившись к которой можно через браузер настроить все функции реле, а так же подключен к роутеру и имеет на борту интернет, через котоый можно управлять релюхой дистанционно. Так вот всё это пропадает, как будто, ESP32 переходит в режим сна. Пока не знаю куда копать. Может какой нибудь есть в нём таймер, который перезагрузит его из любого состояния?

Вот в этом примере присутствует еще один параметр в инициализации.
esp_task_wdt_add(NULL); //add current thread to WDT watch

У меня не получилось. Боюсь что только внешний.