Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -r2bdd010a62ea113058640fc1e9c763dcf885c93c -r735226fefeab1dc5219d6cebee749e0c27b2ce21 --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 2bdd010a62ea113058640fc1e9c763dcf885c93c) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 735226fefeab1dc5219d6cebee749e0c27b2ce21) @@ -946,21 +946,20 @@ U16 spdDelta; U16 delta; - // Keep a running 32-bit edge count used for safety check on volume in some functions - bloodPumpMotorEdgeCount += delta; - // Determine blood pump speed/direction from delta hall sensor count since last interval if ( incDelta < decDelta ) { spdDelta = incDelta; bloodPumpSpeedRPM.data = ( (F32)spdDelta / (F32)BP_HALL_EDGE_COUNTS_PER_REV ) * (F32)SEC_PER_MIN; + // Keep a running 32-bit edge count used for safety check on volume in some functions delta = ( bpMotorHallSensorCount >= last ? bpMotorHallSensorCount - last : ( HEX_64_K - last ) + bpMotorHallSensorCount ); bloodPumpMotorEdgeCount += delta; } else { spdDelta = decDelta; bloodPumpSpeedRPM.data = ( (F32)spdDelta / (F32)BP_HALL_EDGE_COUNTS_PER_REV ) * (F32)SEC_PER_MIN * -1.0; + // Keep a running 32-bit edge count used for safety check on volume in some functions delta = ( bpMotorHallSensorCount <= last ? last - bpMotorHallSensorCount : ( HEX_64_K - bpMotorHallSensorCount ) + last ); bloodPumpMotorEdgeCount -= (S32)delta; }