From 293a11fa98af0859bcf20543d2a606bc41b9c4bf Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Tue, 29 Apr 2025 21:49:42 +0800 Subject: Watchdog timer interrupt. --- sleep/main.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'sleep/main.c') diff --git a/sleep/main.c b/sleep/main.c index 007dc18..ef4e520 100644 --- a/sleep/main.c +++ b/sleep/main.c @@ -1,5 +1,6 @@ #include #include +#include #include #include "uart.h" @@ -7,6 +8,15 @@ #define LOCK_PIN PD2 #define UNLOCK_PIN PD3 +static inline void init_wdt(void) +{ + cli(); + wdt_reset(); + WDTCSR |= (1 << WDCE) | ( 1 << WDE); + WDTCSR = (1 << WDP2) | (1 << WDP1) | (1 << WDP0); + WDTCSR |= (1 << WDIE); +} + static inline void init_btns(void) { DDRD &= ~((1 << LOCK_PIN) | (1 << UNLOCK_PIN)); @@ -17,6 +27,7 @@ static inline void init_btns(void) int main(void) { + init_wdt(); init_btns(); uart_init(); @@ -28,9 +39,11 @@ int main(void) sleep_enable(); sleep_bod_disable(); sleep_cpu(); + sleep_disable(); - uart_write_line("It's alive!"); - _delay_ms(1500); + _delay_ms(500); /* wait for start-up */ + uart_write_line("Doing some work..."); + _delay_ms(500); } return 0; } @@ -55,3 +68,7 @@ ISR(INT1_vect) if (is_btn_pressed(PIND, UNLOCK_PIN)) uart_write_line("Unlocked"); } + +ISR(WDT_vect) +{ +} -- cgit v1.2.3