X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=firmware%2Fgpio.c;h=8e39bd29923359eb745946711bbb42a07bb21757;hb=64a3d3a699cd60b7a6b4b06c5c38689975a3d460;hp=2ee32109d754360434afc6ec0ed3d5c3a8269592;hpb=f956c1fa7f47b0e8b8afe323c2eff1b6c2607c2a;p=bike-lights.git diff --git a/firmware/gpio.c b/firmware/gpio.c index 2ee3210..8e39bd2 100644 --- a/firmware/gpio.c +++ b/firmware/gpio.c @@ -4,24 +4,40 @@ void gpio_init() { - DDRB |= _BV(PB2) | _BV(PB4); - PORTB &=~ (_BV(PB2) | _BV(PB4)); + DDRB |= _BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6); + PORTB &=~ (_BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6)); - gpio_set(GPIO_LED2, 1); + gpio_set(1, 1); } -void gpio_set(unsigned char n, unsigned char on) +void susp_gpio() { - unsigned char bits = 0; - switch(n) { - case GPIO_LED1: bits = _BV(PB4); break; - case GPIO_LED2: bits = _BV(PB2); break; - } + DDRB &= ~(_BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6)); + PORTB &= ~(_BV(PB0) | _BV(PB2) | _BV(PB4) | _BV(PB6)); +} + +void gpio_before_poweroff() +{ + DDRB |= _BV(PB2); + PORTB |= _BV(PB2); +} +void gpio_set(unsigned char n, unsigned char on) +{ if (on) { - PORTB |= bits; + switch(n) { + case 0: PORTB |= _BV(PB0); break; + case 1: PORTB |= _BV(PB2); break; + case 2: PORTB |= _BV(PB4); break; + case 3: PORTB |= _BV(PB6); break; + } } else { - PORTB &= ~bits; + switch(n) { + case 0: PORTB &= ~_BV(PB0); break; + case 1: PORTB &= ~_BV(PB2); break; + case 2: PORTB &= ~_BV(PB4); break; + case 3: PORTB &= ~_BV(PB6); break; + } } }