Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r4e11c80367b5ae522aa34fb137079e516c98831b -r97e05773e710de7cf31c717399fe1e99a3cc7d0c --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 4e11c80367b5ae522aa34fb137079e516c98831b) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 97e05773e710de7cf31c717399fe1e99a3cc7d0c) @@ -83,7 +83,6 @@ #define TEMP_SENSORS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Temperature sensors publish data time interval. #define TEMP_SENSORS_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Temperature sensors FPGA error timeout in milliseconds. -#define TEMP_SENSORS_ERROR_BIT_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Temperature sensors error bit timeout in milliseconds. #define TEMP_SENSORS_MIN_ALLOWED_DEGREE_C 0.0F ///< Temperature sensors minimum allowed temperature in C. #define TEMP_SENSORS_MAX_ALLOWED_DEGREE_C 120.0F ///< Temperature sensors maximum allowed temperature in C. @@ -316,9 +315,6 @@ // Persistent alarm for the temperature sensors range check initPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSORS_ADC_FAULT, TEMP_SENSORS_OUT_OF_RANGE_TIME_OUT_MS, TEMP_SENSORS_OUT_OF_RANGE_TIME_OUT_MS ); - // Persistent alarm for the temperature sensors error bit fault check - initPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_ERROR_BIT_FAULT, TEMP_SENSORS_ERROR_BIT_TIMEOUT_MS, TEMP_SENSORS_ERROR_BIT_TIMEOUT_MS ); - // Initialize the FPGA persistent alarms initFPGAPersistentAlarm( TWO_WIRE_ADC_TEMP_SENSORS, ALARM_ID_DG_TWO_WIRE_SENSORS_FPGA_FAULT, TEMP_SENSORS_FPGA_ERROR_TIMEOUT_MS, TEMP_SENSORS_FPGA_ERROR_TIMEOUT_MS); initFPGAPersistentAlarm( THD_ADC_TEMP_SENSORS, ALARM_ID_DG_THD_SENSORS_FPGA_FAULT, TEMP_SENSORS_FPGA_ERROR_TIMEOUT_MS, TEMP_SENSORS_FPGA_ERROR_TIMEOUT_MS); @@ -600,7 +596,9 @@ *************************************************************************/ static void processTempSnsrsADCRead( U32 sensorIndex, U32 adc ) { - S32 convertedADC = (S32)( adc & MASK_OFF_U32_MSB ); + // Some of the temperature sensors have an MSB bit that is used as an error flag. This flag will be a TRUE by default. + BOOL isErrorBitNotValid = FALSE; + S32 convertedADC = (S32)( adc & MASK_OFF_U32_MSB ); switch( sensorIndex ) { @@ -619,10 +617,6 @@ case TEMPSENSORS_INTERNAL_THD_RTD: { U08 i; - // Some of the temperature sensors have an MSB bit that is used as an - // error flag. This flag will be a TRUE by default. - BOOL isErrorBitNotValid = FALSE; - U32 faultySensorIndex = 0; // Shift bits by 31 to right to check the error bit status tempSensors[ sensorIndex ].sensorErrorBitStatus = adc >> SHIFT_BITS_BY_31; @@ -637,11 +631,8 @@ if ( tempSensors[ i ].sensorErrorBitStatus > 0 ) { isErrorBitNotValid = TRUE; - faultySensorIndex = i; } } - - checkPersistentAlarm( ALARM_ID_DG_TEMPERATURE_SENSOR_ERROR_BIT_FAULT, isErrorBitNotValid, faultySensorIndex, TEMP_SENSORS_ERROR_BIT_TIMEOUT_MS ); } break; @@ -652,7 +643,11 @@ break; } - processADCRead( sensorIndex, convertedADC ); + if ( FALSE == isErrorBitNotValid ) + { + // Make sure the error bit is not true before + processADCRead( sensorIndex, convertedADC ); + } } /*********************************************************************//**