#include <avr/wdt.h>
#define LED_PIN 8
#define UL unsigned long

UL prev = millis();

void setup() {
  wdt_disable();
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
  //watchdogSetup(0b1100000); // WDT 4s = Ciclo 8s
  watchdogSetup(0b1000111); // WDT 2s = Ciclo 4s
}

volatile bool watchdogFired = false;

ISR(WDT_vect) {
  digitalWrite(LED_PIN, !digitalRead(LED_PIN));
  watchdogFired = true;
}

void watchdogSetup(byte config) {
  cli();
  WDTCSR = bit (WDCE) | bit (WDE); // SETUP MODE, NECESSÁRIO
  WDTCSR = config;
  wdt_reset();
  sei();
}

void loop() {
 if (watchdogFired) {
  UL now = millis();
  watchdogFired = false;
  String status = digitalRead(LED_PIN) ? "ON" : "OFF";
  Serial.println("LED " + status);
  Serial.println("TIME SINCE LAST WDTI: " + String(now - prev) + "ms" + "\n");
  prev = now;
  wdt_reset(); 
 }
}