Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -rfa8c72cd56fbaee5260ab3b8c558875b83c20e92 -rd6647f4f9a7965625fa77af14142188d528f83bb --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision fa8c72cd56fbaee5260ab3b8c558875b83c20e92) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision d6647f4f9a7965625fa77af14142188d528f83bb) @@ -626,8 +626,7 @@ /*********************************************************************//** * @brief * The handleBloodPumpHomingState function handles the blood pump homing state - * of the blood pump controller state machine. - * @details \b Inputs: bpHomeStartTime + * of the blood pump controller state machine. * @details \b Inputs: bpHomeStartTime * @details \b Outputs: Blood pump stopped if complete or timed out * @return next state *************************************************************************/ @@ -1027,12 +1026,22 @@ *************************************************************************/ static F32 calcBloodPumpTorque( void ) { - F32 torqueResolutionUS = (F32)getH4TorqueCount() * BP_TORQUE_PERIOD_RESOLUTION_US; - F32 torqueResolutionS = torqueResolutionUS / (F32)US_PER_SECOND; - F32 frequencyHz = 1.0F / torqueResolutionS; - F32 frequencyKHz = frequencyHz / (F32)HZ_PER_KHZ; - F32 torquemNm = frequencyKHz * BP_1KHZ_TO_TORQUE_CONVERSION_MNM; + S16 torqueCount = getH4TorqueCount(); + F32 torquemNm; + if ( torqueCount <= 0 ) + { + torquemNm = 0.0F; + } + else + { + F32 torqueResolutionUS = (F32)torqueCount * BP_TORQUE_PERIOD_RESOLUTION_US; + F32 torqueResolutionS = torqueResolutionUS / (F32)US_PER_SECOND; + F32 frequencyHz = 1.0F / torqueResolutionS; + F32 frequencyKHz = frequencyHz / (F32)HZ_PER_KHZ; + torquemNm = frequencyKHz * BP_1KHZ_TO_TORQUE_CONVERSION_MNM; + } + return torquemNm; }