Index: firmware/App/Drivers/GLXferPump.c =================================================================== diff -u -r52c71d1f7ca375d7d08829a92ccf3f6363fe22a2 -r1e806f55dd70e314a8bbb70c5233443dc807998a --- firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision 52c71d1f7ca375d7d08829a92ccf3f6363fe22a2) +++ firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision 1e806f55dd70e314a8bbb70c5233443dc807998a) @@ -32,6 +32,8 @@ #define AIR_PUMP_PWM_TIME 20 ///< Time (in 10ns increments) per PWM register count for the air pump = 20 kHz. #define AIR_PUMP_RPM_FACTOR 60 ///< Air pump rpm pump factor +#define TEN_MICRO ( 10 * 1E-6F ) ///< 10 X 10^-6 +#define MOTOR_RPM_ZERO_RAW 0xFFFFU ///< Air pump Zero RPM // ********** private data ********** @@ -40,6 +42,8 @@ // ********** private function prototypes ********** static U08 convertPercentageToScalar( F32 percentage ); +// TODO: remove after validating power +static U08 scalarPowerLevel; ///< Current scalar power level /*********************************************************************//** * @brief @@ -68,7 +72,7 @@ *************************************************************************/ void setAirPumpMotorPower( F32 power ) { - U08 scalarPower = convertPercentageToScalar( power ); + U08 scalarPower = scalarPowerLevel = convertPercentageToScalar( power ); // if state is changing, set the air pump to the given on/off state and send event if ( power != currentAirPumpMotorPowerLevel ) { @@ -92,10 +96,23 @@ } /*********************************************************************//** + * @brief + * The getAirPumpMotorScalarPower function gets the current set scalar power level of the + * air pump motor. + * @details \b Inputs: none + * @details \b Outputs: scalarPowerLevel + * @return Current set scalar power level of the air pump motor. + *************************************************************************/ +F32 getAirPumpMotorScalarPower( void ) +{ + return scalarPowerLevel; +} + +/*********************************************************************//** * @brief * The getAirPumpMotorRPM function reads the air pump RPM from FPGA. * minimum RPM that reports is 400 rpm and anything slower considered 0 (0xFFFF) -* to convert the real RPM, use the formula rpm = (60.0 / getH12AirPumpMotorRPM()* 1e-6) +* to convert the real RPM, use the formula rpm = (60.0 / ( getH12AirPumpMotorRPM() * 10 * 1E-6 ) * @details \b Inputs: none * @details \b Outputs: none * @return air pump motor RPM value. @@ -105,13 +122,13 @@ F32 realRPM; U16 fpgaRPM = getH12AirPumpMotorRPM(); - if ( 0xFFFF == fpgaRPM ) + if ( MOTOR_RPM_ZERO_RAW == fpgaRPM ) { realRPM = 0.0F; } else { - realRPM = ( ( ( F32 )AIR_PUMP_RPM_FACTOR ) / ( F32 )( fpgaRPM * 1e-6F ) ); + realRPM = ( ( ( F32 )AIR_PUMP_RPM_FACTOR ) / ( F32 )( fpgaRPM * TEN_MICRO ) ); } return ( U16 )realRPM; @@ -133,7 +150,7 @@ power = RANGE( percentage, AIR_PUMP_DUTY_CYCLE_MIN, AIR_PUMP_DUTY_CYCLE_MAX ); // Calculate 0-250 scalar value = ( power / 100 ) * 250 - return (U08)( ceilf ( ( ( power / FRACTION_TO_PERCENT_FACTOR ) / (F32)AIR_PUMP_MAX_PWM ) ) ); + return (U08)( ceilf ( ( ( power / FRACTION_TO_PERCENT_FACTOR ) * (F32)AIR_PUMP_MAX_PWM ) ) ); }