Index: firmware/App/Controllers/RinsePump.c =================================================================== diff -u -r94789b2f2324d5901685b6ff7b6224d4af3a0276 -racac329c455014a27d247538bce6717a76e9c76c --- firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision 94789b2f2324d5901685b6ff7b6224d4af3a0276) +++ firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision acac329c455014a27d247538bce6717a76e9c76c) @@ -66,7 +66,7 @@ static RINSE_PUMP_STATE_T handleRinsePumpOnState ( void ); static void monitorRinsePumpSpeed( void ); static void publishRinsePumpData( void ); -static void setRinsePumpPwmCount( RINSE_PUMP_ID_T pumpId, U32 pwmCount ); +static void setRinsePumpPwm( RINSE_PUMP_ID_T pumpId, F32 pwmPercent ); /*********************************************************************//** * @brief @@ -276,8 +276,10 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { - // Set PWM count zero to stop the logical rinse pump - setRinsePumpPwmCount( D79_RINSE_PUMP, RINSE_PUMP_OFF_COUNT ); + // Set PWM to zero to stop the logical rinse pump + rinsePumpPwmPercentage.data = 0.0F; + F32 pwmPercent = getF32OverrideValue( &rinsePumpPwmPercentage ); // TODO should we read from getF32Override for Off state, what is there is an active override and override sent for off state transition? + setRinsePumpPwm( D79_RINSE_PUMP, pwmPercent ); } else { @@ -301,13 +303,14 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) { - F32 pwmPercent = getF32OverrideValue( &rinsePumpPwmPercentage ); // TODO should this conversion happen in setPWMCount function? + rinsePumpPwmPercentage.data = RINSE_PUMP_DEFAULT_PWM_PERCENT; + F32 pwmPercent = getF32OverrideValue( &rinsePumpPwmPercentage ); U32 pwmInCount = (U32)( ( pwmPercent / RINSE_PUMP_MAX_PWM_PERCENT ) * RINSE_PUMP_PWM_IN_COUNT_MAX ); rinsePumpTargetSpeedRPM = (U32)( ( (F32)pwmInCount / RINSE_PUMP_PWM_IN_COUNT_MAX ) * (F32)RINSE_PUMP_MAX_RPM_ESTIMATE ); // Turn on logical rinse pump with given PWM value - setRinsePumpPwmCount( D79_RINSE_PUMP, (U32)pwmInCount ); + setRinsePumpPwm( D79_RINSE_PUMP, pwmPercent ); } else { @@ -320,20 +323,22 @@ /*********************************************************************//** * @brief - * The setRinsePumpPwmCount function maps a logical rinse pump ID to the - * underlying FPGA control and applies the requested PWM count. - * @details \b Inputs: pumpId, pwmCount + * The setRinsePumpPwm function maps a logical rinse pump ID to the + * underlying FPGA control and applies the requested PWM. + * @details \b Inputs: pumpId, pwmPercent * @details \b Outputs: FPGA rinse pump control register * @param pumpId Logical rinse pump identifier * @param pwmCount PWM magnitude (0..RINSE_PUMP_PWM_IN_COUNT_MAX) * @return none *************************************************************************/ -static void setRinsePumpPwmCount( RINSE_PUMP_ID_T pumpId, U32 pwmCount ) +static void setRinsePumpPwm( RINSE_PUMP_ID_T pumpId, F32 pwmPercent ) { + U08 pwmCount = (U08)( ( pwmPercent / RINSE_PUMP_MAX_PWM_PERCENT ) * RINSE_PUMP_PWM_IN_COUNT_MAX ); + switch ( pumpId ) { case D79_RINSE_PUMP: - setFPGAD79RinsePumpPWMControl( (U08)pwmCount ); + setFPGAD79RinsePumpPWMControl( pwmCount ); break; default: