Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -re66245baae86e539e8470aa9739a99a2146d5f17 -r738afd1d72ec8da1c5bd347b9263a2c3ca2d8a61 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision e66245baae86e539e8470aa9739a99a2146d5f17) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 738afd1d72ec8da1c5bd347b9263a2c3ca2d8a61) @@ -54,6 +54,8 @@ #define ROP_P_COEFFICIENT 0.005 ///< P term for RO pump control #define ROP_I_COEFFICIENT 0.0025 ///< I term for RO pump control +#define FLOW_SENSOR_ZERO_READING 0xFFFF ///< Flow sensor reading indicates zero flow (or flow lower than can be detected by sensor) + #define FLOW_SAMPLES_TO_AVERAGE (250 / TASK_PRIORITY_INTERVAL) ///< Averaging flow data over 250 ms intervals. #define FLOW_AVERAGE_MULTIPLIER (1.0 / (F32)FLOW_SAMPLES_TO_AVERAGE) ///< Optimization - multiplying is faster than dividing. @@ -155,7 +157,11 @@ targetROPumpPressure.data = roPressure; roPumpControlMode = mode; // set PWM duty cycle target to an estimated initial target based on target pressure - then we'll control to pressure going forward +#ifdef EMC_TEST_BUILD + roPumpPWMDutyCyclePct = 1.0; +#else roPumpPWMDutyCyclePct = ROP_PSI_TO_PWM_DC( roPressure ); +#endif result = TRUE; } @@ -195,7 +201,8 @@ *************************************************************************/ void execROPumpMonitor( void ) { - S32 roFlow = (S32)getFPGAROPumpFlowRate(); + U16 roFlowReading = getFPGAROPumpFlowRate(); + S32 roFlow = (S32)roFlowReading; // update sum for flow average calculation measuredFlowReadingsSum += roFlow; @@ -204,7 +211,14 @@ { F32 avgROFlow = (F32)measuredFlowReadingsSum * FLOW_AVERAGE_MULTIPLIER; - measuredROFlowRateLPM.data = ( measuredFlowReadingsSum == 0 ? 0.0 : RO_FLOW_ADC_TO_LPM_FACTOR / avgROFlow ); + if ( ( avgROFlow == FLOW_SENSOR_ZERO_READING ) || ( measuredFlowReadingsSum == 0 ) ) + { + measuredROFlowRateLPM.data = 0.0; + } + else + { + measuredROFlowRateLPM.data = RO_FLOW_ADC_TO_LPM_FACTOR / avgROFlow; + } measuredFlowReadingsSum = 0; flowFilterCounter = 0; } @@ -336,9 +350,11 @@ F32 actPres = measuredROPumpPressure; F32 newPWM; +#ifndef EMC_TEST_BUILD newPWM = runPIController( PI_CONTROLLER_ID_RO_PUMP, tgtPres, actPres ); roPumpPWMDutyCyclePctSet = newPWM; setROPumpControlSignalPWM( newPWM ); +#endif } roControlTimerCounter = 0; } Index: firmware/App/DGCommon.h =================================================================== diff -u -re66245baae86e539e8470aa9739a99a2146d5f17 -r738afd1d72ec8da1c5bd347b9263a2c3ca2d8a61 --- firmware/App/DGCommon.h (.../DGCommon.h) (revision e66245baae86e539e8470aa9739a99a2146d5f17) +++ firmware/App/DGCommon.h (.../DGCommon.h) (revision 738afd1d72ec8da1c5bd347b9263a2c3ca2d8a61) @@ -35,8 +35,8 @@ // #define CAN_TEST 1 // #define BETA_V1_BUILD 1 // #define DISABLE_HEATERS_AND_TEMPS 1 - #define ENABLE_DIP_SWITCHES 1 - #define EMC_TEST_BUILD 1 +// #define ENABLE_DIP_SWITCHES 1 +// #define EMC_TEST_BUILD 1 #define ALARMS_DEBUG 1 // #define HEATERS_DEBUG 1 // #define PRESSURES_DEBUG 1 Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r1d44cf33cf4461b81b19a8ab0e402c609649786b -r738afd1d72ec8da1c5bd347b9263a2c3ca2d8a61 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 1d44cf33cf4461b81b19a8ab0e402c609649786b) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 738afd1d72ec8da1c5bd347b9263a2c3ca2d8a61) @@ -164,7 +164,7 @@ { // TODO - temporary debug code - remove later char debugStr[ 256 ]; - sprintf( debugStr, "ALARM triggered:%5d %8X \n", alarm, alarmData.data.uInt ); + sprintf( debugStr, "ALARM triggered:%5d %8X \n", alarm, alarmData.data.uInt.data ); sendDebugData( (U08*)debugStr, strlen(debugStr) ); } #endif @@ -197,7 +197,7 @@ { // TODO - temporary debug code - remove later char debugStr[ 256 ]; - sprintf( debugStr, "ALARM triggered:%5d %8X %8X \n", alarm, alarmData1.data.uInt, alarmData2.data.uInt ); + sprintf( debugStr, "ALARM triggered:%5d %8X %8X \n", alarm, alarmData1.data.uInt.data, alarmData2.data.uInt.data ); sendDebugData( (U08*)debugStr, strlen(debugStr) ); } #endif