From 5fd737925fc766a66e228da6e1bf33b32e0edee0 Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Wed, 11 Aug 2021 13:05:26 +0300 Subject: [PATCH] Fix wrong attenuation being set to pins (#5522) Fixes: https://github.com/espressif/arduino-esp32/issues/5503 --- cores/esp32/esp32-hal-adc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cores/esp32/esp32-hal-adc.c b/cores/esp32/esp32-hal-adc.c index 1af3ce3a..0530f1d8 100644 --- a/cores/esp32/esp32-hal-adc.c +++ b/cores/esp32/esp32-hal-adc.c @@ -104,7 +104,9 @@ void __analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation) adc1_config_channel_atten(channel, attenuation); } __analogInit(); - __pin_attenuation[pin] = attenuation; + if((__pin_attenuation[pin] != ADC_ATTENDB_MAX) || (attenuation != __analogAttenuation)){ + __pin_attenuation[pin] = attenuation; + } } bool __adcAttachPin(uint8_t pin){ @@ -113,6 +115,7 @@ bool __adcAttachPin(uint8_t pin){ log_e("Pin %u is not ADC pin!", pin); return false; } + __analogInit(); int8_t pad = digitalPinToTouchChannel(pin); if(pad >= 0){ #if CONFIG_IDF_TARGET_ESP32