Skip to content

Commit a9bd39d

Browse files
authored
Fix pin attenuation being overwritten (#5399)
Fixes: #5041
1 parent 5eda278 commit a9bd39d

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

cores/esp32/esp32-hal-adc.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ static uint8_t __analogVRefPin = 0;
4848
static uint8_t __analogAttenuation = 3;//11db
4949
static uint8_t __analogWidth = 3;//12 bits
5050
static uint8_t __analogClockDiv = 1;
51+
static adc_attenuation_t __pin_attenuation[SOC_GPIO_PIN_COUNT];
5152

5253
void __analogSetClockDiv(uint8_t clockDiv){
5354
if(!clockDiv){
@@ -86,6 +87,9 @@ void __analogInit(){
8687
#if CONFIG_IDF_TARGET_ESP32
8788
__analogSetWidth(__analogWidth + 9);//in bits
8889
#endif
90+
for(int i=0; i<SOC_GPIO_PIN_COUNT; i++){
91+
__pin_attenuation[i] = ADC_ATTENDB_MAX;
92+
}
8993
}
9094

9195
void __analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation)
@@ -100,6 +104,7 @@ void __analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation)
100104
adc1_config_channel_atten(channel, attenuation);
101105
}
102106
__analogInit();
107+
__pin_attenuation[pin] = attenuation;
103108
}
104109

105110
bool __adcAttachPin(uint8_t pin){
@@ -129,7 +134,7 @@ bool __adcAttachPin(uint8_t pin){
129134
#endif
130135

131136
pinMode(pin, ANALOG);
132-
__analogSetPinAttenuation(pin, __analogAttenuation);
137+
__analogSetPinAttenuation(pin, (__pin_attenuation[pin] != ADC_ATTENDB_MAX)?__pin_attenuation[pin]:__analogAttenuation);
133138
return true;
134139
}
135140

cores/esp32/esp32-hal-adc.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ typedef enum {
3030
ADC_0db,
3131
ADC_2_5db,
3232
ADC_6db,
33-
ADC_11db
33+
ADC_11db,
34+
ADC_ATTENDB_MAX
3435
} adc_attenuation_t;
3536

3637
/*

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy