Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -re87de1c84010d764abe71d38272ca34e2733a306 -r2bf612eeb70204a5ca65697b9054948919b854b7 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision e87de1c84010d764abe71d38272ca34e2733a306) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 2bf612eeb70204a5ca65697b9054948919b854b7) @@ -742,7 +742,16 @@ F32 targetTemperature = heatersStatus[ heater ].targetTempC; F32 dutyCycle = calculateTrimmerHeaterDutyCycle( targetTemperature, dialysateInletTemperature, targetFlowLPM, TRUE ); - tempDutyCycle = heatersStatus[ heater ].dutyCycle.data + dutyCycle; + if ( fabs( heatersStatus[ heater ].prevDiaTargetFlowLPM - targetFlowLPM ) > NEARLY_ZERO ) + { + tempDutyCycle = dutyCycle; + heatersStatus[ heater ].isThisFirstControl = TRUE; + } + else + { + tempDutyCycle = heatersStatus[ heater ].dutyCycle.data + dutyCycle; + } + tempDutyCycle = MIN( tempDutyCycle, HEATERS_MAX_DUTY_CYCLE ); tempDutyCycle = MAX( tempDutyCycle, HEATERS_MIN_DUTY_CYCLE ); heatersStatus[ heater ].dutyCycle.data = tempDutyCycle; @@ -979,6 +988,7 @@ data.primaryCalcTargetTemp = heatersStatus[ DG_PRIMARY_HEATER ].calculatedTemperatureC; data.trimmerCalcCurrentTemp = heatersStatus[ DG_TRIMMER_HEATER ].calculatedTemperatureC; data.trimmerUseLastDC = (U32)heatersStatus[ DG_TRIMMER_HEATER ].useLastDutyCycle; + data.previsouFlow = heatersStatus[ DG_TRIMMER_HEATER ].prevDiaTargetFlowLPM; dataPublicationTimerCounter = 0; broadcastData( MSG_ID_DG_HEATERS_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( HEATERS_DATA_T ) );