Index: firmware/App/Modes/ModeHeatDisinfectActiveCool.c =================================================================== diff -u -rbec5bb7634100c96341d19cf89e540a01aa86b1d -r782cbace651eebeccbbfd3e2f2b607436269ee7f --- firmware/App/Modes/ModeHeatDisinfectActiveCool.c (.../ModeHeatDisinfectActiveCool.c) (revision bec5bb7634100c96341d19cf89e540a01aa86b1d) +++ firmware/App/Modes/ModeHeatDisinfectActiveCool.c (.../ModeHeatDisinfectActiveCool.c) (revision 782cbace651eebeccbbfd3e2f2b607436269ee7f) @@ -8,7 +8,7 @@ * @file ModeHeatDisinfectActiveCool.c * * @author (last) Dara Navaei -* @date (last) 30-Mar-2023 +* @date (last) 31-May-2023 * * @author (original) Dara Navaei * @date (original) 18-Dec-2022 @@ -177,7 +177,7 @@ deenergizeActuators( NO_PARK_CONC_PUMPS ); initHeatDisinfectActiveCoolMode(); - + setCurrentSubState( NO_SUB_STATE ); setCPLDCleanLEDColor( CPLD_CLEAN_LED_ORANGE ); return heatDisinfectActiveCoolState; @@ -1110,10 +1110,19 @@ { F32 THdTemperatureC = getTemperatureValue( TEMPSENSORS_HEAT_DISINFECT ); - if ( ( THdTemperatureC <= ROF_ACTIVE_COOL_TARGET_TEMP_C ) && ( FALSE == tempBelowTarget.hasTempTargetTimeBeenSet ) ) + if ( THdTemperatureC <= ROF_ACTIVE_COOL_TARGET_TEMP_C ) { + // If THd is below the target and the timer for stable temperature has not been set, set it + if ( FALSE == tempBelowTarget.hasTempTargetTimeBeenSet ) + { + tempBelowTarget.tempBelowTargetStartTimeMS = getMSTimerCount(); + tempBelowTarget.hasTempTargetTimeBeenSet = TRUE; + } + } + else + { + // The temperature is still above the target so keep reseting the timer tempBelowTarget.tempBelowTargetStartTimeMS = getMSTimerCount(); - tempBelowTarget.hasTempTargetTimeBeenSet = TRUE; } if ( DG_RESERVOIR_BELOW_TARGET == rsrvrsStatus.rsrvr[ rsrvrID ].rStatus )