From 0c584425e91b51197a3fe7a312cc91f5a7cce3be Mon Sep 17 00:00:00 2001 From: Cao Sen Miao Date: Mon, 7 Aug 2023 18:48:54 +0800 Subject: [PATCH] bugfix(temperature_sensor): Fix issue that get the value is negative --- components/driver/esp32c3/rtc_tempsensor.c | 4 ++-- components/driver/esp32s2/rtc_tempsensor.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/driver/esp32c3/rtc_tempsensor.c b/components/driver/esp32c3/rtc_tempsensor.c index 1d7cbfd0bd..d3e6d08fb5 100644 --- a/components/driver/esp32c3/rtc_tempsensor.c +++ b/components/driver/esp32c3/rtc_tempsensor.c @@ -120,7 +120,7 @@ static void read_delta_t_from_efuse(void) ESP_LOGD(TAG, "s_deltaT = %f", s_deltaT); } -static float parse_temp_sensor_raw_value(uint32_t tsens_raw) +static float parse_temp_sensor_raw_value(int16_t tsens_raw) { if (isnan(s_deltaT)) { //suggests that the value is not initialized read_delta_t_from_efuse(); @@ -135,7 +135,7 @@ esp_err_t temp_sensor_read_celsius(float *celsius) temp_sensor_config_t tsens; temp_sensor_get_config(&tsens); bool range_changed; - uint16_t tsens_out = temp_sensor_get_raw_value(&range_changed); + int16_t tsens_out = temp_sensor_get_raw_value(&range_changed); *celsius = parse_temp_sensor_raw_value(tsens_out); if (*celsius < TEMPERATURE_SENSOR_MEASURE_MIN || *celsius > TEMPERATURE_SENSOR_MEASURE_MAX) { ESP_LOGE(TAG, "Exceeding temperature measure range."); diff --git a/components/driver/esp32s2/rtc_tempsensor.c b/components/driver/esp32s2/rtc_tempsensor.c index 5cb48d10f6..7fcc414dae 100644 --- a/components/driver/esp32s2/rtc_tempsensor.c +++ b/components/driver/esp32s2/rtc_tempsensor.c @@ -142,7 +142,7 @@ static void read_delta_t_from_efuse(void) ESP_LOGD(TAG, "s_deltaT = %f\n", s_deltaT); } -static float parse_temp_sensor_raw_value(uint32_t tsens_raw) +static float parse_temp_sensor_raw_value(int16_t tsens_raw) { if (isnan(s_deltaT)) { //suggests that the value is not initialized read_delta_t_from_efuse(); @@ -157,7 +157,7 @@ esp_err_t temp_sensor_read_celsius(float *celsius) temp_sensor_config_t tsens; temp_sensor_get_config(&tsens); bool range_changed; - uint16_t tsens_out = temp_sensor_get_raw_value(&range_changed); + int16_t tsens_out = temp_sensor_get_raw_value(&range_changed); *celsius = parse_temp_sensor_raw_value(tsens_out); if (*celsius < TEMPERATURE_SENSOR_MEASURE_MIN || *celsius > TEMPERATURE_SENSOR_MEASURE_MAX) { ESP_LOGE(TAG, "Exceeding temperature measure range.");