From 2a999e14e89c76f90a9527d4053876e64dec8530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20G=C3=BCnzel?= Date: Thu, 5 Sep 2024 09:58:59 +0200 Subject: [PATCH] sensors: reconfig adc for channel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some ADCs (e.g. SAM0) can only convert one channel at a time and therefore need to be reconfigured for every voltage divider prior to startin the conversion Signed-off-by: Patrick Günzel --- drivers/sensor/voltage_divider/voltage.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/sensor/voltage_divider/voltage.c b/drivers/sensor/voltage_divider/voltage.c index 090c879a54c..97d2523bd77 100644 --- a/drivers/sensor/voltage_divider/voltage.c +++ b/drivers/sensor/voltage_divider/voltage.c @@ -40,6 +40,14 @@ static int fetch(const struct device *dev, enum sensor_channel chan) /* Wait until sampling is valid */ k_sleep(data->earliest_sample); + /* configure the active channel to be converted */ + ret = adc_channel_setup_dt(&config->voltage.port); + if (ret != 0) { + LOG_ERR("adc_setup failed: %d", ret); + return ret; + } + + /* start conversion */ ret = adc_read(config->voltage.port.dev, &data->sequence); if (ret != 0) { LOG_ERR("adc_read: %d", ret);