X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Flpc%2Fao_adc_lpc.c;h=1fbf13660a5969739cf496d602acf699e4abb371;hb=a3fd78224f222adc4cec394a2c8f4153d6e8571c;hp=6743c1f46ba0d292fc2983da96bde8ab9fe4a917;hpb=c6e57291d91f1f6c4de5c54a5cfd3eef66d9f830;p=fw%2Faltos diff --git a/src/lpc/ao_adc_lpc.c b/src/lpc/ao_adc_lpc.c index 6743c1f4..1fbf1366 100644 --- a/src/lpc/ao_adc_lpc.c +++ b/src/lpc/ao_adc_lpc.c @@ -57,7 +57,10 @@ /* ADC clock is divided by this value + 1, which ensures that * the ADC clock will be strictly less than 4.5MHz as required */ -#define AO_ADC_CLKDIV (AO_LPC_SYSCLK / 450000) +#ifndef AO_LPC_ADC_CLOCK +#define AO_LPC_ADC_CLOCK 4500000 +#endif +#define AO_ADC_CLKDIV (AO_LPC_SYSCLK / AO_LPC_ADC_CLOCK) static uint8_t ao_adc_ready; static uint8_t ao_adc_sequence; @@ -79,7 +82,7 @@ static const uint8_t ao_adc_mask_seq[AO_ADC_NUM] = { 1 << 4, #endif #if AO_ADC_5 - 1 << 6, + 1 << 5, #endif #if AO_ADC_6 1 << 6, @@ -92,7 +95,7 @@ static const uint8_t ao_adc_mask_seq[AO_ADC_NUM] = { #define sample(id) (*out++ = (uint16_t) lpc_adc.dr[id] >> 1) static inline void lpc_adc_start(void) { - lpc_adc.cr = ((ao_adc_mask_seq[ao_adc_sequence] << LPC_ADC_CR_SEL) | + lpc_adc.cr = (((uint32_t) ao_adc_mask_seq[ao_adc_sequence] << 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) | @@ -112,23 +115,7 @@ void lpc_adc_isr(void) } AO_DATA_PRESENT(AO_DATA_ADC); - if (ao_data_present == AO_DATA_ALL) { -#if HAS_MS5607 - ao_data_ring[ao_data_head].ms5607_raw = ao_ms5607_current; -#endif -#if HAS_MMA655X - ao_data_ring[ao_data_head].mma655x = ao_mma655x_current; -#endif -#if HAS_HMC5883 - ao_data_ring[ao_data_head].hmc5883 = ao_hmc5883_current; -#endif -#if HAS_MPU6000 - ao_data_ring[ao_data_head].mpu6000 = ao_mpu6000_current; -#endif - ao_data_ring[ao_data_head].tick = ao_tick_count; - ao_data_head = ao_data_ring_next(ao_data_head); - ao_wakeup((void *) &ao_data_head); - } + ao_data_fill(ao_data_head); ao_adc_ready = 1; } @@ -176,7 +163,7 @@ void ao_adc_init(void) { lpc_scb.sysahbclkctrl |= (1 << LPC_SCB_SYSAHBCLKCTRL_ADC); - lpc_scb.pdruncfg &= ~(1 << LPC_SCB_PDRUNCFG_ADC_PD); + lpc_scb.pdruncfg &= ~(1UL << LPC_SCB_PDRUNCFG_ADC_PD); /* Enable interrupt when channel is complete */ lpc_adc.inten = (1 << LPC_ADC_INTEN_ADGINTEN);