]> www.fi.muni.cz Git - bike-lights.git/blobdiff - firmware/main.c
patterns: 3 bits for duration, 5 bits for mode
[bike-lights.git] / firmware / main.c
index 393f47dff68b6a475625983726a7a47cae3dcf6b..a83884b86f9408101f9bbf3a2bc91fa010b7b1be 100644 (file)
@@ -3,14 +3,11 @@
 #include <avr/sleep.h>
 #include <avr/interrupt.h>
 #include <avr/power.h>
-#include <avr/wdt.h>
 
 #include "lights.h"
 
 static void hw_setup()
 {
-       wdt_enable(WDTO_1S);
-
        init_battery();
        init_pwm();
        init_adc();
@@ -34,8 +31,6 @@ static void hw_suspend()
        susp_gpio();
        susp_ambient();
        susp_buttons();
-
-       wdt_disable();
 }
 
 void power_down()
@@ -76,8 +71,20 @@ int main(void)
        sei();
 #if 1
        while (1) {
-               wdt_reset();
-               sleep_mode();
+               cli();
+               if (TIMER1_IS_ON()) {
+                       set_sleep_mode(SLEEP_MODE_IDLE);
+               } else if (adc_is_on) {
+                       set_sleep_mode(SLEEP_MODE_ADC);
+               } else {
+                       set_sleep_mode(SLEEP_MODE_PWR_DOWN);
+               }
+
+               sleep_enable();
+               // keep BOD active, no sleep_bod_disable();
+               sei();
+               sleep_cpu();
+               sleep_disable();
        }
 #endif