Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -rbd7df978ca5b65a730ea0164d8b2ab24e135e661 -r74a9c045d2d045721baac1d15b618db450e7f775 --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision bd7df978ca5b65a730ea0164d8b2ab24e135e661) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 74a9c045d2d045721baac1d15b618db450e7f775) @@ -513,4 +513,4 @@ return result; } - +/**@}*/ Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r2ff67ddabf473d02fe0e206ebf3ffe80d2751c4e -r74a9c045d2d045721baac1d15b618db450e7f775 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 2ff67ddabf473d02fe0e206ebf3ffe80d2751c4e) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 74a9c045d2d045721baac1d15b618db450e7f775) @@ -45,7 +45,7 @@ #define TRIMMER_HEATER_EXT_TEMP_SENSORS_0_DEGREE_RESISTANCE 100U ///< Trimmer heater external temperature sensors zero degree resistance #define TEMP_SENSORS_ADC_BITS 24U ///< External temperature sensors ADC bits -#define TEMP_SENSORS_ADC_MAX_COUNT (pow(2,TEMP_SENSORS_ADC_BITS)) ///< Temperature sensors max ADC count +#define TEMP_SENSORS_ADC_MAX_COUNT (pow(2,TEMP_SENSORS_ADC_BITS)-1) ///< Temperature sensors max ADC count #define TEMP_EQUATION_COEFF_A (3.9083 * pow(10,-3)) ///< ADC to temperature conversion coefficient A #define TEMP_EQUATION_COEFF_B (-5.775 * pow(10,-7)) ///< ADC to temperature conversion coefficient B @@ -137,17 +137,17 @@ static const F32 positiveTCExpA1 = -0.118343200000E-3; ///< K TC positive temperature exponent coefficient A1 static const F32 positiveTCExpA2 = 0.126968600000E3; ///< K TC positive temperature exponent coefficient A2 -static const F32 positiveTCCoeffs [ SIZE_OF_THERMOCOUPLE_COEFFICIENTS ] = { - -0.176004136860E-1, 0.389212049750E-1, - 0.185587700320E-4, -0.994575928740E-7, - 0.318409457190E-9, -0.560728448890E-12, - 0.560750590590E-15,-0.320207200030E-18, - 0.971511471520E-22,-0.121047212750E-25 }; ///< Thermocouple correction coefficients for positive cold junction temperature +static const F32 positiveTCCoeffs [ SIZE_OF_THERMOCOUPLE_COEFFICIENTS ] = { -0.176004136860E-1, 0.389212049750E-1, + 0.185587700320E-4, -0.994575928740E-7, + 0.318409457190E-9, -0.560728448890E-12, + 0.560750590590E-15,-0.320207200030E-18, + 0.971511471520E-22,-0.121047212750E-25 }; ///< Thermocouple correction coefficients for positive cold junction temperature -static const F32 positiveTCInverserCoeffs [ SIZE_OF_THERMOCOUPLE_COEFFICIENTS ] = { - 0.0, 2.508355E1, 7.860106E-2, -2.503131E-1, 8.315270E-2, - -1.228034E-2, 9.804036E-4, -4.413030E-5, 1.057734E-6, - -1.052755E-8 }; ///< Thermcouple inverse coefficient for positive cold junction temperature +static const F32 positiveTCInverserCoeffs [ SIZE_OF_THERMOCOUPLE_COEFFICIENTS ] = { 0.0, 2.508355E1, + 7.860106E-2, -2.503131E-1, + 8.315270E-2, -1.228034E-2, + 9.804036E-4, -4.413030E-5, + 1.057734E-6, -1.052755E-8 }; ///< Thermcouple inverse coefficient for positive cold junction temperature // Private functions prototypes @@ -310,9 +310,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_DG_SOFTWARE_FAULT, - SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, - tempSensorsExecState ); + SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, tempSensorsExecState ); tempSensorsExecState = TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES; break; } @@ -365,9 +363,9 @@ if ( FABS( adcConversionCoeff ) < NEARLY_ZERO ) { - //R(RTD) = R(ref) * (adc – 2^N-1) / (G *2^N-1); + // R(RTD) = R(ref) * (adc – 2^N-1) / (G *2^N-1); F32 resistance = (refResistance * (avgADC - pow(2,(TEMP_SENSORS_ADC_BITS - 1)))) / (gain * pow(2,(TEMP_SENSORS_ADC_BITS - 1))); - //T=(-A+√(A^2-4B(1-R_T/R_0 )))/2B + // T=(-A+√(A^2-4B(1-R_T/R_0 )))/2B F32 secondSqrtPart = 4 * TEMP_EQUATION_COEFF_B * (1 - (resistance / zeroDegResistance)); temperature = (-TEMP_EQUATION_COEFF_A + sqrt(pow(TEMP_EQUATION_COEFF_A, 2) - secondSqrtPart)) / (2 * TEMP_EQUATION_COEFF_B); } @@ -420,7 +418,7 @@ } else { - //TODO Alarm + // TODO Alarm temperature = -1.0; } @@ -617,19 +615,19 @@ static TEMPSENSORS_SELF_TEST_STATES_T handleSelfTestADCCheck ( void ) { TEMPSENSORS_SELF_TEST_STATES_T state = TEMPSENSORS_SELF_TEST_CONSISTENCY_CHECK; - // TODo Remove - F32 avgADCReads [ NUM_OF_TEMPERATURE_SENSORS ]; //TODO remove - U08 i; - - for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) - { - U32 avgADC = avgADCReads [ i ]; - - if ( avgADC > TEMP_SENSORS_ADC_MAX_COUNT ) - { + // TODo - finish implementation of this self test +// F32 avgADCReads [ NUM_OF_TEMPERATURE_SENSORS ]; +// U08 i; +// +// for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) +// { +// U32 avgADC = avgADCReads [ i ]; +// +// if ( avgADC >= TEMP_SENSORS_ADC_MAX_COUNT ) +// { // SET_ALARM_WITH_1_U32_DATA ( ALARM_ID_TEMPERATURE_SENSORS_OUT_OF_RANGE, TEMPSENSORS_SELF_TEST_ADC_CHECK ); - } - } +// } +// } return state; } @@ -646,29 +644,30 @@ *************************************************************************/ static TEMPSENSORS_SELF_TEST_STATES_T handleSelfTestConsistencyCheck ( void ) { - //TODO Consider edge cases for the consistency check TEMPSENSORS_SELF_TEST_STATES_T state = TEMPSENSORS_SELF_TEST_COMPLETE; U32 largestDelta; U08 i, j; - // Check if all the sensors are within a certain degree c - // from each other - for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) - { - for ( j = 0; j < NUM_OF_TEMPERATURE_SENSORS; j++ ) - { - if ( i != j ) - { - largestDelta = MAX( largestDelta, fabs(temperatureValues [ i ].data - temperatureValues [ j ].data) ); - } - if ( largestDelta > MAX_ALLOWED_TEMP_DELTA_BETWEEN_SENSORS ) - { - //SET_ALARM_WITH_1_U32_DATA ( ALARM_ID_TEMPERATURE_SENSORS_INCONSISTENT, TEMPSENSORS_SELF_TEST_CONSISTENCY_CHECK ); - } - } - } + // TODO Consider edge cases for the consistency check + // TODO - Is this self test needed? Is it even workable? + // Check if all the sensors are within a certain degree c from each other +// for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) +// { +// for ( j = 0; j < NUM_OF_TEMPERATURE_SENSORS; j++ ) +// { +// if ( i != j ) +// { +// largestDelta = MAX( largestDelta, fabs(temperatureValues [ i ].data - temperatureValues [ j ].data) ); +// } +// if ( largestDelta > MAX_ALLOWED_TEMP_DELTA_BETWEEN_SENSORS ) +// { +// SET_ALARM_WITH_1_U32_DATA ( ALARM_ID_TEMPERATURE_SENSORS_INCONSISTENT, TEMPSENSORS_SELF_TEST_CONSISTENCY_CHECK ); +// } +// } +// } + // TODO finalize the results tempSensorsSelfTestResult = SELF_TEST_STATUS_PASSED; @@ -742,10 +741,11 @@ { elapsedTime = 0; F32 inletTemperature = temperatureValues [ TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ].data; - if ( inletTemperature < MIN_WATER_INPUT_TEMPERATURE || inletTemperature >= MAX_WATER_INPUT_TEMPERATURE ) - { + // TODO - move inlet temperature check to someplace where only checked in treatment modes +// if ( inletTemperature < MIN_WATER_INPUT_TEMPERATURE || inletTemperature >= MAX_WATER_INPUT_TEMPERATURE ) +// { // SET_ALARM_WITH_1_U32_DATA ( ALARM_ID_INLET_WATER_TEMPERATURE_OUT_OF_RANGE, inletTemperature ); - } +// } } // Check if time has elapsed to calculate the internal temperature of the heaters if ( internalHeatersConversionTimer >= HEATERS_INTERNAL_TEMPERTURE_CALCULATION_INTERVAL ) Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -rc5e1315bfeb11335f66f7439e00857f26649e25b -r74a9c045d2d045721baac1d15b618db450e7f775 --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision c5e1315bfeb11335f66f7439e00857f26649e25b) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 74a9c045d2d045721baac1d15b618db450e7f775) @@ -93,7 +93,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, 0, drainState ) // TODO - add s/w fault enum to 1st data param + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, 0, drainState ) // TODO - add s/w fault enum to 1st data param drainState = DG_DRAIN_STATE_START; break; } Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -rc5e1315bfeb11335f66f7439e00857f26649e25b -r74a9c045d2d045721baac1d15b618db450e7f775 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision c5e1315bfeb11335f66f7439e00857f26649e25b) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 74a9c045d2d045721baac1d15b618db450e7f775) @@ -101,7 +101,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, 0, fillState ) // TODO - add s/w fault enum to 1st data param + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, 0, fillState ) // TODO - add s/w fault enum to 1st data param fillState = DG_FILL_MODE_STATE_START; break; } Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -rc5e1315bfeb11335f66f7439e00857f26649e25b -r74a9c045d2d045721baac1d15b618db450e7f775 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision c5e1315bfeb11335f66f7439e00857f26649e25b) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 74a9c045d2d045721baac1d15b618db450e7f775) @@ -135,7 +135,8 @@ } #endif #endif - } + } + activateAlarm( alarm ); } Index: firmware/App/Services/CommBuffers.c =================================================================== diff -u -r2db16f950f61815bd8be6d7d300a82eb1f6ee6da -r74a9c045d2d045721baac1d15b618db450e7f775 --- firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 2db16f950f61815bd8be6d7d300a82eb1f6ee6da) +++ firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 74a9c045d2d045721baac1d15b618db450e7f775) @@ -75,7 +75,7 @@ { if ( buffer < NUM_OF_COMM_BUFFERS ) { - S32 d,i; + S32 d; // thread protection for queue operations _disable_IRQ();