diff -r 58a328e91881 -r 64078aa15512 main/co2meter.c --- a/main/co2meter.c Thu Nov 07 15:09:51 2019 +0100 +++ b/main/co2meter.c Thu Nov 07 22:58:48 2019 +0100 @@ -155,7 +155,7 @@ xSemaphoreADC = xSemaphoreCreateMutex(); xSemaphoreUnits = xSemaphoreCreateMutex(); - xTaskCreate(&task_user, "task_user", 2048, NULL,10, &xTaskUser); + xTaskCreate(&task_user, "task_user", 3072, NULL,10, &xTaskUser); xTaskCreate(&task_ds18b20, "task_ds18b20", 2560, NULL, 8, &xTaskDS18B20); xTaskCreate(&task_adc, "task_adc", 2560, NULL, 8, &xTaskADC); esp_log_level_set("wifi", ESP_LOG_ERROR); @@ -211,14 +211,15 @@ } /* Copy measured data and calculate results */ - if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 3; i++) { + if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { units[i].temperature = temp; units[i].temperature_state = state; units[i].alarm = 0; if (state) units[i].alarm |= ALARM_SYS_TEMPERATURE & ALARM_UNIT_TEMPERATURE; strncpy(units[i].temperature_rom_code, rom_code, 17); + if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) { units[i].pressure_state = adc_state->Pressure[i].error; units[i].pressure_channel = adc_state->Pressure[i].channel; @@ -236,15 +237,20 @@ // Setup tijd max 2 mS xSemaphoreGive(xSemaphoreADC); } else { - ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC lock error"); + ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC[%d] lock error", i); } - } + xSemaphoreGive(xSemaphoreUnits); + } else { + ESP_LOGE(TAG, "ML1_MQTT_CONNECT units[%d] lock error", i); + } + } + if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { write_units(); xSemaphoreGive(xSemaphoreUnits); - user_refresh(); } else { - ESP_LOGE(TAG, "ML1_MQTT_CONNECT units lock error"); + ESP_LOGE(TAG, "ML1_MQTT_CONNECT write_units lock error"); } + user_refresh(); } break;