aboutsummaryrefslogtreecommitdiff
path: root/kernel/rgb.c
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-01-02 16:20:44 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-01-02 16:20:44 +0000
commit495bcb6f508f1da654795c7f3e0379ec1d63751e (patch)
treebd327796dbda24933b0e150c6d4f54100e8bcbc9 /kernel/rgb.c
parent775ca7a6b283339019783af24c4c424cdb0cebd1 (diff)
blocking on shared resources
Diffstat (limited to 'kernel/rgb.c')
-rw-r--r--kernel/rgb.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/kernel/rgb.c b/kernel/rgb.c
index 0cf9a96..b3f4241 100644
--- a/kernel/rgb.c
+++ b/kernel/rgb.c
@@ -32,9 +32,12 @@ rgb(void *arg)
uint8_t r, g, b, v = 0;
for (;;) {
+ wait(4);
+ v = *a->v >> 2; /* 10bit to 8bit */
+ signal(4);
+
i = (i + 1) % 360;
- //hsv(&r, &g, &b, i, v, v);
- hsv(&r, &g, &b, i, 255, 255);
+ hsv(&r, &g, &b, i, 255, v);
wait(1);
a->r = r;
@@ -48,9 +51,6 @@ rgb(void *arg)
a->b = b;
signal(3);
- v = *a->v >> 2; /* 10bit to 8bit */
- //sei();
-
sleep(MSEC(40));
}
}
@@ -68,11 +68,9 @@ pwm(void *arg)
#define DIV (UINT8_MAX >> 1)
for (;;) {
- //cli();
wait(a->sema);
v = *a->value;
signal(a->sema);
- //sei();
if ((on = SEC2(v) / DIV)) {
PORTB |= _BV(a->pin);