Was just stepping through register space arbitrarily, which would have
worked for EasyMini, but might have failed later if the ADC pin usage
wasn't consecutive.
Signed-off-by: Keith Packard <keithp@keithp.com>
+ uint32_t stat = lpc_adc.stat;
uint16_t *out = (uint16_t *) &ao_data_ring[ao_data_head].adc;
vuint32_t *in = &lpc_adc.dr[0];
uint16_t *out = (uint16_t *) &ao_data_ring[ao_data_head].adc;
vuint32_t *in = &lpc_adc.dr[0];
+ lpc_adc.cr = 0;
+ lpc_adc.stat = 0;
+
/* Store converted values in packet */
#if AO_ADC_0
/* Store converted values in packet */
#if AO_ADC_0
- *out++ = ((uint16_t) *in++) >> 1;
+ *out++ = lpc_adc.dr[0] >> 1;
- *out++ = ((uint16_t) *in++) >> 1;
+ *out++ = lpc_adc.dr[1] >> 1;
- *out++ = ((uint16_t) *in++) >> 1;
+ *out++ = lpc_adc.dr[2] >> 1;
- *out++ = ((uint16_t) *in++) >> 1;
+ *out++ = lpc_adc.dr[3] >> 1;
- *out++ = ((uint16_t) *in++) >> 1;
+ *out++ = lpc_adc.dr[4] >> 1;
- *out++ = ((uint16_t) *in++) >> 1;
+ *out++ = lpc_adc.dr[5] >> 1;
- *out++ = ((uint16_t) *in++) >> 1;
+ *out++ = lpc_adc.dr[6] >> 1;
- *out++ = ((uint16_t) *in++) >> 1;
+ *out++ = lpc_adc.dr[7] >> 1;
#endif
AO_DATA_PRESENT(AO_DATA_ADC);
#endif
AO_DATA_PRESENT(AO_DATA_ADC);