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.

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
ESP32 та Telegram bot: віддалений моніторинг

ESP32 та Telegram bot: віддалений моніторинг

ESP32 та Telegram bot: віддалений моніторинг Сучасні IoT-системи все частіше використовують хма..

Подвійна шестерня для зубчатого ременю на 20 зубів під вісь 5 мм

Подвійна шестерня для зубчатого ременю на 20 зубів під вісь 5 мм

Подвійна шестерня для передачі обертального моменту з одного валу на інший.Застосовується для розділ..

97.08грн.

Кронштейн для кріплення крокового двигуна

Кронштейн для кріплення крокового двигуна

Якісний сталевий кронштейн підходить для кріплення крокового двигуна Nema 17, а також для його модиф..

153.09грн.

Цифровий вольтметр + амперметр 100В 10А

Цифровий вольтметр + амперметр 100В 10А

Цифровий вольтметр та амперметр постійного струмуДіапазон вимірювання напруги 0 ...100 ВДіапазон вим..

127.39грн.

Адаптер USB 2.0 в TTL UART

Адаптер USB 2.0 в TTL UART

Комунікаційний конвертер USB 2.0 в TTL UARTЗаснований на мікросхемі CP2102Містить самовідновлюв..

125.05грн.

Рекомендовані товари

Вимірювання часу та точні затримки на ESP32

Вимірювання часу та точні затримки на ESP32

Вимірювання часу та точні затримки на ESP32 ESP32 має потужну систему апаратних таймерів, які доз..

0.00грн.

ESP32 Timer Groups: архітектура та використання

ESP32 Timer Groups: архітектура та використання

ESP32 Timer Groups: архітектура та використання Мікроконтролер ESP32 має потужну систему апаратни..

0.00грн.