mirror of
https://github.com/espressif/arduino-esp32
synced 2024-09-21 10:28:04 +00:00
Fix ADC detach bus calibration handle error when not existing. (#8932)
* Add check if adc calibration habdle exists before deleting * check also on adc continous detach
This commit is contained in:
parent
57e8e50e1a
commit
b01775ed17
@ -69,17 +69,19 @@ static bool adcDetachBus(void * pin){
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
adc_handle[adc_unit].adc_oneshot_handle = NULL;
|
adc_handle[adc_unit].adc_oneshot_handle = NULL;
|
||||||
|
if(adc_handle[adc_unit].adc_cali_handle != NULL){
|
||||||
#if ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
|
#if ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
|
||||||
err = adc_cali_delete_scheme_curve_fitting(adc_handle[adc_unit].adc_cali_handle);
|
err = adc_cali_delete_scheme_curve_fitting(adc_handle[adc_unit].adc_cali_handle);
|
||||||
if(err != ESP_OK){
|
if(err != ESP_OK){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#elif !defined(CONFIG_IDF_TARGET_ESP32H2)
|
#elif !defined(CONFIG_IDF_TARGET_ESP32H2)
|
||||||
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
|
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
|
||||||
if(err != ESP_OK){
|
if(err != ESP_OK){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
adc_handle[adc_unit].adc_cali_handle = NULL;
|
adc_handle[adc_unit].adc_cali_handle = NULL;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -220,6 +222,7 @@ esp_err_t __analogInit(uint8_t pin, adc_channel_t channel, adc_unit_t adc_unit){
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
perimanSetBusDeinit(ESP32_BUS_TYPE_ADC_ONESHOT, adcDetachBus);
|
||||||
|
|
||||||
if(!perimanSetPinBus(pin, ESP32_BUS_TYPE_ADC_ONESHOT, (void *)(pin+1), adc_unit, channel)){
|
if(!perimanSetPinBus(pin, ESP32_BUS_TYPE_ADC_ONESHOT, (void *)(pin+1), adc_unit, channel)){
|
||||||
adcDetachBus((void *)(pin+1));
|
adcDetachBus((void *)(pin+1));
|
||||||
@ -236,7 +239,6 @@ esp_err_t __analogInit(uint8_t pin, adc_channel_t channel, adc_unit_t adc_unit){
|
|||||||
log_e("adc_oneshot_config_channel failed with error: %d", err);
|
log_e("adc_oneshot_config_channel failed with error: %d", err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
perimanSetBusDeinit(ESP32_BUS_TYPE_ADC_ONESHOT, adcDetachBus);
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,18 +379,19 @@ static bool adcContinuousDetachBus(void * adc_unit_number){
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
adc_handle[adc_unit].adc_continuous_handle = NULL;
|
adc_handle[adc_unit].adc_continuous_handle = NULL;
|
||||||
|
if(adc_handle[adc_unit].adc_cali_handle != NULL){
|
||||||
#if ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
|
#if ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
|
||||||
err = adc_cali_delete_scheme_curve_fitting(adc_handle[adc_unit].adc_cali_handle);
|
err = adc_cali_delete_scheme_curve_fitting(adc_handle[adc_unit].adc_cali_handle);
|
||||||
if(err != ESP_OK){
|
if(err != ESP_OK){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#elif !defined(CONFIG_IDF_TARGET_ESP32H2)
|
#elif !defined(CONFIG_IDF_TARGET_ESP32H2)
|
||||||
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
|
err = adc_cali_delete_scheme_line_fitting(adc_handle[adc_unit].adc_cali_handle);
|
||||||
if(err != ESP_OK){
|
if(err != ESP_OK){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
adc_handle[adc_unit].adc_cali_handle = NULL;
|
adc_handle[adc_unit].adc_cali_handle = NULL;
|
||||||
|
|
||||||
//set all used pins to INIT state
|
//set all used pins to INIT state
|
||||||
|
Loading…
Reference in New Issue
Block a user