]> 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 20f339e3b79d7305f95cc20cce9af80eef084a27..25d80df070bb4bf7269e89c6ee50792fdb245612 100644 (file)
@@ -11,34 +11,29 @@ static void hw_setup()
 {
        power_all_disable();
 
-       wdt_enable(WDTO_1S);
-
-       //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()
@@ -63,7 +58,6 @@ void power_down()
        // ok, so I will wake up
        hw_setup();
 }
-#endif
 
 int main(void)
 {
@@ -72,13 +66,25 @@ int main(void)
        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