Refactor: move adc cleanup steps to seperate function and made adc handles global

Refs: #4
adc-init
rkcf 2023-02-21 05:40:34 -06:00
parent 3d7a783905
commit 1d2d1ce6bc
1 changed files with 20 additions and 20 deletions

View File

@ -16,33 +16,41 @@
/* ADC channels */ /* ADC channels */
static adc_channel_t channel[4] = {ADC_CHANNEL_3, ADC_CHANNEL_5, ADC_CHANNEL_8, ADC_CHANNEL_9}; static adc_channel_t channel[4] = {ADC_CHANNEL_3, ADC_CHANNEL_5, ADC_CHANNEL_8, ADC_CHANNEL_9};
/* ADC handles */
static adc_continuous_handle_t adc_handle;
static adc_cali_handle_t adc_cali_handle;
static const char *TAG = "EERG"; static const char *TAG = "EERG";
/* Deinitializes ADC handles */
static void adc_cleanup(void)
{
ESP_LOGI(TAG, "Cleaning up ADC");
ESP_ERROR_CHECK(adc_continuous_stop(adc_handle));
ESP_ERROR_CHECK(adc_continuous_deinit(adc_handle));
ESP_ERROR_CHECK(adc_cali_delete_scheme_curve_fitting(adc_cali_handle));
}
/* Initializes calibration driver of internal 12bit ADC */ /* Initializes calibration driver of internal 12bit ADC */
static void adc_cali_init(adc_cali_handle_t *handle) static void adc_cali_init(void)
{ {
ESP_LOGI(TAG, "Initializing ADC calibration driver"); ESP_LOGI(TAG, "Initializing ADC calibration driver");
adc_cali_handle_t cali_handle;
/* Create and apply calibration driver configuration */ /* Create and apply calibration driver configuration */
adc_cali_curve_fitting_config_t cali_config = { adc_cali_curve_fitting_config_t cali_config = {
.unit_id = ADC_UNIT_1, .unit_id = ADC_UNIT_1,
.atten = ADC_ATTEN_DB_0, .atten = ADC_ATTEN_DB_0,
.bitwidth = ADC_BITWIDTH_DEFAULT .bitwidth = ADC_BITWIDTH_DEFAULT
}; };
ESP_ERROR_CHECK(adc_cali_create_scheme_curve_fitting(&cali_config, &cali_handle)); ESP_ERROR_CHECK(adc_cali_create_scheme_curve_fitting(&cali_config, &adc_cali_handle));
/* Update caller's handle */
*handle = cali_handle;
} }
/* Initializes internal 12bit ADC */ /* Initializes internal 12bit ADC */
static void adc_cont_init(adc_continuous_handle_t *handle) static void adc_cont_init(void)
{ {
ESP_LOGI(TAG, "Initializing ADC continuous mode driver"); ESP_LOGI(TAG, "Initializing ADC continuous mode driver");
/* Create continuous mode driver handle */ /* Create continuous mode driver handle */
adc_continuous_handle_t adc_handle = NULL;
adc_continuous_handle_cfg_t adc_handle_config = { adc_continuous_handle_cfg_t adc_handle_config = {
.max_store_buf_size = 1024, .max_store_buf_size = 1024,
.conv_frame_size = 100 .conv_frame_size = 100
@ -67,26 +75,18 @@ static void adc_cont_init(adc_continuous_handle_t *handle)
} }
adc_config.adc_pattern = adc_pattern; adc_config.adc_pattern = adc_pattern;
ESP_ERROR_CHECK(adc_continuous_config(adc_handle, & adc_config)); ESP_ERROR_CHECK(adc_continuous_config(adc_handle, & adc_config));
/* Update caller's handle */
*handle = adc_handle;
} }
void app_main(void) void app_main(void)
{ {
/* Initialize internal ADC */ /* Initialize internal ADC */
adc_cali_handle_t adc_cali_handle = NULL;
adc_continuous_handle_t adc_handle = NULL;
/* Initialize calibration driver */ /* Initialize calibration driver */
adc_cali_init(&adc_cali_handle); adc_cali_init();
/* Initialize continuous driver */ /* Initialize continuous driver */
adc_cont_init(&adc_handle); adc_cont_init();
/* Start the continuous driver */ /* Start the continuous driver */
ESP_ERROR_CHECK(adc_continuous_start(adc_handle)); ESP_ERROR_CHECK(adc_continuous_start(adc_handle));
/* Cleanup adc */ /* Cleanup ADC */
ESP_ERROR_CHECK(adc_continuous_stop(adc_handle)); adc_cleanup();
ESP_ERROR_CHECK(adc_continuous_deinit(adc_handle));
ESP_ERROR_CHECK(adc_cali_delete_scheme_curve_fitting(adc_cali_handle));
} }