#include <esp_task_wdt.h>
// WDT timeout in seconds
#define WDT_TIMEOUT 7 // 5 seconds
void setup() {
Serial.begin(115200);
Serial.println("Configuring WDT...");
esp_task_wdt_deinit();
// Define the WDT configuration
esp_task_wdt_config_t wdt_config = {
.timeout_ms = WDT_TIMEOUT * 1000, // Convert seconds to milliseconds
.trigger_panic = true // Trigger panic on timeout
};
// Initialize WDT with the configuration
esp_task_wdt_init(&wdt_config);
esp_task_wdt_add(NULL); // Add current task to WDT
}
int i = 0;
int counting = 5;
unsigned long last = millis();
void loop() {
esp_task_wdt_reset();
// Resetting WDT every 2s, 5 times only
if (millis() - last >= 2000 && i < 5) {
Serial.println("Resetting WDT...");
counting = 5;
esp_task_wdt_reset();
last = millis();
i++;
if (i == 5) {
esp_task_wdt_reset();
Serial.println("Stopping WDT reset. CPU should reboot in 5s");
}
}
// Check if we've stopped resetting WDT
if (i == 5) {
if (millis() - last >= 1000) { // Changed here
last = millis();
Serial.print("Countdown in ");
Serial.println(counting);
counting--;
}
}
}