diff options
Diffstat (limited to 'firmware/drivers/adc.c')
-rw-r--r-- | firmware/drivers/adc.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/firmware/drivers/adc.c b/firmware/drivers/adc.c index c9ae2daca8..ad10017d85 100644 --- a/firmware/drivers/adc.c +++ b/firmware/drivers/adc.c | |||
@@ -294,4 +294,38 @@ void adc_init(void) | |||
294 | 294 | ||
295 | } | 295 | } |
296 | 296 | ||
297 | #elif CONFIG_CPU == PNX0101 | ||
298 | |||
299 | static unsigned short adcdata[NUM_ADC_CHANNELS]; | ||
300 | |||
301 | unsigned short adc_read(int channel) | ||
302 | { | ||
303 | return adcdata[channel]; | ||
304 | } | ||
305 | |||
306 | static void adc_tick(void) | ||
307 | { | ||
308 | if (ADCST & 0x10) { | ||
309 | adcdata[0] = ADCCH0 & 0x3ff; | ||
310 | adcdata[1] = ADCCH1 & 0x3ff; | ||
311 | adcdata[2] = ADCCH2 & 0x3ff; | ||
312 | adcdata[3] = ADCCH3 & 0x3ff; | ||
313 | adcdata[4] = ADCCH4 & 0x3ff; | ||
314 | ADCST = 0xa; | ||
315 | } | ||
316 | } | ||
317 | |||
318 | void adc_init(void) | ||
319 | { | ||
320 | ADCR24 = 0xaaaaa; | ||
321 | ADCR28 = 0; | ||
322 | ADCST = 2; | ||
323 | ADCST = 0xa; | ||
324 | |||
325 | while (!(ADCST & 0x10)); | ||
326 | adc_tick(); | ||
327 | |||
328 | tick_add_task(adc_tick); | ||
329 | } | ||
330 | |||
297 | #endif | 331 | #endif |