Skip to content

Commit

Permalink
fix(temperature_sensor): Fix the value is incorrect if disable and en…
Browse files Browse the repository at this point in the history
…able again

Closes #12864
  • Loading branch information
mythbuster5 committed Feb 28, 2024
1 parent bbb7c4c commit c205bbf
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,20 @@ TEST_CASE("Double start error cause test", "[temperature_sensor]")
TEST_CASE("Double Start-Stop test", "[temperature_sensor]")
{
printf("Initializing Temperature sensor\n");
float tsens_out;
float tsens_result0;
float tsens_result1;
temperature_sensor_config_t temp_sensor = TEMPERATURE_SENSOR_CONFIG_DEFAULT(10, 50);
temperature_sensor_handle_t temp_handle = NULL;
TEST_ESP_OK(temperature_sensor_install(&temp_sensor, &temp_handle));
TEST_ESP_OK(temperature_sensor_enable(temp_handle));
printf("Temperature sensor started\n");
TEST_ESP_OK(temperature_sensor_get_celsius(temp_handle, &tsens_out));
printf("Temperature out celsius %f°C\n", tsens_out);
TEST_ESP_OK(temperature_sensor_get_celsius(temp_handle, &tsens_result0));
printf("Temperature out celsius %f°C\n", tsens_result0);
TEST_ESP_OK(temperature_sensor_disable(temp_handle));
TEST_ESP_OK(temperature_sensor_enable(temp_handle));
printf("Temperature sensor started again\n");
TEST_ESP_OK(temperature_sensor_get_celsius(temp_handle, &tsens_out));
printf("Temperature out celsius %f°C\n", tsens_out);
TEST_ESP_OK(temperature_sensor_get_celsius(temp_handle, &tsens_result1));
printf("Temperature out celsius %f°C\n", tsens_result1);
TEST_ASSERT_FLOAT_WITHIN(4.0, tsens_result0, tsens_result1);
TEST_ESP_OK(temperature_sensor_disable(temp_handle));
TEST_ESP_OK(temperature_sensor_uninstall(temp_handle));
}
Expand Down
4 changes: 4 additions & 0 deletions components/esp_hw_support/sar_periph_ctrl_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ void temperature_sensor_power_acquire(void)
temperature_sensor_ll_enable(true);
}
portEXIT_CRITICAL(&rtc_spinlock);
// After enabling/reseting the temperature sensor,
// the output value gradually approaches the true temperature
// value as the measurement time increases. 300us is recommended.
esp_rom_delay_us(300);
}

void temperature_sensor_power_release(void)
Expand Down

0 comments on commit c205bbf

Please sign in to comment.