diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2025-04-29 21:49:42 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2025-04-29 21:51:30 +0800 |
| commit | 293a11fa98af0859bcf20543d2a606bc41b9c4bf (patch) | |
| tree | 5630487a44ec195f48f42f7321d69c2149c90b73 /sleep | |
| parent | 0398894a39406ead5921df64892e3a1c82cc25b7 (diff) | |
| download | smart-home-293a11fa98af0859bcf20543d2a606bc41b9c4bf.tar.gz | |
Watchdog timer interrupt.
Diffstat (limited to 'sleep')
| -rw-r--r-- | sleep/main.c | 21 |
1 files changed, 19 insertions, 2 deletions
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 <avr/interrupt.h> #include <avr/sleep.h> +#include <avr/wdt.h> #include <util/delay.h> #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) +{ +} |
