projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Wake up on LPC usart ISR only once
[fw/altos]
/
src
/
lpc
/
ao_adc_lpc.c
diff --git
a/src/lpc/ao_adc_lpc.c
b/src/lpc/ao_adc_lpc.c
index 25a121b53ca6eb4391991fd645323927db101859..874d2d294cb6a08db5a7bd3f9731953f3beb890a 100644
(file)
--- a/
src/lpc/ao_adc_lpc.c
+++ b/
src/lpc/ao_adc_lpc.c
@@
-91,47
+91,47
@@
(AO_ADC_6 << 6) | \
(AO_ADC_7 << 7))
(AO_ADC_6 << 6) | \
(AO_ADC_7 << 7))
-#define AO_ADC_CLKDIV (AO_LPC_SYSCLK / 4500000
- 1
)
+#define AO_ADC_CLKDIV (AO_LPC_SYSCLK / 4500000)
-static uint8_t ao_adc_ready;
+static uint8_t ao_adc_ready;
+
+#define sample(id) (*out++ = lpc_adc.dr[id] >> 1)
void lpc_adc_isr(void)
{
uint32_t stat = lpc_adc.stat;
uint16_t *out;
void lpc_adc_isr(void)
{
uint32_t stat = lpc_adc.stat;
uint16_t *out;
- lpc_adc.cr = ((AO_ADC_MASK << LPC_ADC_CR_SEL) |
- (AO_ADC_CLKDIV << LPC_ADC_CR_CLKDIV) |
- (0 << LPC_ADC_CR_BURST) |
- (LPC_ADC_CR_CLKS_11 << LPC_ADC_CR_CLKS));
+ /* Turn off burst mode */
+ lpc_adc.cr = 0;
lpc_adc.stat = 0;
/* Store converted values in packet */
out = (uint16_t *) &ao_data_ring[ao_data_head].adc;
#if AO_ADC_0
lpc_adc.stat = 0;
/* Store converted values in packet */
out = (uint16_t *) &ao_data_ring[ao_data_head].adc;
#if AO_ADC_0
-
*out++ = lpc_adc.dr[0] >> 1
;
+
sample(0)
;
#endif
#if AO_ADC_1
#endif
#if AO_ADC_1
-
*out++ = lpc_adc.dr[1] >> 1
;
+
sample(1)
;
#endif
#if AO_ADC_2
#endif
#if AO_ADC_2
-
*out++ = lpc_adc.dr[2] >> 1
;
+
sample(2)
;
#endif
#if AO_ADC_3
#endif
#if AO_ADC_3
-
*out++ = lpc_adc.dr[3] >> 1
;
+
sample(3)
;
#endif
#if AO_ADC_4
#endif
#if AO_ADC_4
-
*out++ = lpc_adc.dr[4] >> 1
;
+
sample(4)
;
#endif
#if AO_ADC_5
#endif
#if AO_ADC_5
- *out++ = lpc_adc.dr[5] >> 1;
+ sample(5);
#endif
#if AO_ADC_6
#endif
#if AO_ADC_6
-
*out++ = lpc_adc.dr[6] >> 1
;
+
sample(6)
;
#endif
#if AO_ADC_7
#endif
#if AO_ADC_7
-
*out++ = lpc_adc.dr[7] >> 1
;
+
sample(7)
;
#endif
AO_DATA_PRESENT(AO_DATA_ADC);
#endif
AO_DATA_PRESENT(AO_DATA_ADC);