Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -r1aeab08c1baf6445514b81fe51fc60a3e536e782 -r2bb3eb5316eef6a7eccf41f8815de100aa6abee7 --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 1aeab08c1baf6445514b81fe51fc60a3e536e782) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 2bb3eb5316eef6a7eccf41f8815de100aa6abee7) @@ -175,11 +175,14 @@ if ( ( 0 == rpm ) || ( ( rpm >= MIN_DRAIN_PUMP_RPM ) && ( rpm <= MAX_DRAIN_PUMP_RPM ) ) ) { - drainPumpDAC = (U32)GET_RPM_2_DAC_CONVERSION(rpm); - targetDrainPumpRPM = rpm; - drainPumpControlMode = PUMP_CONTROL_MODE_OPEN_LOOP; - drainPumpControlModeSet = drainPumpControlMode; - signalNewRPMRequest = TRUE; + drainPumpDAC = (U32)GET_RPM_2_DAC_CONVERSION(rpm); + targetDrainPumpRPM = rpm; + drainPumpControlMode = PUMP_CONTROL_MODE_OPEN_LOOP; + drainPumpControlModeSet = drainPumpControlMode; + signalNewRPMRequest = TRUE; + // If this function was called, delayed command does not need to be executed + // so the pending count down is zeroed. + pendingDrainPumpCmdCountDown = 0; result = TRUE; } else @@ -207,8 +210,8 @@ if ( ( 0 == rpm ) || ( ( rpm >= MIN_DRAIN_PUMP_RPM ) && ( rpm <= MAX_DRAIN_PUMP_RPM ) ) ) { - pendingDrainPumpCmd = DRAIN_PUMP_OPEN_LOOP_STATE; - pendingDrainPumpCmdTarget = (F32)rpm; + pendingDrainPumpCmd = DRAIN_PUMP_OPEN_LOOP_STATE; + pendingDrainPumpCmdTarget = (F32)rpm; pendingDrainPumpCmdCountDown = delayMs / TASK_GENERAL_INTERVAL; result = TRUE; } @@ -299,14 +302,14 @@ stopDrainPump(); // Reset all the variables to stop mode - targetDrainPumpRPM = 0; - drainPumpState = DRAIN_PUMP_OFF_STATE; - hasClosedLoopBeenRequested = FALSE; - drainPumpControlMode = PUMP_CONTROL_MODE_CLOSED_LOOP; - drainPumpControlModeSet = drainPumpControlMode; - drainControlTimerCounter = 0; - pendingDrainPumpCmd = DRAIN_PUMP_OFF_STATE; - pendingDrainPumpCmdTarget = 0.0; + targetDrainPumpRPM = 0; + drainPumpState = DRAIN_PUMP_OFF_STATE; + hasClosedLoopBeenRequested = FALSE; + drainPumpControlMode = PUMP_CONTROL_MODE_CLOSED_LOOP; + drainPumpControlModeSet = drainPumpControlMode; + drainControlTimerCounter = 0; + pendingDrainPumpCmd = DRAIN_PUMP_OFF_STATE; + pendingDrainPumpCmdTarget = 0.0; pendingDrainPumpCmdCountDown = 0; } @@ -396,9 +399,10 @@ targetDrainPumpRPM = (U32)pendingDrainPumpCmdTarget; drainPumpControlMode = PUMP_CONTROL_MODE_OPEN_LOOP; drainPumpControlModeSet = drainPumpControlMode; + signalNewRPMRequest = TRUE; } pendingDrainPumpCmdTarget = 0.0; - pendingDrainPumpCmd = DRAIN_PUMP_OFF_STATE; + pendingDrainPumpCmd = DRAIN_PUMP_OFF_STATE; } } @@ -539,8 +543,6 @@ // Set drain pump enable pin SET_DRAIN_PUMP_ENABLE(); - // Turn off the new RPM signal - signalNewRPMRequest = FALSE; // Set drain pump DAC drainPumpDACSet = drainPumpDAC; setFPGADrainPumpSpeed( drainPumpDACSet ); @@ -609,9 +611,9 @@ if ( TRUE == signalNewRPMRequest ) { // Set drain pump DAC - drainPumpDACSet = drainPumpDAC; - setFPGADrainPumpSpeed( drainPumpDACSet ); + drainPumpDACSet = drainPumpDAC; signalNewRPMRequest = FALSE; + setFPGADrainPumpSpeed( drainPumpDACSet ); } return state; Index: firmware/App/DGCommon.h =================================================================== diff -u -raf0d774c41601d586be3ba02cfe6bf1ce19cd1f8 -r2bb3eb5316eef6a7eccf41f8815de100aa6abee7 --- firmware/App/DGCommon.h (.../DGCommon.h) (revision af0d774c41601d586be3ba02cfe6bf1ce19cd1f8) +++ firmware/App/DGCommon.h (.../DGCommon.h) (revision 2bb3eb5316eef6a7eccf41f8815de100aa6abee7) @@ -48,7 +48,7 @@ #define IGNORE_RO_PUMP_MONITOR 1 #define DISABLE_RO_RATIO_CHECK 1 // #define DISABLE_COND_SENSOR_CHECK 1 -// #define DISABLE_WATER_QUALITY_CHECK 1 + #define DISABLE_WATER_QUALITY_CHECK 1 #define DISABLE_RTC_CONFIG 1 #define THD_USING_TRO_CONNECTOR 1 #define DISABLE_FLOW_CHECK_IN_FILL 1