#include #include #include #include // die Lib findest du selber ;-) Print &cout = Serial; // cout Emulation für "Arme" constexpr uint8_t LED_PIN = PB5; uint32_t wdt_ticks; int bufferSize; void setup() { Serial.begin(9600); bufferSize = Serial.availableForWrite(); cout << F("Start: ") << F(__FILE__) << endl; cout << F("bufferSize: ") << bufferSize << endl; DDRB = (1 << LED_PIN); //LED_PIN als Ausgang ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { wdt_reset(); WDTCSR |= (1 << WDCE) | (1 << WDE); WDTCSR = (1 << WDIE) | (1 << WDP2) | (1 << WDP1); // 1s } } void loop() { uint32_t local_wdt_ticks = 0; ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { local_wdt_ticks = wdt_ticks; } // vor dem Schlafen noch was senden cout << "wdt_ticks: " << local_wdt_ticks << endl; // abwarten bis serielle Kommunikation abgeschlossen vor dem Schlafen while(bufferSize > Serial.availableForWrite()); delay(10); // letzte Byte abwarten set_sleep_mode(SLEEP_MODE_PWR_DOWN); // Power-down-Modus sleep_mode(); sleep_disable(); } ISR(WDT_vect) { PINB = (1 << LED_PIN); // toggle LED pin wdt_ticks++; }