X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=tinyboard.git;a=blobdiff_plain;f=projects%2Fstep-up%2Fmain.c;fp=projects%2Fstep-up%2Fmain.c;h=90bea63dc60d300c3f3e6723d6f0718979167cbb;hp=0000000000000000000000000000000000000000;hb=edebb613b2f867d4f8473747744f329cb30e38fe;hpb=5aa70c4eca2337027c5ca5ece45c0031b95026ef diff --git a/projects/step-up/main.c b/projects/step-up/main.c new file mode 100644 index 0000000..90bea63 --- /dev/null +++ b/projects/step-up/main.c @@ -0,0 +1,92 @@ +#include +#include +#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(); + + init_pwmled(); + init_gpio(); + init_ambient(); + init_pattern(); + init_control(); + + set_sleep_mode(SLEEP_MODE_IDLE); +} + +static void hw_suspend() +{ + susp_pwm(); + susp_adc(); + susp_tmr(); + susp_gpio(); + susp_buttons(); + + wdt_disable(); +} + +void power_down() +{ + hw_suspend(); + + do { + // G'night + set_sleep_mode(SLEEP_MODE_PWR_DOWN); + sleep_enable(); + sleep_bod_disable(); + sei(); + sleep_cpu(); + + // G'morning + cli(); + sleep_disable(); + + // allow wakeup by long button-press only + } while (!buttons_wait_for_release()); + + // ok, so I will wake up + hw_setup(); +} + +int main(void) +{ + init_log(); + + power_usi_disable(); // Once for lifetime + ACSRA |= _BV(ACD); // disable analog comparator + + log_set_state(3); + + hw_setup(); + power_down(); + + sei(); +#if 1 + while (1) { + wdt_reset(); + sleep_mode(); + } +#endif + +#if 0 + DDRB |= _BV(PB2); + while (1) { + PORTB |= _BV( PB2 ); + _delay_ms(200); + PORTB &=~ _BV( PB2 ); + _delay_ms(200); + } +#endif +}