aboutsummaryrefslogtreecommitdiff
path: root/kernel/adc.c
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-03-19 14:11:43 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-03-19 14:11:43 +0000
commit94cf578cc32db53c1b1a7d59b2e4e9a85e37b375 (patch)
treed54619759bfa17ab68b5c1dcc7751b250ed01be5 /kernel/adc.c
parentcdb35c11372e919334042c0c4ec3aaeb8ed721a2 (diff)
replace interrupt blocking with semaphore
Diffstat (limited to 'kernel/adc.c')
-rw-r--r--kernel/adc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/adc.c b/kernel/adc.c
index 4229c2b..85a97bc 100644
--- a/kernel/adc.c
+++ b/kernel/adc.c
@@ -38,13 +38,16 @@ adc(void *arg)
ADMUX = (i & MUXMASK) | _BV(ADLAR);
ADCSRA |= _BV(ADSC);
loop_until_bit_is_clear(ADCSRA, ADSC);
- cli();
+
+ wait(Adc);
a->value[i] = ADCH; /* ADLAR: 8-bit */
- sei();
+ signal(Adc);
}
+
wait(Display);
fprintf(stderr, "\n%8lx%8x", now(), a->value[0]);
signal(Display);
+
sleep(0, 100000);
}
}