]> www.fi.muni.cz Git - tinyboard.git/blob - projects/step-up/main.c
Buttons, status LED, control implemented.
[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_buttons();
21
22         init_pwmled();
23         init_pattern();
24         init_control();
25
26         set_sleep_mode(SLEEP_MODE_IDLE);
27 }
28
29 #if 0
30 static void hw_suspend()
31 {
32         susp_pwm();
33         susp_adc();
34         susp_tmr();
35         susp_gpio();
36         susp_buttons();
37
38         wdt_disable();
39 }
40
41 void power_down()
42 {
43         hw_suspend();
44
45         do {
46                 // G'night
47                 set_sleep_mode(SLEEP_MODE_PWR_DOWN);
48                 sleep_enable();
49                 sleep_bod_disable();
50                 sei();
51                 sleep_cpu();
52
53                 // G'morning
54                 cli();
55                 sleep_disable();
56
57                 // allow wakeup by long button-press only
58         } while (!buttons_wait_for_release());
59
60         // ok, so I will wake up
61         hw_setup();
62 }
63 #endif
64
65 int main(void)
66 {
67         init_log();
68
69         log_set_state(3);
70
71         hw_setup();
72         // power_down(); - not while still debugging
73
74         sei();
75 #if 1
76         while (1) {
77                 wdt_reset();
78                 sleep_mode();
79         }
80 #endif
81
82 #if 0
83         DDRB |= _BV(PB2);
84         while (1) {
85                 PORTB |=  _BV( PB2 );
86                 _delay_ms(200);
87                 PORTB &=~ _BV( PB2 );
88                 _delay_ms(200);
89         }
90 #endif
91 }