Tue, 26 Sep 2023 14:49:49 +0200
Migrated ADC converter to isp-idf v5.1
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1 | /** |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
2 | * @file task_adc.c |
41
d327e0aff62f
Updated doxygen comments. Removed some development debug logs. Increased user inactivity time to 4 minutes. More Dutch translations in the OTA update screens.
Michiel Broek <mbroek@mbse.eu>
parents:
37
diff
changeset
|
3 | * @brief The FreeRTOS task to query the pressure sensors connected to ADC inputs. |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
4 | * The task will update the ADC_State structure. |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
5 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
6 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
7 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
8 | #include "config.h" |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
9 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
10 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
11 | #define DEFAULT_VREF 1093 ///< Use adc2_vref_to_gpio() to obtain a better estimate |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
12 | #define NO_OF_SAMPLES 128 ///< Multisampling |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
13 | |
44
e52d11b8f252
Removed dead code. Added more doxygen documentation.
Michiel Broek <mbroek@mbse.eu>
parents:
41
diff
changeset
|
14 | #define PRESSURE_1 (CONFIG_PRESSURE_1) ///< ADC channel pressure sensor 1 |
e52d11b8f252
Removed dead code. Added more doxygen documentation.
Michiel Broek <mbroek@mbse.eu>
parents:
41
diff
changeset
|
15 | #define PRESSURE_2 (CONFIG_PRESSURE_2) ///< ADC channel pressure sensor 2 |
e52d11b8f252
Removed dead code. Added more doxygen documentation.
Michiel Broek <mbroek@mbse.eu>
parents:
41
diff
changeset
|
16 | #define PRESSURE_3 (CONFIG_PRESSURE_3) ///< ADC channel pressure sensor 3 |
e52d11b8f252
Removed dead code. Added more doxygen documentation.
Michiel Broek <mbroek@mbse.eu>
parents:
41
diff
changeset
|
17 | #define BATT_CHANNEL (CONFIG_BATT_CHANNEL) ///< ADC channel half battery voltage |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
18 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
19 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
20 | static const char *TAG = "task_adc"; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
21 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
22 | SemaphoreHandle_t xSemaphoreADC = NULL; ///< Semaphire ADC task |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
23 | EventGroupHandle_t xEventGroupADC; ///< Events ADC task |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
24 | ADC_State *adc_state; ///< Public state for other tasks |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
25 | bool do_calibration = false; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
26 | |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
27 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
28 | const int TASK_ADC_REQUEST_PRESSURE = BIT0; ///< Request temperature measurements |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
29 | const int TASK_ADC_REQUEST_DONE = BIT1; ///< Request is completed |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
30 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
31 | |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
32 | static bool adc_calibration_init(adc_unit_t unit, adc_atten_t atten, adc_cali_handle_t *out_handle); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
33 | static void adc_calibration_deinit(adc_cali_handle_t handle); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
34 | |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
35 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
36 | void request_adc(void) |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
37 | { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
38 | xEventGroupClearBits(xEventGroupADC, TASK_ADC_REQUEST_DONE); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
39 | xEventGroupSetBits(xEventGroupADC, TASK_ADC_REQUEST_PRESSURE); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
40 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
41 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
42 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
43 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
44 | bool ready_adc(void) |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
45 | { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
46 | if (xEventGroupGetBits(xEventGroupADC) & TASK_ADC_REQUEST_DONE) |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
47 | return true; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
48 | return false; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
49 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
50 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
51 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
52 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
53 | /* |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
54 | * Task to read pressure sensors and battery voltage on request. |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
55 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
56 | void task_adc(void *pvParameter) |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
57 | { |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
58 | adc_cali_handle_t adc1_cali_handle = NULL; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
59 | adc_unit_t channel; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
60 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
61 | adc_oneshot_chan_cfg_t config_adc = { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
62 | .bitwidth = ADC_BITWIDTH_DEFAULT, |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
63 | .atten = ADC_ATTEN_DB_0, |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
64 | }; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
65 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
66 | ESP_LOGI(TAG, "Starting task ADC sensors"); |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
67 | |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
68 | adc_state = malloc(sizeof(ADC_State)); |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
69 | for (int i = 0; i < 3; i++) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
70 | adc_state->Pressure[i].valid = false; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
71 | adc_state->Pressure[i].atten = ADC_ATTEN_DB_0; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
72 | adc_state->Pressure[i].voltage = 0; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
73 | adc_state->Pressure[i].error = ADC_ERR_NONE; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
74 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
75 | adc_state->Pressure[0].channel = PRESSURE_1; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
76 | adc_state->Pressure[1].channel = PRESSURE_2; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
77 | adc_state->Pressure[2].channel = PRESSURE_3; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
78 | adc_state->Batt_voltage = 0; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
79 | adc_state->Batt_error = ADC_ERR_NONE; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
80 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
81 | /* event handler and event group for this task */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
82 | xEventGroupADC = xEventGroupCreate(); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
83 | EventBits_t uxBits; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
84 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
85 | /* |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
86 | * Task loop forever. |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
87 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
88 | while (1) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
89 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
90 | uxBits = xEventGroupWaitBits(xEventGroupADC, TASK_ADC_REQUEST_PRESSURE, pdFALSE, pdFALSE, portMAX_DELAY ); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
91 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
92 | if (uxBits & TASK_ADC_REQUEST_PRESSURE) { |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
93 | |
37
358bbd5b608e
menuconfig settings now work for I2C display setup. Lot's of code cleanup.
Michiel Broek <mbroek@mbse.eu>
parents:
12
diff
changeset
|
94 | ESP_LOGD(TAG, "Requested ADC readings"); |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
95 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
96 | int adc_reading, raw, tmp, voltage; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
97 | adc_atten_t atten = ADC_ATTEN_DB_0; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
98 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
99 | adc_oneshot_unit_handle_t adc1_handle; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
100 | adc_oneshot_unit_init_cfg_t init_config1 = { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
101 | .unit_id = ADC_UNIT_1, |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
102 | }; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
103 | |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
104 | for (int i = 0; i < 3; i++) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
105 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
106 | ESP_ERROR_CHECK(adc_oneshot_new_unit(&init_config1, &adc1_handle)); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
107 | atten = config_adc.atten = ADC_ATTEN_DB_0, |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
108 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
109 | channel = adc_state->Pressure[i].channel; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
110 | ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, channel, &config_adc)); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
111 | adc_reading = 0; |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
112 | |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
113 | /* |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
114 | * Autoranging the ADC conversion |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
115 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
116 | while (1) { |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
117 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
118 | config_adc.bitwidth = ADC_BITWIDTH_DEFAULT; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
119 | config_adc.atten = atten; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
120 | adc_oneshot_config_channel(adc1_handle, channel, &config_adc); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
121 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
122 | ESP_ERROR_CHECK(adc_oneshot_read(adc1_handle, channel, &raw)); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
123 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
124 | // ESP_LOGI(TAG, "bottle %d channel %d raw %d atten %d", i, channel, raw, atten); |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
125 | if (atten == ADC_ATTEN_DB_0 && raw > 3700) |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
126 | atten = ADC_ATTEN_DB_2_5; |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
127 | else if (atten == ADC_ATTEN_DB_2_5 && raw > 3700) |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
128 | atten = ADC_ATTEN_DB_6; |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
129 | else if (atten == ADC_ATTEN_DB_6 && raw > 3700) |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
130 | atten = ADC_ATTEN_DB_11; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
131 | else |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
132 | break; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
133 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
134 | |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
135 | /* |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
136 | * Now that he have the best attenuation, multisample the real value. |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
137 | */ |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
138 | for (int j = 0; j < NO_OF_SAMPLES; j++) { |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
139 | if (adc_oneshot_read(adc1_handle, channel, &tmp) == ESP_OK) { |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
140 | adc_reading += tmp; |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
141 | } else { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
142 | adc_reading = -1; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
143 | break; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
144 | } |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
145 | } |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
146 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
147 | adc1_cali_handle = NULL; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
148 | do_calibration = adc_calibration_init(ADC_UNIT_1, atten, &adc1_cali_handle); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
149 | |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
150 | if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) { |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
151 | if (adc_reading < 0) { |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
152 | adc_state->Pressure[i].error = ADC_ERR_READ; |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
153 | adc_state->Pressure[i].voltage = 0; |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
154 | } else { |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
155 | adc_reading /= NO_OF_SAMPLES; |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
156 | adc_cali_raw_to_voltage(adc1_cali_handle, adc_reading, &voltage); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
157 | adc_state->Pressure[i].voltage = voltage; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
158 | //adc_state->Pressure[i].voltage = esp_adc_cal_raw_to_voltage(adc_reading, adc_chars); // voltage in mV |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
159 | // ESP_LOGI(TAG, "Voltage %d %d", i, voltage); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
160 | adc_state->Pressure[i].error = ADC_ERR_NONE; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
161 | } |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
162 | xSemaphoreGive(xSemaphoreADC); |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
163 | } else { |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
164 | ESP_LOGE(TAG, "Missed lock 1"); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
165 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
166 | ESP_LOGI(TAG, "Pressure %d raw: %4d, atten: %d, %.3f volt, error: %d", |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
167 | i, adc_reading, atten, (adc_state->Pressure[i].voltage / 1000.0), adc_state->Pressure[i].error); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
168 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
169 | //Tear Down |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
170 | ESP_ERROR_CHECK(adc_oneshot_del_unit(adc1_handle)); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
171 | if (do_calibration) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
172 | adc_calibration_deinit(adc1_cali_handle); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
173 | } |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
174 | do_calibration = false; |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
175 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
176 | |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
177 | /* |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
178 | * Read VDD by reading 1/2 VDD from a precision ladder. |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
179 | */ |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
180 | adc_reading = 0; |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
181 | atten = ADC_ATTEN_DB_6; // Don't use DB_11, it has a bad linearity. |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
182 | adc1_cali_handle = NULL; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
183 | channel = (adc_unit_t)BATT_CHANNEL; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
184 | ESP_ERROR_CHECK(adc_oneshot_new_unit(&init_config1, &adc1_handle)); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
185 | do_calibration = adc_calibration_init(ADC_UNIT_1, atten, &adc1_cali_handle); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
186 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
187 | config_adc.bitwidth = ADC_BITWIDTH_DEFAULT; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
188 | config_adc.atten = atten; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
189 | adc_oneshot_config_channel(adc1_handle, (adc_unit_t)BATT_CHANNEL, &config_adc); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
190 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
191 | ESP_ERROR_CHECK(adc_oneshot_read(adc1_handle, (adc_unit_t)BATT_CHANNEL, &raw)); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
192 | |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
193 | for (int j = 0; j < NO_OF_SAMPLES; j++) { |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
194 | if (adc_oneshot_read(adc1_handle, channel, &tmp) == ESP_OK) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
195 | adc_reading += tmp; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
196 | } else { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
197 | adc_reading = -1; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
198 | break; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
199 | } |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
200 | } |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
201 | if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) { |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
202 | if (adc_reading < 0) { |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
203 | adc_state->Batt_voltage = 3.3; |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
204 | adc_state->Batt_error = ADC_ERR_READ; |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
205 | } else { |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
206 | adc_reading /= NO_OF_SAMPLES; |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
207 | adc_cali_raw_to_voltage(adc1_cali_handle, adc_reading, &voltage); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
208 | /* Multiply by 2, measured on a ladder. */ |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
209 | adc_state->Batt_voltage = voltage * 2; // Chip supply voltage in mV |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
210 | adc_state->Batt_error = ADC_ERR_NONE; |
12
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
211 | } |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
212 | xSemaphoreGive(xSemaphoreADC); |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
213 | } else { |
7dc9003f86a8
ADC1 source code cleanup. Switched to 12 bit resolution again. Multisample set to 128. Improved adc-state structure locking. Improved ADC read error detection. DS18B20 extra error logging. MQTT better publish counter locking.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
214 | ESP_LOGE(TAG, "Missed lock 2"); |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
215 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
216 | |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
217 | ESP_ERROR_CHECK(adc_oneshot_del_unit(adc1_handle)); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
218 | if (do_calibration) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
219 | adc_calibration_deinit(adc1_cali_handle); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
220 | } |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
221 | do_calibration = false; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
222 | |
0
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
223 | xEventGroupClearBits(xEventGroupADC, TASK_ADC_REQUEST_PRESSURE); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
224 | xEventGroupSetBits(xEventGroupADC, TASK_ADC_REQUEST_DONE); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
225 | #if 1 |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
226 | ESP_LOGI(TAG, "Battery raw: %4d, atten: %d %.3f volt, error: %d", adc_reading, atten, adc_state->Batt_voltage / 1000.0, adc_state->Batt_error); |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
227 | #endif |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
228 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
229 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
230 | } |
88d965579617
Initial import of the CO2 meter application.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
231 | |
68
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
232 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
233 | /*--------------------------------------------------------------- |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
234 | ADC Calibration |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
235 | ---------------------------------------------------------------*/ |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
236 | static bool adc_calibration_init(adc_unit_t unit, adc_atten_t atten, adc_cali_handle_t *out_handle) |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
237 | { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
238 | adc_cali_handle_t handle = NULL; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
239 | esp_err_t ret = ESP_FAIL; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
240 | bool calibrated = false; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
241 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
242 | if (!calibrated) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
243 | adc_cali_line_fitting_config_t cali_config = { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
244 | .unit_id = unit, |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
245 | .atten = atten, |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
246 | .bitwidth = ADC_BITWIDTH_DEFAULT, |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
247 | }; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
248 | ret = adc_cali_create_scheme_line_fitting(&cali_config, &handle); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
249 | if (ret == ESP_OK) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
250 | calibrated = true; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
251 | } |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
252 | } |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
253 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
254 | *out_handle = handle; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
255 | if (ret == ESP_ERR_NOT_SUPPORTED || !calibrated) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
256 | ESP_LOGW(TAG, "eFuse not burnt, skip software calibration"); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
257 | } else if (ret != ESP_OK) { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
258 | ESP_LOGE(TAG, "Invalid arg or no memory"); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
259 | } |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
260 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
261 | return calibrated; |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
262 | } |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
263 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
264 | |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
265 | static void adc_calibration_deinit(adc_cali_handle_t handle) |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
266 | { |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
267 | ESP_ERROR_CHECK(adc_cali_delete_scheme_line_fitting(handle)); |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
268 | } |
121b3fa6b806
Migrated ADC converter to isp-idf v5.1
Michiel Broek <mbroek@mbse.eu>
parents:
44
diff
changeset
|
269 |