X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=firmware%2Fmain.c;h=a83884b86f9408101f9bbf3a2bc91fa010b7b1be;hb=4728997cb5f6eff94c8a9d9e253d1675b7516987;hp=8166771478bd207e8cced92f6bf9f11eaef4a754;hpb=fad6d0df251d09246816d5f6480543b8af588641;p=bike-lights.git diff --git a/firmware/main.c b/firmware/main.c index 8166771..a83884b 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -3,24 +3,22 @@ #include #include #include -#include #include "lights.h" static void hw_setup() { - wdt_enable(WDTO_1S); - init_battery(); init_pwm(); init_adc(); init_tmr(); init_buttons(); - pwmled_init(); - gpio_init(); - ambient_init(); - pattern_init(); + init_pwmled(); + init_gpio(); + init_ambient(); + init_pattern(); + init_control(); set_sleep_mode(SLEEP_MODE_IDLE); } @@ -31,9 +29,8 @@ static void hw_suspend() susp_adc(); susp_tmr(); susp_gpio(); + susp_ambient(); susp_buttons(); - - wdt_disable(); } void power_down() @@ -61,7 +58,7 @@ void power_down() int main(void) { - log_init(); + init_log(); power_usi_disable(); // Once for lifetime ACSRA |= _BV(ACD); // disable analog comparator @@ -74,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