main/co2meter.c

changeset 24
64078aa15512
parent 23
58a328e91881
child 26
8a3696620c0a
equal deleted inserted replaced
23:58a328e91881 24:64078aa15512
153 */ 153 */
154 xSemaphoreDS18B20 = xSemaphoreCreateMutex(); 154 xSemaphoreDS18B20 = xSemaphoreCreateMutex();
155 xSemaphoreADC = xSemaphoreCreateMutex(); 155 xSemaphoreADC = xSemaphoreCreateMutex();
156 xSemaphoreUnits = xSemaphoreCreateMutex(); 156 xSemaphoreUnits = xSemaphoreCreateMutex();
157 157
158 xTaskCreate(&task_user, "task_user", 2048, NULL,10, &xTaskUser); 158 xTaskCreate(&task_user, "task_user", 3072, NULL,10, &xTaskUser);
159 xTaskCreate(&task_ds18b20, "task_ds18b20", 2560, NULL, 8, &xTaskDS18B20); 159 xTaskCreate(&task_ds18b20, "task_ds18b20", 2560, NULL, 8, &xTaskDS18B20);
160 xTaskCreate(&task_adc, "task_adc", 2560, NULL, 8, &xTaskADC); 160 xTaskCreate(&task_adc, "task_adc", 2560, NULL, 8, &xTaskADC);
161 esp_log_level_set("wifi", ESP_LOG_ERROR); 161 esp_log_level_set("wifi", ESP_LOG_ERROR);
162 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi); 162 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi);
163 vTaskDelay(10 / portTICK_PERIOD_MS); 163 vTaskDelay(10 / portTICK_PERIOD_MS);
209 } else { 209 } else {
210 ESP_LOGE(TAG, "ML1_MQTT_CONNECT DS18B20 lock error"); 210 ESP_LOGE(TAG, "ML1_MQTT_CONNECT DS18B20 lock error");
211 } 211 }
212 212
213 /* Copy measured data and calculate results */ 213 /* Copy measured data and calculate results */
214 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { 214 for (int i = 0; i < 3; i++) {
215 for (int i = 0; i < 3; i++) { 215 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) {
216 units[i].temperature = temp; 216 units[i].temperature = temp;
217 units[i].temperature_state = state; 217 units[i].temperature_state = state;
218 units[i].alarm = 0; 218 units[i].alarm = 0;
219 if (state) 219 if (state)
220 units[i].alarm |= ALARM_SYS_TEMPERATURE & ALARM_UNIT_TEMPERATURE; 220 units[i].alarm |= ALARM_SYS_TEMPERATURE & ALARM_UNIT_TEMPERATURE;
221 strncpy(units[i].temperature_rom_code, rom_code, 17); 221 strncpy(units[i].temperature_rom_code, rom_code, 17);
222
222 if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) { 223 if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) {
223 units[i].pressure_state = adc_state->Pressure[i].error; 224 units[i].pressure_state = adc_state->Pressure[i].error;
224 units[i].pressure_channel = adc_state->Pressure[i].channel; 225 units[i].pressure_channel = adc_state->Pressure[i].channel;
225 units[i].pressure_voltage = adc_state->Pressure[i].voltage; 226 units[i].pressure_voltage = adc_state->Pressure[i].voltage;
226 if (units[i].pressure_state || units[i].pressure_voltage < 80) 227 if (units[i].pressure_state || units[i].pressure_voltage < 80)
234 // Moet die echt op 5 volt? 235 // Moet die echt op 5 volt?
235 // Verbruik 10 mA 236 // Verbruik 10 mA
236 // Setup tijd max 2 mS 237 // Setup tijd max 2 mS
237 xSemaphoreGive(xSemaphoreADC); 238 xSemaphoreGive(xSemaphoreADC);
238 } else { 239 } else {
239 ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC lock error"); 240 ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC[%d] lock error", i);
240 } 241 }
241 } 242 xSemaphoreGive(xSemaphoreUnits);
243 } else {
244 ESP_LOGE(TAG, "ML1_MQTT_CONNECT units[%d] lock error", i);
245 }
246 }
247 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) {
242 write_units(); 248 write_units();
243 xSemaphoreGive(xSemaphoreUnits); 249 xSemaphoreGive(xSemaphoreUnits);
244 user_refresh();
245 } else { 250 } else {
246 ESP_LOGE(TAG, "ML1_MQTT_CONNECT units lock error"); 251 ESP_LOGE(TAG, "ML1_MQTT_CONNECT write_units lock error");
247 } 252 }
253 user_refresh();
248 } 254 }
249 break; 255 break;
250 256
251 case ML1_WAITCON: 257 case ML1_WAITCON:
252 if (ready_mqtt()) 258 if (ready_mqtt())

mercurial