Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -rac029c36127b916d68c0039a470c3e4c68879adf -r30f7327c58c36728f1b6de0a44dfd57d00c62b2b --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision ac029c36127b916d68c0039a470c3e4c68879adf) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 30f7327c58c36728f1b6de0a44dfd57d00c62b2b) @@ -87,6 +87,7 @@ #define DRAIN_PUMP_FORWARD_DIR 1 ///< Drain pump forward direction. #define DRAIN_PUMP_DIR_BIT_MASK 0x80 ///< Drain pump direction bit clear mask. #define DRAIN_PUMP_DIR_ERROR_CNT_BIT_MASK 0x3F ///< Drain pump direction error count bit mask. +#define DRAIN_PUMP_MIN_RPM_FOR_DIR_CHECK 100 ///< Drain pump minimum RPM for direction check. #define MAX_FPGA_DRAIN_PUMP_DIRECTION_FAULT_WINDOW_MS ( 1 * SEC_PER_MIN * MS_PER_SECOND ) ///< FPGA drain pump direction fault window #define MAX_FPGA_DRAIN_PUMP_DIRECTION_FAULT_FAILURES 10 ///< FPGA drain pump direction fault failures per MAX_FPGA_DRAIN_PUMP_DIRECTION_FAULT_WINDOW_MS @@ -396,7 +397,7 @@ U32 rpmMaxon = getDrainPumpMeasuredRPM( DRAIN_PUMP_MAXON_SNSR_FB ); BOOL isRPMOutOfRange = FALSE; U32 direction = getDrainPumpMeasuredDirection(); - BOOL isDirInvalid = ( ( direction != DRAIN_PUMP_FORWARD_DIR ) && ( rpmMaxon > 0 ) ? TRUE : FALSE ); // Make sure the pump is running prior to checking the direction error + BOOL isDirInvalid = ( ( direction != DRAIN_PUMP_FORWARD_DIR ) && ( rpmMaxon > DRAIN_PUMP_MIN_RPM_FOR_DIR_CHECK ) ? TRUE : FALSE ); // Make sure the pump is running prior to checking the direction error U32 rpmHallDiff = abs( getDrainPumpTargetRPM() - rpmHall ); U32 rpmMaxonDiff = abs( getDrainPumpTargetRPM() - rpmMaxon );