diff --git a/cpu/sam0_common/include/periph_cpu_common.h b/cpu/sam0_common/include/periph_cpu_common.h index 0ad0faa1f8..a38147b282 100644 --- a/cpu/sam0_common/include/periph_cpu_common.h +++ b/cpu/sam0_common/include/periph_cpu_common.h @@ -772,8 +772,7 @@ static inline bool cpu_woke_from_backup(void) * @brief ADC Channel Configuration */ typedef struct { - gpio_t pin; /**< ADC channel pin */ - uint32_t muxpos; /**< ADC channel pin multiplexer value */ + uint32_t inputctrl; /**< ADC channel pin multiplexer value */ #ifdef ADC0 Adc *dev; /**< ADC device descriptor */ #endif diff --git a/cpu/sam0_common/periph/adc.c b/cpu/sam0_common/periph/adc.c index 69193aa6c9..81f3a03215 100644 --- a/cpu/sam0_common/periph/adc.c +++ b/cpu/sam0_common/periph/adc.c @@ -264,9 +264,9 @@ int adc_init(adc_t line) _prep(); - uint8_t muxpos = (adc_channels[line].muxpos & ADC_INPUTCTRL_MUXPOS_Msk) + uint8_t muxpos = (adc_channels[line].inputctrl & ADC_INPUTCTRL_MUXPOS_Msk) >> ADC_INPUTCTRL_MUXPOS_Pos; - uint8_t muxneg = (adc_channels[line].muxpos & ADC_INPUTCTRL_MUXNEG_Msk) + uint8_t muxneg = (adc_channels[line].inputctrl & ADC_INPUTCTRL_MUXNEG_Msk) >> ADC_INPUTCTRL_MUXNEG_Pos; /* configure positive input pin */ @@ -277,7 +277,7 @@ int adc_init(adc_t line) } /* configure negative input pin */ - if (adc_channels[line].muxpos & ADC_INPUTCTRL_DIFFMODE) { + if (adc_channels[line].inputctrl & ADC_INPUTCTRL_DIFFMODE) { assert(muxneg < ARRAY_SIZE(sam0_adc_pins[adc])); gpio_init(sam0_adc_pins[adc][muxneg], GPIO_IN); gpio_init_mux(sam0_adc_pins[adc][muxneg], GPIO_MUX_B); @@ -302,7 +302,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) Adc *dev = ADC; #endif - bool diffmode = adc_channels[line].muxpos & ADC_INPUTCTRL_DIFFMODE; + bool diffmode = adc_channels[line].inputctrl & ADC_INPUTCTRL_DIFFMODE; _prep(); @@ -313,7 +313,7 @@ int32_t adc_sample(adc_t line, adc_res_t res) } dev->INPUTCTRL.reg = ADC_GAIN_FACTOR_DEFAULT - | adc_channels[line].muxpos + | adc_channels[line].inputctrl | (diffmode ? 0 : ADC_NEG_INPUT); #ifdef ADC_CTRLB_DIFFMODE dev->CTRLB.bit.DIFFMODE = diffmode;