temp.c: try to deal with flakey temperature sensors.

This commit is contained in:
Markus Hitter 2012-09-29 22:56:14 +02:00
parent 68b9b33dd6
commit 8b05e77d49
1 changed files with 7 additions and 2 deletions

9
temp.c
View File

@ -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) {