Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -r3256cf475a0efba069f79da4459e5fe925f1c356 -re3ec597362664bf255dbc44bdcb505ba265d9c94 --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 3256cf475a0efba069f79da4459e5fe925f1c356) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision e3ec597362664bf255dbc44bdcb505ba265d9c94) @@ -8,7 +8,7 @@ * @file DrainPump.c * * @author (last) Dara Navaei -* @date (last) 01-Mar-2024 +* @date (last) 19-Mar-2024 * * @author (original) Sean * @date (original) 08-Apr-2020 @@ -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 ); @@ -413,7 +414,7 @@ { U32 direction = getDrainPumpMeasuredDirection(); U32 rpmMaxon = getDrainPumpMeasuredRPM( DRAIN_PUMP_MAXON_SNSR_FB ); - BOOL isDirInvalid = ( ( direction != DRAIN_PUMP_FORWARD_DIR ) && ( rpmMaxon > 0 ) ? TRUE : FALSE ); + BOOL isDirInvalid = ( ( direction != DRAIN_PUMP_FORWARD_DIR ) && ( rpmMaxon > DRAIN_PUMP_MIN_RPM_FOR_DIR_CHECK ) ? TRUE : FALSE ); checkPersistentAlarm( ALARM_ID_DG_DRAIN_PUMP_DIRECTION_INVALID, isDirInvalid, (F32)direction, DRAIN_PUMP_FORWARD_DIR ); }