diff options
Diffstat (limited to 'EZADC.c')
| -rw-r--r-- | EZADC.c | 46 |
1 files changed, 46 insertions, 0 deletions
@@ -0,0 +1,46 @@ +#include "EZADC.h" + +void init_adc(ADC* adc) +{ + // Only use unit 1, as unit 2 is going to be deprecated. + // And it does not work while using the Wi-Fi module. + adc->adc_init_config.unit_id = ADC_UNIT_1; + + ESP_ERROR_CHECK(adc_oneshot_new_unit(&(adc->adc_init_config), &(adc->adc_handle))); +} + +void config_adc(ADC* adc, int config_channel) +{ + adc->adc_config.atten = ADC_ATTEN_DB_12; + adc->adc_config.bitwidth = ADC_BITWIDTH_DEFAULT; + + adc->channel = ezadc_channel[config_channel]; + + ESP_ERROR_CHECK(adc_oneshot_config_channel(adc->adc_handle, adc->channel, &(adc->adc_config))); + + adc->adc_cali_handle = NULL; + adc->cali_config.unit_id = ADC_UNIT_1; + adc->cali_config.atten = ADC_ATTEN_DB_12; + adc->cali_config.bitwidth = ADC_BITWIDTH_DEFAULT; + + ESP_ERROR_CHECK(adc_cali_create_scheme_line_fitting(&(adc->cali_config), &(adc->adc_cali_handle))); +} + +void teardown_adc(ADC* adc) +{ + ESP_ERROR_CHECK(adc_oneshot_del_unit(adc->adc_handle)); + ESP_ERROR_CHECK(adc_cali_delete_scheme_line_fitting(adc->adc_cali_handle)); +} + +int ez_read(ADC* adc)//, int adc_raw[2][10], int voltage[2][10]) +{ + char* TAG = "ez_read"; + + ESP_ERROR_CHECK(adc_oneshot_read(adc->adc_handle, adc->channel, &adc_raw[0][0])); + ESP_LOGI(TAG, "ADC%d Channel[%d] Raw data: %d", adc->adc_init_config.unit_id + 1, adc->channel, adc_raw[0][0]); + + ESP_ERROR_CHECK(adc_cali_raw_to_voltage(adc->adc_cali_handle, adc_raw[0][0], &voltage[0][0])); + ESP_LOGI(TAG, "ADC%d Channel[%d] Voltage: %d", adc->adc_init_config.unit_id + 1, adc->channel, voltage[0][0]); + + return voltage[0][0]; +} |
