Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -r68fc03b5a22f14190146fc9069f022c109682b63 -r16dfbeeca1bcf1d2115c2f7549999fdaae0700e9 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 68fc03b5a22f14190146fc9069f022c109682b63) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 16dfbeeca1bcf1d2115c2f7549999fdaae0700e9) @@ -17,6 +17,7 @@ #include "Pressures.h" #include "AlarmMgmt.h" #include "FPGA.h" +#include "InternalADC.h" #include "OperationModes.h" #include "SystemCommMessages.h" #include "TaskPriority.h" @@ -30,8 +31,11 @@ // ********** private definitions ********** /// Default publication interval for pressure and occlusion data. -#define PRESSURES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< interval (ms/task time) at which the pressures data is published on the CAN bus. +#define PRESSURES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< interval (ms/task time) at which the pressures data is published on the CAN bus. +#define PUMP_PRESSURE_ZERO 0x309 ///< ADC counts equivalent to 0 PSI for pump in/out pressure sensors. +#define PUMP_PRESSURE_PSI_PER_COUNT 0.06343 ///< PSI per ADC count conversion factor for pump in/out pressure sensors. + /// Defined states for the pressures monitor state machine. typedef enum PresOccl_States { @@ -60,6 +64,7 @@ static PRESSURE_SELF_TEST_STATE_T pressuresSelfTestState = PRESSURE_SELF_TEST_STATE_START; ///< current pressure self test state. static U32 pressuresSelfTestTimerCount = 0; ///< timer counter for pressure self test. + // ********** private function prototypes ********** static PRESSURE_STATE_T handlePressuresInitState( void ); @@ -143,16 +148,16 @@ { PRESSURE_STATE_T result = PRESSURE_CONTINUOUS_READ_STATE; - U16 roIn = getFPGAROPumpInletPressure(); - U16 roOut = getFPGAROPumpOutletPressure(); - U16 drainIn = getFPGADrainPumpInletPressure(); - U16 drainOut = getFPGADrainPumpOutletPressure(); + S32 roIn = (S32)getIntADCReading( INT_ADC_RO_PUMP_INLET_PRESSURE ); + S32 roOut = (S32)getIntADCReading( INT_ADC_RO_PUMP_OUTLET_PRESSURE ); + S32 drainIn = (S32)getIntADCReading( INT_ADC_DRAIN_PUMP_OUTLET_PRESSURE ); + S32 drainOut = (S32)getIntADCReading( INT_ADC_DRAIN_PUMP_INLET_PRESSURE ); - // TODO - convert ADC counts to mmHg for each sensor - pressures[ PRESSURE_SENSOR_RO_PUMP_INLET ].data = (F32)roIn; - pressures[ PRESSURE_SENSOR_RO_PUMP_OUTLET ].data = (F32)roOut; - pressures[ PRESSURE_SENSOR_DRAIN_PUMP_INLET ].data = (F32)drainIn; - pressures[ PRESSURE_SENSOR_DRAIN_PUMP_OUTLET ].data = (F32)drainOut; + // convert ADC counts to PSI for each sensor + pressures[ PRESSURE_SENSOR_RO_PUMP_INLET ].data = (F32)( roIn - PUMP_PRESSURE_ZERO ) * PUMP_PRESSURE_PSI_PER_COUNT; + pressures[ PRESSURE_SENSOR_RO_PUMP_OUTLET ].data = (F32)( roOut - PUMP_PRESSURE_ZERO ) * PUMP_PRESSURE_PSI_PER_COUNT; + pressures[ PRESSURE_SENSOR_DRAIN_PUMP_INLET ].data = (F32)( drainIn - PUMP_PRESSURE_ZERO ) * PUMP_PRESSURE_PSI_PER_COUNT; + pressures[ PRESSURE_SENSOR_DRAIN_PUMP_OUTLET ].data = (F32)( drainOut - PUMP_PRESSURE_ZERO ) * PUMP_PRESSURE_PSI_PER_COUNT; // TODO - any filtering required??? @@ -246,7 +251,7 @@ F32 drainIn = getMeasuredDGPressure( PRESSURE_SENSOR_DRAIN_PUMP_INLET ); F32 drainOut = getMeasuredDGPressure( PRESSURE_SENSOR_DRAIN_PUMP_OUTLET ); - broadcastPressuresData( roIn, roOut, drainIn, drainOut ); + broadcastPressureSensorsData( roIn, roOut, drainIn, drainOut ); pressuresDataPublicationTimerCounter = 0; } }