Watchdog і таймери ESP32
ESP32 має вбудований Watchdog Timer (WDT), який використовується для захисту програми від зависань. Він працює у зв’язці з системними таймерами та дозволяє автоматично перезапускати контролер, якщо код перестав виконуватися коректно. Це особливо важливо у проєктах «Інтернет речей» та автоматизації, де пристрій повинен працювати надійно без постійного втручання людини.
Як пов’язані таймери та WDT
- WDT (Watchdog Timer) базується на апаратному таймері ESP32.
- Кожен WDT має власний «таймаут» (час очікування).
- Якщо протягом заданого інтервалу програма не «погодує» (reset/refresh) WDT, він перезапустить систему.
- Таким чином WDT використовує таймери для відліку часу бездіяльності програми.
Захист програми від зависань
Програма може зависнути через помилки у коді, нескінченні цикли чи апаратні проблеми. Watchdog стежить, щоб цього не сталося:
- Якщо код працює правильно, у ньому регулярно викликається функція «годування» WDT.
- Якщо код «застряг» і WDT не скинуто вчасно — контролер автоматично перезавантажується.
- Це гарантує, що пристрій не залишиться «мертвим», а повернеться у робочий стан.
Приклад: використання Task Watchdog
#include "esp_task_wdt.h"
void setup() {
Serial.begin(115200);
// Ініціалізація WDT: таймаут 5 секунд
esp_task_wdt_init(5, true);
// Додаємо поточний потік (loop) під контроль
esp_task_wdt_add(NULL);
}
void loop() {
Serial.println("Працюємо нормально...");
delay(1000);
// "Годуємо" watchdog
esp_task_wdt_reset();
// Якщо закоментувати рядок вище — WDT перезапустить контролер через 5 секунд
}
Приклад: захист від зависання у довгому циклі
void loop() {
for (long i = 0; i < 1000000000; i++) {
// довгі обчислення...
if (i % 1000000 == 0) {
// скидання WDT всередині важкого циклу
esp_task_wdt_reset();
}
}
}
Особливості та рекомендації
- WDT існує як для CPU, так і для таймерів FreeRTOS.
- Системний WDT за замовчуванням увімкнено — він перезапускає ESP32 при блокуванні.
- Для критичних задач використовуйте Task Watchdog та «годуйте» його у робочих потоках.
- Не варто вимикати WDT без потреби — це знижує надійність системи.
Висновок
Watchdog в ESP32 — це механізм на основі таймерів, який забезпечує стабільність роботи мікроконтролера. Він автоматично перезапускає пристрій при зависаннях, захищаючи вашу систему від збоїв. Використання WDT особливо актуальне в автономних IoT-пристроях, що працюють 24/7.
ESP32 та Telegram bot: віддалений моніторинг
ESP32 та Telegram bot: віддалений моніторинг Сучасні IoT-системи все частіше використовують хма..
Подвійна шестерня для зубчатого ременю на 20 зубів під вісь 5 мм
Подвійна шестерня для передачі обертального моменту з одного валу на інший.Застосовується для розділ..
97.08грн.
Кронштейн для кріплення крокового двигуна
Якісний сталевий кронштейн підходить для кріплення крокового двигуна Nema 17, а також для його модиф..
153.09грн.
Цифровий вольтметр + амперметр 100В 10А
Цифровий вольтметр та амперметр постійного струмуДіапазон вимірювання напруги 0 ...100 ВДіапазон вим..
127.39грн.
Адаптер USB 2.0 в TTL UART
Комунікаційний конвертер USB 2.0 в TTL UARTЗаснований на мікросхемі CP2102Містить самовідновлюв..
125.05грн.







