]> www.fi.muni.cz Git - bike-lights.git/blob - firmware/gpio.c
buttons.c: fix for setup timeout
[bike-lights.git] / firmware / gpio.c
1 #include <avr/io.h>
2
3 #include "lights.h"
4
5 void gpio_init()
6 {
7         DDRB |=    _BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6);
8         PORTB &=~ (_BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6));
9
10         gpio_set(1, 1);
11 }
12
13 void susp_gpio()
14 {
15         DDRB  &= ~(_BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6));
16         PORTB &= ~(_BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6));
17 }
18
19 void gpio_before_poweroff()
20 {
21         DDRB |= _BV(PB2);
22         PORTB |= _BV(PB2);
23 }
24
25 void gpio_set(unsigned char n, unsigned char on)
26 {
27         if (on) {
28                 switch(n) {
29                 case 0: PORTB |= _BV(PB0); break;
30                 case 1: PORTB |= _BV(PB2); break;
31                 case 2: PORTB |= _BV(PB4); break;
32                 case 3: PORTB |= _BV(PB6); break;
33                 }
34         } else {
35                 switch(n) {
36                 case 0: PORTB &= ~_BV(PB0); break;
37                 case 1: PORTB &= ~_BV(PB2); break;
38                 case 2: PORTB &= ~_BV(PB4); break;
39                 case 3: PORTB &= ~_BV(PB6); break;
40                 }
41         }
42 }
43