mirror of https://github.com/ARMmbed/mbed-os.git
commit
9574629e27
|
@ -95,12 +95,18 @@ void analogin_init(analogin_t *obj, PinName pin) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t adc_read(analogin_t *obj) {
|
static inline uint32_t adc_read(analogin_t *obj) {
|
||||||
|
volatile uint32_t channels;
|
||||||
|
|
||||||
__IO LPC_ADC0_Type *adc_reg = (obj->adc < ADC1_0) ? (__IO LPC_ADC0_Type*)(LPC_ADC0) : (__IO LPC_ADC0_Type*)(LPC_ADC1);
|
__IO LPC_ADC0_Type *adc_reg = (obj->adc < ADC1_0) ? (__IO LPC_ADC0_Type*)(LPC_ADC0) : (__IO LPC_ADC0_Type*)(LPC_ADC1);
|
||||||
|
|
||||||
|
if (obj->adc >= ADC1_0)
|
||||||
|
channels = ((obj->adc - ADC1_0) & 0x1F);
|
||||||
|
else
|
||||||
|
channels = (obj->adc & 0x1F);
|
||||||
|
|
||||||
// select channel
|
// select channel
|
||||||
adc_reg->SEQA_CTRL &= ~(0xFFF);
|
adc_reg->SEQA_CTRL &= ~(0xFFF);
|
||||||
adc_reg->SEQA_CTRL |= (1UL << (obj->adc & 0x1F));
|
adc_reg->SEQA_CTRL |= (1UL << channels);
|
||||||
|
|
||||||
// start conversion and sequence enable
|
// start conversion and sequence enable
|
||||||
adc_reg->SEQA_CTRL |= ((1UL << 26) | (1UL << 31));
|
adc_reg->SEQA_CTRL |= ((1UL << 26) | (1UL << 31));
|
||||||
|
|
Loading…
Reference in New Issue