From bea69e2d834fdf3453506c5e66a0077c62fe885f Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Wed, 30 Apr 2025 10:38:42 +0800 Subject: Radio power down and mcu sleep for backend is working. --- lock/bend.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'lock/bend.c') diff --git a/lock/bend.c b/lock/bend.c index 3957c55..03934d1 100644 --- a/lock/bend.c +++ b/lock/bend.c @@ -3,6 +3,8 @@ #include #include +#include +#include #include #include @@ -63,6 +65,15 @@ static inline void keydel(char *buf, uint8_t n) buf[i] = 0; } +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_rx(void) { RX_DDR &= ~(1 << RX_PIN); @@ -112,6 +123,7 @@ int main(void) char buf[WDLEN], key[WDLEN], msg[WDLEN]; + init_wdt(); init_rx(); init_btns(); init_servo(); @@ -124,6 +136,9 @@ int main(void) radio_listen(); for (;;) { + if (!rxd) + _delay_ms(250); + if (rxd) { radio_recv(buf, WDLEN); rxd = 0; @@ -142,6 +157,13 @@ int main(void) keydel(key, WDLEN); } } + } else { + radio_pwr_dwn(); + sleep_enable(); + sleep_bod_disable(); + sleep_cpu(); + sleep_disable(); + radio_listen(); } } return 0; @@ -163,3 +185,7 @@ ISR(INT1_vect) if (is_btn_pressed(PIND, UNLOCK_PIN)) unlock(); } + +ISR(WDT_vect) +{ +} -- cgit v1.2.3