Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -rd38ccb51f7ee97a6cba54b24c900df6d9c1b42e6 -r841991c3676107d8ae45d967c28e656d6b111506 --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision d38ccb51f7ee97a6cba54b24c900df6d9c1b42e6) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 841991c3676107d8ae45d967c28e656d6b111506) @@ -41,7 +41,10 @@ #define PRESSURE_AVERAGE_MULTIPLIER ( 1.0 / (F32)PRESSURE_SAMPLES_TO_AVERAGE ) ///< Optimization - multiplying is faster than dividing. #define MIN_VALID_PRESSURE_RANGE 0.0 ///< Minimum valid range on pressure reading. -#define MAX_VALID_PRESSURE_RANGE 200.0 ///< Maximum valid range on pressure reading. +#define MAX_VALID_PRESSURE_RANGE 200.0 ///< Maximum valid range on pressure reading. +#define MIN_VALID_ADC_COUNT_RANGE 273 ///< Minimum valid adc count range. +#define MAX_VALID_ADC_COUNT_RANGE 3685 ///< Maximum valid adc count range. + #define MIN_INLET_WATER_PRESSURE 25 ///< Minimum water input pressure. #define INLET_WATER_PRESSURE_PERSISTENCE_PERIOD ( 5 * MS_PER_SECOND ) ///< Persistence period for pressure out of range error. #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. @@ -213,7 +216,8 @@ for ( sensorID = 0; sensorID < NUM_OF_PRESSURE_SENSORS; sensorID++ ) { pressureReading = getMeasuredDGPressure( sensorID ); - if ( ( pressureReading < MIN_VALID_PRESSURE_RANGE ) && ( pressureReading > MAX_VALID_PRESSURE_RANGE ) ) + if ( ( pressureReading < MIN_VALID_PRESSURE_RANGE ) || ( pressureReading > MAX_VALID_PRESSURE_RANGE ) || + ( measuredPressureReadingsRaw < MIN_VALID_ADC_COUNT_RANGE ) || ( measuredPressureReadingsRaw > MAX_VALID_ADC_COUNT_RANGE ) ) { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_PRESSURE_SENSOR_FAULT, sensorID, pressureReading ); }