]> www.fi.muni.cz Git - tinyboard.git/blobdiff - projects/step-up/main.c
Experimental step-up driver for chain of 5630 LEDs.
[tinyboard.git] / projects / step-up / main.c
index 55e2ef75737cd58e437d7750954ccc7078b393d1..25d80df070bb4bf7269e89c6ee50792fdb245612 100644 (file)
@@ -9,34 +9,31 @@
 
 static void hw_setup()
 {
-       wdt_enable(WDTO_1S);
+       power_all_disable();
 
-       //init_battery();
+       init_battery();
        init_pwm();
        init_adc();
+       init_wdt();
 
-       //init_tmr();
-       //init_buttons();
+       init_buttons();
 
        init_pwmled();
-       //init_gpio();
-       //init_ambient();
-       //init_pattern();
-       //init_control();
+       init_pattern();
+       init_control();
 
        set_sleep_mode(SLEEP_MODE_IDLE);
 }
 
-#if 0
 static void hw_suspend()
 {
        susp_pwm();
        susp_adc();
-       susp_tmr();
-       susp_gpio();
+       susp_wdt();
+
        susp_buttons();
 
-       wdt_disable();
+       power_all_disable();
 }
 
 void power_down()
@@ -61,25 +58,33 @@ void power_down()
        // ok, so I will wake up
        hw_setup();
 }
-#endif
 
 int main(void)
 {
        init_log();
 
-       power_usi_disable(); // Once for lifetime
-       ACSR |= _BV(ACD);    // disable analog comparator
-
        log_set_state(3);
 
        hw_setup();
-       // power_down(); - not while still debugging
+       power_down();
 
        sei();
 #if 1
        while (1) {
-               wdt_reset();
-               sleep_mode();
+               cli();
+               if (pwm_enabled) {
+                       set_sleep_mode(SLEEP_MODE_IDLE);
+               } else if (adc_enabled) {
+                       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