Index: firmware/App/Drivers/PeristalticPump.c =================================================================== diff -u -r4a65377085c075e15056b4157e17e7ed0ec15301 -rfe29b840bff79d853e49baf3a78b080e1cf428b6 --- firmware/App/Drivers/PeristalticPump.c (.../PeristalticPump.c) (revision 4a65377085c075e15056b4157e17e7ed0ec15301) +++ firmware/App/Drivers/PeristalticPump.c (.../PeristalticPump.c) (revision fe29b840bff79d853e49baf3a78b080e1cf428b6) @@ -27,7 +27,6 @@ // ********** private definitions ********** -#define MAX_PUMP_SPEED_RPM 3080U ///< Maximum speed (in RPM) that a peristaltic pump can be set to. #define H4_PUMP_CMD_GAIN 0.9F ///< Gain for blood pump commanded RPM that must be applied before sending to FPGA. #define H4_PUMP_CMD_OFFSET 80.0F ///< Offset for blood pump commanded RPM that must be applied before sending to FPGA. #define H4_PUMP_CMD_CAL(r) ((r) * H4_PUMP_CMD_GAIN + H4_PUMP_CMD_OFFSET ) ///< Macro to calibrate a commanded blood pump RPM before sending to FPGA. @@ -51,6 +50,7 @@ static F32 pumpMeasSpeedRPM; ///< Latest measured pump speed (in RPM). static F32 pumpMeasRotSpeedRPM; ///< Latest measured pump rotor speed (in RPM). static BOOL pumpHomeInProgress; ///< Flag indicates a pump home operation is in progress. +static BOOL pumpHomeLowSignalSeen; ///< Flag indicates a pump home operation has seen a "not home" signal. // ********** private function prototypes ********** @@ -64,10 +64,11 @@ *************************************************************************/ void initPeristalticPumpDriver(void) { - pumpHomeInProgress = FALSE; - pumpSetSpeedRPM = 0; - pumpMeasSpeedRPM = 0.0F; - pumpMeasRotSpeedRPM = 0.0F; + pumpHomeInProgress = FALSE; + pumpHomeLowSignalSeen = FALSE; + pumpSetSpeedRPM = 0; + pumpMeasSpeedRPM = 0.0F; + pumpMeasRotSpeedRPM = 0.0F; setH4Direction( MOTOR_DIR_FORWARD ); setH4SetSpeed( 0 ); @@ -120,11 +121,15 @@ } // monitor home command status if in progress, stop pump if rotor is in home position - if ( ( TRUE == pumpHomeInProgress ) && ( TRUE == isPeristalticPumpHome() ) ) + if ( ( TRUE == pumpHomeInProgress ) && ( TRUE == isPeristalticPumpHome() ) && ( TRUE == pumpHomeLowSignalSeen ) ) { setPeristalticPumpSetSpeed( 0 ); pumpHomeInProgress = FALSE; } + else if ( isPeristalticPumpHome() != TRUE ) + { + pumpHomeLowSignalSeen = TRUE; + } } /*********************************************************************//** @@ -143,6 +148,7 @@ { result = TRUE; pumpHomeInProgress = TRUE; + pumpHomeLowSignalSeen = ( isPeristalticPumpHome() != TRUE ? TRUE : FALSE ); setPeristalticPumpSetSpeed( H4_HOME_SPEED_RPM ); }