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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Набор перемычек (мама-мама) 40шт 10см

Набор перемычек (мама-мама) 40шт 10см

Набор соединительных проводов для соединения плат контроллера с периферией без пайки. Подходят под с..

76.14грн.

ESP32 MQTT клиент с термопарой K-типа и модулем MAX6675

ESP32 MQTT клиент с термопарой K-типа и модулем MAX6675

ESP32 MQTT клиент с термопарой K-типа и модулем MAX6675 В этом проекте мы рассмотрим, как собрать п..

Концевой выключатель или концевик

Концевой выключатель или концевик

Имеет одну группу переключающихся контактов. На кончике рычага установлен подвижный ролик.Максимальн..

23.58грн.

ЧТО ТАКОЕ ТРАНЗИСТОР?

ЧТО ТАКОЕ ТРАНЗИСТОР?

Термин «биполярный транзистор» связан с тем, что в этих транзисторах используются носители зарядов д..

Основы автоматики

Основы автоматики

Основы автоматикиДавайте поговорим об автоматике в контексте домашнего применения. Но только мы отой..

Рекомендуемые товары

Измерение времени и точные задержки на ESP32

Измерение времени и точные задержки на ESP32

Измерение времени и точные задержки на ESP32 ESP32 обладает мощной системой аппаратных таймеров, ..

0.00грн.

ESP32 Timer Groups: архитектура и использование

ESP32 Timer Groups: архитектура и использование

ESP32 Timer Groups: архитектура и использование Микроконтроллер ESP32 имеет мощную систему аппара..

0.00грн.