]> www.fi.muni.cz Git - bike-lights.git/blob - firmware/gpio.c
pwm.c: channels running - visible from the outside
[bike-lights.git] / firmware / gpio.c
1 #include <avr/io.h>
2
3 #include "lights.h"
4
5 void init_gpio()
6 {
7         PORTB &=~ (_BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6));
8         DDRB |=    _BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6);
9 }
10
11 void susp_gpio()
12 {
13         PORTB &= ~(_BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6));
14         DDRB |=    _BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6);
15 }
16
17 void gpio_set(unsigned char n, unsigned char on)
18 {
19         if (on) {
20                 switch(n) {
21                 case 0: PORTB |= _BV(PB0); break;
22                 case 1: PORTB |= _BV(PB2); break;
23                 case 2: PORTB |= _BV(PB4); break;
24                 case 3: PORTB |= _BV(PB6); break;
25                 }
26         } else {
27                 switch(n) {
28                 case 0: PORTB &= ~_BV(PB0); break;
29                 case 1: PORTB &= ~_BV(PB2); break;
30                 case 2: PORTB &= ~_BV(PB4); break;
31                 case 3: PORTB &= ~_BV(PB6); break;
32                 }
33         }
34 }
35