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 */
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";
/* 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 */
static void adc_cali_init(adc_cali_handle_t *handle)
static void adc_cali_init(void)
{
ESP_LOGI(TAG, "Initializing ADC calibration driver");
adc_cali_handle_t cali_handle;
/* Create and apply calibration driver configuration */
adc_cali_curve_fitting_config_t cali_config = {
.unit_id = ADC_UNIT_1,
.atten = ADC_ATTEN_DB_0,
.bitwidth = ADC_BITWIDTH_DEFAULT
};
ESP_ERROR_CHECK(adc_cali_create_scheme_curve_fitting(&cali_config, &cali_handle));
/* Update caller's handle */
*handle = cali_handle;
ESP_ERROR_CHECK(adc_cali_create_scheme_curve_fitting(&cali_config, &adc_cali_handle));
}
/* 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");
/* Create continuous mode driver handle */
adc_continuous_handle_t adc_handle = NULL;
adc_continuous_handle_cfg_t adc_handle_config = {
.max_store_buf_size = 1024,
.conv_frame_size = 100
@ -67,26 +75,18 @@ static void adc_cont_init(adc_continuous_handle_t *handle)
}
adc_config.adc_pattern = adc_pattern;
ESP_ERROR_CHECK(adc_continuous_config(adc_handle, & adc_config));
/* Update caller's handle */
*handle = adc_handle;
}
void app_main(void)
{
/* Initialize internal ADC */
adc_cali_handle_t adc_cali_handle = NULL;
adc_continuous_handle_t adc_handle = NULL;
/* Initialize calibration driver */
adc_cali_init(&adc_cali_handle);
adc_cali_init();
/* Initialize continuous driver */
adc_cont_init(&adc_handle);
adc_cont_init();
/* Start the continuous driver */
ESP_ERROR_CHECK(adc_continuous_start(adc_handle));
/* Cleanup 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));
/* Cleanup ADC */
adc_cleanup();
}