From 8627c34c0d7340df7b313ac87a14436d045b1d3f Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 14 Nov 2011 10:54:16 +0000 Subject: fix off time bug --- kernel/rgb.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/kernel/rgb.c b/kernel/rgb.c index 87b1772..e5a6c90 100644 --- a/kernel/rgb.c +++ b/kernel/rgb.c @@ -52,6 +52,7 @@ pwm(void *arg) { struct pwmarg *a = (struct pwmarg *)arg; uint32_t on, off; + uint8_t v; DDRB |= _BV(a->pin); PORTB &= ~_BV(a->pin); @@ -62,17 +63,15 @@ pwm(void *arg) for (;;) { cli(); - on = SEC0(*a->value) / UINT8_MAX; + v = *a->value; sei(); - if (on) { + if ((on = SEC2(v) / UINT8_MAX)) { PORTB |= _BV(a->pin); update(on, DL); } - off = SEC0(UINT8_MAX - on) / UINT8_MAX; - - if (off) { + if ((off = SEC2(UINT8_MAX - v) / UINT8_MAX)) { PORTB &= ~_BV(a->pin); update(off, DL); } -- cgit v1.2.3