88
99#include " ESP32AnalogRead.h"
1010
11+ #undef ADC_WIDTH_BIT_DEFAULT
12+ #define ADC_WIDTH_BIT_DEFAULT ((adc_bits_width_t ) ((int )ADC_WIDTH_MAX-1 ))
13+
1114ESP32AnalogRead::ESP32AnalogRead (int pinNum)
1215{
1316 if (!(pinNum < 0 ))
@@ -19,6 +22,7 @@ void ESP32AnalogRead::attach(int pin)
1922{
2023 myPin = pin;
2124 channel = (adc_channel_t )digitalPinToAnalogChannel (myPin);
25+
2226 attached = true ;
2327}
2428
@@ -56,15 +60,15 @@ float ESP32AnalogRead::readVoltage()
5660 */
5761uint32_t ESP32AnalogRead::readMiliVolts ()
5862{
59- #if defined(CONFIG_IDF_TARGET_ESP32S2)
63+ #if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
6064 if (!attached)
6165 return 0 ;
6266 analogRead (myPin);
6367 // Configure ADC
6468 adc_unit_t unit;
6569 if (myPin < 11 )
6670 {
67- adc1_config_width (ADC_WIDTH_BIT_13 );
71+ adc1_config_width (ADC_WIDTH_BIT_DEFAULT );
6872 adc1_channel_t chan = ADC1_CHANNEL_0;
6973 unit = ADC_UNIT_1;
7074 switch (myPin)
@@ -144,12 +148,13 @@ uint32_t ESP32AnalogRead::readMiliVolts()
144148 adc2_channel = chan;
145149 adc2_config_channel_atten (chan, ADC_ATTEN_11db);
146150 }
151+
147152 // Calculate ADC characteristics i.e. gain and offset factors
148153#ifdef ESP_IDF_VERSION
149154#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(3, 1, 0)
150155 esp_adc_cal_characterize (unit,
151156 ADC_ATTEN_DB_11,
152- ADC_WIDTH_BIT_13 ,
157+ ADC_WIDTH_BIT_DEFAULT ,
153158 V_REF,
154159 &characteristics);
155160#else
@@ -167,7 +172,7 @@ uint32_t ESP32AnalogRead::readMiliVolts()
167172 }
168173 else
169174 {
170- adc2_get_raw (adc2_channel, ADC_WIDTH_BIT_13 , &raw);
175+ adc2_get_raw (adc2_channel, ADC_WIDTH_BIT_DEFAULT , &raw);
171176 }
172177 voltage = esp_adc_cal_raw_to_voltage (raw, &characteristics);
173178 return voltage;
@@ -361,15 +366,15 @@ uint32_t ESP32AnalogRead::readMiliVolts()
361366
362367uint16_t ESP32AnalogRead::readRaw ()
363368{
364- #if defined(CONFIG_IDF_TARGET_ESP32S2)
369+ #if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
365370 if (!attached)
366371 return 0 ;
367372 analogRead (myPin);
368373 // Configure ADC
369374 adc_unit_t unit;
370375 if (myPin < 11 )
371376 {
372- adc1_config_width (ADC_WIDTH_BIT_13 );
377+ adc1_config_width (ADC_WIDTH_BIT_DEFAULT );
373378 adc1_channel_t chan = ADC1_CHANNEL_0;
374379 unit = ADC_UNIT_1;
375380 switch (myPin)
@@ -454,7 +459,7 @@ uint16_t ESP32AnalogRead::readRaw()
454459#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(3, 1, 0)
455460 esp_adc_cal_characterize (unit,
456461 ADC_ATTEN_DB_11,
457- ADC_WIDTH_BIT_13 ,
462+ ADC_WIDTH_BIT_DEFAULT ,
458463 V_REF,
459464 &characteristics);
460465#else
@@ -472,7 +477,7 @@ uint16_t ESP32AnalogRead::readRaw()
472477 }
473478 else
474479 {
475- adc2_get_raw (adc2_channel, ADC_WIDTH_BIT_13 , &raw);
480+ adc2_get_raw (adc2_channel, ADC_WIDTH_BIT_DEFAULT , &raw);
476481 }
477482 return raw;
478483#elif defined(CONFIG_IDF_TARGET_ESP32)
0 commit comments