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 размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Плата STM32F103C8T6

Плата STM32F103C8T6

Мінімальна плата контролера від світового лідера по виробництву контролерів - фірми STM32.Для заливк..

211.50грн.

Електрозамок 12В 2А

Електрозамок 12В 2А

Дуже функціональний надійний та зручний в користуванні замокТакі замки використовують в електронних ..

501.00грн.

AMS1117-5.0 мікросхема стабілізатор напруги

AMS1117-5.0 мікросхема стабілізатор напруги

Мікросхема - лінійний регулятор напруги застосовується для отримання стабілізованої напруги 5,0 ВВхі..

6.27грн.

Твердотільне реле 10А

Твердотільне реле 10А

Реле без механічних контактів на 10 А. Силовим елементом даного реле є симистор.Гальванічна розв'язк..

281.48грн.

Аудіо штекер 3,5мм папа

Аудіо штекер 3,5мм папа

Аудіоштекер 3,5 мм використовується для подовжувачів аудіосигналу, для передачі сигналу з аудіороз'є..

20.98грн.

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

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

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

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

0.00грн.

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

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

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

0.00грн.