]> www.fi.muni.cz Git - tinyboard.git/blob - projects/step-up/main.c
Power management - make every module enable power for its own HW.
[tinyboard.git] / projects / step-up / main.c
1 #include <avr/io.h>
2 #include <util/delay.h>
3 #include <avr/sleep.h>
4 #include <avr/interrupt.h>
5 #include <avr/power.h>
6 #include <avr/wdt.h>
7
8 #include "lights.h"
9
10 static void hw_setup()
11 {
12         power_all_disable();
13
14         wdt_enable(WDTO_1S);
15
16         //init_battery();
17         init_pwm();
18         init_adc();
19
20         //init_tmr();
21         //init_buttons();
22
23         init_pwmled();
24         //init_gpio();
25         //init_ambient();
26         //init_pattern();
27         //init_control();
28
29         set_sleep_mode(SLEEP_MODE_IDLE);
30 }
31
32 #if 0
33 static void hw_suspend()
34 {
35         susp_pwm();
36         susp_adc();
37         susp_tmr();
38         susp_gpio();
39         susp_buttons();
40
41         wdt_disable();
42 }
43
44 void power_down()
45 {
46         hw_suspend();
47
48         do {
49                 // G'night
50                 set_sleep_mode(SLEEP_MODE_PWR_DOWN);
51                 sleep_enable();
52                 sleep_bod_disable();
53                 sei();
54                 sleep_cpu();
55
56                 // G'morning
57                 cli();
58                 sleep_disable();
59
60                 // allow wakeup by long button-press only
61         } while (!buttons_wait_for_release());
62
63         // ok, so I will wake up
64         hw_setup();
65 }
66 #endif
67
68 int main(void)
69 {
70         init_log();
71
72         log_set_state(3);
73
74         hw_setup();
75         // power_down(); - not while still debugging
76
77         sei();
78 #if 1
79         while (1) {
80                 wdt_reset();
81                 sleep_mode();
82         }
83 #endif
84
85 #if 0
86         DDRB |= _BV(PB2);
87         while (1) {
88                 PORTB |=  _BV( PB2 );
89                 _delay_ms(200);
90                 PORTB &=~ _BV( PB2 );
91                 _delay_ms(200);
92         }
93 #endif
94 }