Index: firmware/App/Drivers/GLXferPump.c =================================================================== diff -u -ra4774f170562e33a48238cb3e3137bdd06ac374a -r3ec3e45e91681444384f62618da1482cdca61598 --- firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision a4774f170562e33a48238cb3e3137bdd06ac374a) +++ firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision 3ec3e45e91681444384f62618da1482cdca61598) @@ -31,6 +31,7 @@ // ********** private definitions ********** #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 // ********** private data ********** @@ -93,13 +94,26 @@ /*********************************************************************//** * @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) * @details \b Inputs: getAirPumpRPM * @details \b Outputs: none * @return air pump motor RPM value. *************************************************************************/ U16 getAirPumpMotorRPM( void ) { - return getH12AirPumpMotorRPM(); + double realRPM; + U16 fpgaRPM = getH12AirPumpMotorRPM(); + + if ( 0xFFFF == fpgaRPM ) + { + realRPM = 0; + } + else + { + realRPM = ( ( ( double )AIR_PUMP_RPM_FACTOR ) / ( double )( fpgaRPM * 1e-6 ) ); + } + return ( U16 )realRPM; } /*********************************************************************//**