From 8b05e77d49b8e61ac85e228d6339df59e7682e91 Mon Sep 17 00:00:00 2001 From: Markus Hitter Date: Sat, 29 Sep 2012 22:56:14 +0200 Subject: [PATCH] temp.c: try to deal with flakey temperature sensors. --- temp.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/temp.c b/temp.c index fe2e246..b53e295 100644 --- a/temp.c +++ b/temp.c @@ -292,11 +292,16 @@ void temp_sensor_tick() { temp_sensors_runtime[i].last_read_temp = temp; } if (labs((int16_t)(temp_sensors_runtime[i].last_read_temp - temp_sensors_runtime[i].target_temp)) < (TEMP_HYSTERESIS*4)) { - if (temp_sensors_runtime[i].temp_residency < (TEMP_RESIDENCY_TIME*100)) + if (temp_sensors_runtime[i].temp_residency < (TEMP_RESIDENCY_TIME*120)) temp_sensors_runtime[i].temp_residency++; } else { - temp_sensors_runtime[i].temp_residency = 0; + // Deal with flakey sensors which occasionally report a wrong value + // by setting residency back, but not entirely to zero. + if (temp_sensors_runtime[i].temp_residency > 10) + temp_sensors_runtime[i].temp_residency -= 10; + else + temp_sensors_runtime[i].temp_residency = 0; } if (temp_sensors[i].heater < NUM_HEATERS) {