From 761cfcacd7cacbe1e290e8422ae99bc51398954d Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 14 Nov 2011 08:32:52 +0000 Subject: remove maxval, bump duty cycle --- kernel/dmx.c | 8 ++++---- kernel/rgb.c | 30 +++++++++++------------------- kernel/tasks.h | 2 -- 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/kernel/dmx.c b/kernel/dmx.c index 8a27fd3..1a6297a 100644 --- a/kernel/dmx.c +++ b/kernel/dmx.c @@ -29,12 +29,12 @@ struct lcdarg lcdarg; struct clockarg clockarg = { &lcdarg, &adcarg }; -struct rgbarg rgbargs = { 0, 0, 0, 0, &adcarg.value[0] }; +struct rgbarg rgbargs = { 0, 0, 0, &adcarg.value[0] }; struct pwmarg pwmargs[] = { - { &rgbargs.r, PB2, &rgbargs.m }, - { &rgbargs.g, PB3, &rgbargs.m }, - { &rgbargs.b, PB4, &rgbargs.m } + { &rgbargs.r, PB2 }, + { &rgbargs.g, PB3 }, + { &rgbargs.b, PB4 } }; int diff --git a/kernel/rgb.c b/kernel/rgb.c index 79b52f6..87b1772 100644 --- a/kernel/rgb.c +++ b/kernel/rgb.c @@ -28,13 +28,7 @@ rgb(void *arg) { struct rgbarg *a = (struct rgbarg *)arg; uint16_t i = 0; - uint8_t r, g, b, v = 255; - -#define SCALE 1 - - cli(); - a->m = 255 >> SCALE; - sei(); + uint8_t r, g, b, v = 0; update(0, MSEC(50)); @@ -43,9 +37,9 @@ rgb(void *arg) hsv(&r, &g, &b, i, v, v); cli(); - a->r = r >> SCALE; - a->g = g >> SCALE; - a->b = b >> SCALE; + a->r = r; + a->g = g; + a->b = b; v = *a->v >> 2; /* 10bit to 8bit */ sei(); @@ -57,32 +51,30 @@ void pwm(void *arg) { struct pwmarg *a = (struct pwmarg *)arg; - uint16_t maxval, on, off; + uint32_t on, off; DDRB |= _BV(a->pin); PORTB &= ~_BV(a->pin); -#define DL SEC4(5) +#define DL SEC3(1) - cli(); - maxval = *a->mval; - sei(); update(0, DL); for (;;) { cli(); - on = *a->value; + on = SEC0(*a->value) / UINT8_MAX; sei(); if (on) { PORTB |= _BV(a->pin); - update(SEC4(on), DL); + update(on, DL); } - off = maxval - on; + off = SEC0(UINT8_MAX - on) / UINT8_MAX; + if (off) { PORTB &= ~_BV(a->pin); - update(SEC4(off), DL); + update(off, DL); } } } diff --git a/kernel/tasks.h b/kernel/tasks.h index 7787552..d89a8c3 100644 --- a/kernel/tasks.h +++ b/kernel/tasks.h @@ -45,14 +45,12 @@ struct rgbarg { uint8_t r; uint8_t g; uint8_t b; - uint8_t m; uint16_t *v; }; struct pwmarg { uint8_t *value; uint8_t pin; - uint8_t *mval; }; struct adcarg { -- cgit v1.2.3