Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -r1bbf9da32e622975efed00b1a7589387a9829440 -r197ee67d1cc0e0e3c80ccae58858dda09cad0834 --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 1bbf9da32e622975efed00b1a7589387a9829440) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 197ee67d1cc0e0e3c80ccae58858dda09cad0834) @@ -321,7 +321,7 @@ { // set initial PWM duty cycle bloodPumpPWMDutyCyclePctSet = MAX_BLOOD_PUMP_PWM_STEP_CHANGE; - etpwmSetCmpA( etpwmREG1, (U32)(bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD)) ); + etpwmSetCmpA( etpwmREG1, (U32)( bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ); // allow blood pump to run in requested direction setBloodPumpDirection( bloodPumpDirection ); releaseBloodPumpStop(); @@ -353,7 +353,7 @@ { // start ramp down to stop bloodPumpPWMDutyCyclePctSet -= MAX_BLOOD_PUMP_PWM_STEP_CHANGE; - etpwmSetCmpA( etpwmREG1, (U32)(bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD)) ); + etpwmSetCmpA( etpwmREG1, (U32)( bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ); result = BLOOD_PUMP_RAMPING_DOWN_STATE; } // have we reached end of ramp up? @@ -365,7 +365,7 @@ else { bloodPumpPWMDutyCyclePctSet += MAX_BLOOD_PUMP_PWM_STEP_CHANGE; - etpwmSetCmpA( etpwmREG1, (U32)(bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD)) ); + etpwmSetCmpA( etpwmREG1, (U32)( bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ); } return result; @@ -400,7 +400,7 @@ else { bloodPumpPWMDutyCyclePctSet -= MAX_BLOOD_PUMP_PWM_STEP_CHANGE; - etpwmSetCmpA( etpwmREG1, (U32)(bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD)) ); + etpwmSetCmpA( etpwmREG1, (U32)( bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ); } return result; @@ -446,7 +446,7 @@ newPWM = bloodPumpPWMDutyCyclePctSet + pTerm + iTerm; newPWM = RANGE( newPWM, MIN_BLOOD_PUMP_PWM_DUTY_CYCLE, MAX_BLOOD_PUMP_PWM_DUTY_CYCLE ); bloodPumpPWMDutyCyclePctSet = newPWM; - etpwmSetCmpA( etpwmREG1, (U32)(bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD)) ); + etpwmSetCmpA( etpwmREG1, (U32)( bloodPumpPWMDutyCyclePctSet * (F32)(etpwmREG1->TBPRD) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ); bpControlTimerCounter = 0; }