From 783e664888d39ef678e5d6bd3578ca07586afc89 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 18 Jul 2010 22:02:53 +0200 Subject: src/common/led: do not touch TWI pins --- src/common/led.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/common/led.c b/src/common/led.c index 16036f3..dd01653 100644 --- a/src/common/led.c +++ b/src/common/led.c @@ -31,6 +31,9 @@ #define LED_UP_MS 0.05 #define LED_DOWN_MS (0.5 - LED_UP_MS) +/** Mask of used bits. */ +#define LED_MASK 0b111010 + struct led_t { uint8_t ddr; @@ -55,8 +58,11 @@ struct led_t led_tab[] = void led_display (uint16_t leds, uint16_t duration) { + uint8_t portb, ddrb; uint8_t l; uint16_t i; + portb = PORTB & ~LED_MASK; + ddrb = DDRB & ~LED_MASK; for (i = 0; i < duration; i++) { for (l = 0; l < UTILS_COUNT (led_tab); l++) @@ -64,13 +70,13 @@ led_display (uint16_t leds, uint16_t duration) /* Turn on if selected. */ if (leds & (1u << l)) { - PORTB = led_tab[l].port; - DDRB = led_tab[l].ddr; + PORTB = portb | led_tab[l].port; + DDRB = ddrb | led_tab[l].ddr; } utils_delay_ms (LED_UP_MS); /* Turn off, leds are too bright. */ - DDRB = 0; - PORTB = 0; + DDRB = ddrb; + PORTB = portb; utils_delay_ms (LED_DOWN_MS); } } -- cgit v1.2.3