#include "esp_task_wdt.h"
#define WDT_TIMEOUT 3000
#define CONFIG_FREERTOS_NUMBER_OF_CORES 1
int i = 0;
int last = millis();
esp_task_wdt_config_t twdt_config = {
.timeout_ms = WDT_TIMEOUT,
.idle_core_mask = (1 << CONFIG_FREERTOS_NUMBER_OF_CORES) - 1, // Bitmask of all cores
.trigger_panic = true,
};
void setup() {
Serial.begin(115200);
Serial.println("Configuring WDT...");
esp_task_wdt_deinit(); // wdt is enabled by default, so we need to deinit it first
esp_task_wdt_init(&twdt_config); // enable panic
esp_task_wdt_add(NULL); // add current thread to WDT watch
}
void loop() {
// Use non-blocking logic for delays
if (millis() - last >= 1000 && i < 5) {
Serial.println("Resetting WDT...");
esp_task_wdt_reset(); // Reset watchdog
last = millis();
i++;
if (i == 5) {
Serial.println("Stopping WDT reset. CPU should reboot in 3s");
}
}
}