summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schodet2010-07-18 22:02:53 +0200
committerNicolas Schodet2010-07-18 22:02:53 +0200
commit783e664888d39ef678e5d6bd3578ca07586afc89 (patch)
tree6302da5cfc6bcc9e4ee88561fc80047ca92d53f6
parent6a5e19e6077b1dd1f5d2076b0a63dfef1c04de1d (diff)
src/common/led: do not touch TWI pins
-rw-r--r--src/common/led.c14
1 files 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);
}
}