Skip to content

Commit e92567e

Browse files
committed
bugfix for #295 and #320 + added #346
1 parent 2200504 commit e92567e

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/current_sense/hardware_specific/esp32/esp32s_adc_driver.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ void __analogSetPinAttenuation(uint8_t pin, uint8_t attenuation)
111111
return ;
112112
}
113113
__analogInit();
114-
if(channel > 7){
114+
if(channel > 9){
115115
SET_PERI_REG_BITS(SENS_SAR_ATTEN2_REG, 3, attenuation, ((channel - 10) * 2));
116116
} else {
117117
SET_PERI_REG_BITS(SENS_SAR_ATTEN1_REG, 3, attenuation, (channel * 2));
@@ -152,9 +152,8 @@ bool IRAM_ATTR __adcStart(uint8_t pin){
152152
}
153153

154154
if(channel > 9){
155-
channel -= 10;
156155
CLEAR_PERI_REG_MASK(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_START_SAR_M);
157-
SET_PERI_REG_BITS(SENS_SAR_MEAS2_CTRL2_REG, SENS_SAR2_EN_PAD, (1 << channel), SENS_SAR2_EN_PAD_S);
156+
SET_PERI_REG_BITS(SENS_SAR_MEAS2_CTRL2_REG, SENS_SAR2_EN_PAD, (1 << (channel - 10)), SENS_SAR2_EN_PAD_S);
158157
SET_PERI_REG_MASK(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_START_SAR_M);
159158
} else {
160159
CLEAR_PERI_REG_MASK(SENS_SAR_MEAS1_CTRL2_REG, SENS_MEAS1_START_SAR_M);
@@ -171,7 +170,7 @@ bool IRAM_ATTR __adcBusy(uint8_t pin){
171170
return false;//not adc pin
172171
}
173172

174-
if(channel > 7){
173+
if(channel > 9){
175174
return (GET_PERI_REG_MASK(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_DONE_SAR) == 0);
176175
}
177176
return (GET_PERI_REG_MASK(SENS_SAR_MEAS1_CTRL2_REG, SENS_MEAS1_DONE_SAR) == 0);
@@ -185,7 +184,7 @@ uint16_t IRAM_ATTR __adcEnd(uint8_t pin)
185184
if(channel < 0){
186185
return 0;//not adc pin
187186
}
188-
if(channel > 7){
187+
if(channel > 9){
189188
while (GET_PERI_REG_MASK(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_DONE_SAR) == 0); //wait for conversion
190189
value = GET_PERI_REG_BITS2(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_DATA_SAR, SENS_MEAS2_DATA_SAR_S);
191190
} else {
@@ -223,9 +222,8 @@ uint16_t IRAM_ATTR adcRead(uint8_t pin)
223222
__analogInit();
224223

225224
if(channel > 9){
226-
channel -= 10;
227225
CLEAR_PERI_REG_MASK(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_START_SAR_M);
228-
SET_PERI_REG_BITS(SENS_SAR_MEAS2_CTRL2_REG, SENS_SAR2_EN_PAD, (1 << channel), SENS_SAR2_EN_PAD_S);
226+
SET_PERI_REG_BITS(SENS_SAR_MEAS2_CTRL2_REG, SENS_SAR2_EN_PAD,(1 << (channel - 10)), SENS_SAR2_EN_PAD_S);
229227
SET_PERI_REG_MASK(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_START_SAR_M);
230228
} else {
231229
CLEAR_PERI_REG_MASK(SENS_SAR_MEAS1_CTRL2_REG, SENS_MEAS1_START_SAR_M);
@@ -235,7 +233,7 @@ uint16_t IRAM_ATTR adcRead(uint8_t pin)
235233

236234
uint16_t value = 0;
237235

238-
if(channel > 7){
236+
if(channel > 9){
239237
while (GET_PERI_REG_MASK(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_DONE_SAR) == 0); //wait for conversion
240238
value = GET_PERI_REG_BITS2(SENS_SAR_MEAS2_CTRL2_REG, SENS_MEAS2_DATA_SAR, SENS_MEAS2_DATA_SAR_S);
241239
} else {

0 commit comments

Comments
 (0)