diff --git a/drivers/adc/adc_sam0.c b/drivers/adc/adc_sam0.c index 014692d96b493..e664f2e50c0dc 100644 --- a/drivers/adc/adc_sam0.c +++ b/drivers/adc/adc_sam0.c @@ -392,7 +392,8 @@ static int start_read(const struct device *dev, wait_synchronization(adc); - if (sequence->channels != 1U) { + if ((sequence->channels == 0) || + ((sequence->channels & (sequence->channels - 1)) != 0)) { LOG_ERR("Channel scanning is not supported"); return -ENOTSUP; } diff --git a/samples/drivers/adc/boards/arduino_zero.overlay b/samples/drivers/adc/boards/arduino_zero.overlay new file mode 100644 index 0000000000000..c3b7012755ea0 --- /dev/null +++ b/samples/drivers/adc/boards/arduino_zero.overlay @@ -0,0 +1,16 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2022 Kim Bøndergaard + */ + +/ { + zephyr,user { + /* J106.6 (A5) aka D21G18, pin PB02_AIN10 */ + io-channels = <&adc 10>; + }; +}; + +&adc { + status = "okay"; +}; diff --git a/samples/drivers/adc/src/main.c b/samples/drivers/adc/src/main.c index 338f892eed84a..76b554c793de8 100644 --- a/samples/drivers/adc/src/main.c +++ b/samples/drivers/adc/src/main.c @@ -49,7 +49,11 @@ struct adc_channel_cfg channel_cfg = { .acquisition_time = ADC_ACQUISITION_TIME, /* channel ID will be overwritten below */ .channel_id = 0, - .differential = 0 + .differential = 0, +#ifdef CONFIG_ADC_CONFIGURABLE_INPUTS + .input_negative = 0, + .input_positive = 0, +#endif }; struct adc_sequence sequence = { @@ -80,6 +84,9 @@ void main(void) channel_cfg.input_positive = SAADC_CH_PSELP_PSELP_AnalogInput0 + channel_ids[i]; #endif +#ifdef CONFIG_ADC_CONFIGURABLE_INPUTS + channel_cfg.input_positive = channel_ids[i]; +#endif adc_channel_setup(dev_adc, &channel_cfg);