Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r9864b14f76782f1e68bf266dcd843451748715a0 -r9a9d04b84f4345fca87fb14d26f09d497b08aae8 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 9864b14f76782f1e68bf266dcd843451748715a0) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 9a9d04b84f4345fca87fb14d26f09d497b08aae8) @@ -136,6 +136,7 @@ static DIAL_IN_PUMP_STATE_T handleDialInPumpRampingUpState( void ); static DIAL_IN_PUMP_STATE_T handleDialInPumpRampingDownState( void ); static DIAL_IN_PUMP_STATE_T handleDialInPumpControlToTargetState( void ); +static void setDialInPumpControlSignalPWM( F32 newPWM ); static void stopDialInPump( void ); static void releaseDialInPumpStop( void ); static void setDialInPumpDirection( MOTOR_DIR_T dir ); @@ -339,7 +340,7 @@ { // set initial PWM duty cycle dialInPumpPWMDutyCyclePctSet = DIP_PWM_ZERO_OFFSET + MAX_DIAL_IN_PUMP_PWM_STEP_CHANGE; - etpwmSetCmpA( etpwmREG2, (U32)( (S32)( ( dialInPumpPWMDutyCyclePctSet * (F32)(etpwmREG2->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); + setDialInPumpControlSignalPWM( dialInPumpPWMDutyCyclePctSet ); // allow dialIn pump to run in requested direction setDialInPumpDirection( dialInPumpDirection ); releaseDialInPumpStop(); @@ -369,7 +370,7 @@ { // start ramp down to stop dialInPumpPWMDutyCyclePctSet -= MAX_DIAL_IN_PUMP_PWM_STEP_CHANGE; - etpwmSetCmpA( etpwmREG2, (U32)( (S32)( ( dialInPumpPWMDutyCyclePctSet * (F32)(etpwmREG2->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); + setDialInPumpControlSignalPWM( dialInPumpPWMDutyCyclePctSet ); result = DIAL_IN_PUMP_RAMPING_DOWN_STATE; } // have we reached end of ramp up? @@ -383,7 +384,7 @@ else { dialInPumpPWMDutyCyclePctSet += MAX_DIAL_IN_PUMP_PWM_STEP_CHANGE; - etpwmSetCmpA( etpwmREG2, (U32)( (S32)( ( dialInPumpPWMDutyCyclePctSet * (F32)(etpwmREG2->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); + setDialInPumpControlSignalPWM( dialInPumpPWMDutyCyclePctSet ); } return result; @@ -420,7 +421,7 @@ else { dialInPumpPWMDutyCyclePctSet -= MAX_DIAL_IN_PUMP_PWM_STEP_CHANGE; - etpwmSetCmpA( etpwmREG2, (U32)( (S32)( ( dialInPumpPWMDutyCyclePctSet * (F32)(etpwmREG2->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); + setDialInPumpControlSignalPWM( dialInPumpPWMDutyCyclePctSet ); } return result; @@ -448,14 +449,29 @@ { newPWM = runPIController( PI_CONTROLLER_ID_DIALYSATE_FLOW, tgtFlow, actFlow ); dialInPumpPWMDutyCyclePctSet = newPWM; - etpwmSetCmpA( etpwmREG2, (U32)( (S32)( ( dialInPumpPWMDutyCyclePctSet * (F32)(etpwmREG2->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); + setDialInPumpControlSignalPWM( newPWM ); dipControlTimerCounter = 0; } return result; } /************************************************************************* + * @brief setDialInPumpControlSignalPWM + * The setDialInPumpControlSignalPWM function sets the PWM duty cycle for \n + * the dialysate inlet pump to a given %. + * @details + * Inputs : none + * Outputs : dialIn pump stop signal activated, PWM duty cycle zeroed + * @param newPWM : new duty cycle % to apply to PWM + * @return none + *************************************************************************/ +static void setDialInPumpControlSignalPWM( F32 newPWM ) +{ + etpwmSetCmpA( etpwmREG2, (U32)( (S32)( ( newPWM * (F32)(etpwmREG2->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) ); +} + +/************************************************************************* * @brief stopDialInPump * The stopDialInPump function sets the dialIn pump stop signal. * @details