Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -re071a6ac6e8fe7a729730b90334af153afe97817 -r26c64288f4baab3707eb9555636b61c0e747f965 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision e071a6ac6e8fe7a729730b90334af153afe97817) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 26c64288f4baab3707eb9555636b61c0e747f965) @@ -127,10 +127,14 @@ /*********************************************************************//** * @brief - * The initHeaters function initializes the variables. + * The initHeaters function initializes the variables and the PI controllers + * for the primary and trimmer heaters * @details * Inputs : none - * Outputs : none + * Outputs : heatersSelfTestResult, heatersSelfTestState, + * primaryHeatersExecState, trimmerHeaterExecState, primaryHeaterTargetTemperature + * trimmerHeaterTargetTemperature, primaryHeaterTimerCounter, + * trimmerHeaterTimerCounter, dataPublicationTimerCounter * @return none *************************************************************************/ void initHeaters ( void ) @@ -161,11 +165,11 @@ /*********************************************************************//** * @brief * The setPrimaryHeaterTargetTemperature function sets the primary heater - * target temperature + * target temperature * @details - * Inputs : primaryHeaterTargetTemperature - * Outputs : none - * @param targetTemp : Target temperature + * Inputs : none + * Outputs : primaryHeaterTargetTemperature + * @param targetTemp * @return none *************************************************************************/ void setPrimaryHeaterTargetTemperature ( F32 targetTemp ) @@ -176,11 +180,11 @@ /*********************************************************************//** * @brief * The setTrimmerHeaterTargetTemperature function sets the trimmer heater - * target temperature + * target temperature * @details * Inputs : trimmerHeaterTargetTemperature * Outputs : none - * @param targetTemp : Target temperature + * @param targetTemp : targetTemp * @return none *************************************************************************/ void setTrimmerHeaterTargetTemperature ( F32 targetTemp ) @@ -190,11 +194,13 @@ /*********************************************************************//** * @brief - * The startPrimaryHeater function starts the primary heaters + * The startPrimaryHeater function starts the primary heaters. It resets + * the primary heaters state and sets the main primary heater duty cycle * @details - * Inputs : none - * Outputs : BOOL (status) - * @return BOOL (status) + * Inputs : mainPrimaryHeaterDutyCycle, primaryHeaterTargetTemperature + * Outputs : primaryHeatersExecState + * @param none + * @return status *************************************************************************/ BOOL startPrimaryHeater ( void ) { @@ -213,11 +219,13 @@ /*********************************************************************//** * @brief - * The startTrimmerHeater function starts the trimmer heater + * The startTrimmerHeater function starts the trimmer heater. It resets the + * trimmer heater's state and sets the duty cycle of the trimmer heater * @details - * Inputs : none - * Outputs : BOOL (status) - * @return BOOL (status) + * Inputs : trimmerHeaterDutyCycle, trimmerHeaterTargetTemperature + * Outputs : trimmerHeaterExecState + * @param none + * @return status *************************************************************************/ BOOL startTrimmerHeater ( void ) { @@ -239,7 +247,8 @@ * The stopPrimaryHeater function stops the primary heaters * @details * Inputs : none - * Outputs : none + * Outputs : primaryHeatersExecState + * @param none * @return none *************************************************************************/ void stopPrimaryHeater ( void ) @@ -254,12 +263,14 @@ * The stopTrimmerHeater function stops the trimmer heater * @details * Inputs : none - * Outputs : none + * Outputs : trimmerHeaterExecState + * @param none * @return none *************************************************************************/ void stopTrimmerHeater ( void ) { setTrimmerHeaterPWM ( HEATERS_MIN_DUTY_CYCLE ); + trimmerHeaterExecState = TRIMMER_HEATER_EXEC_STATE_OFF; } /*********************************************************************//** @@ -280,29 +291,28 @@ * @brief * The execHeatersSelfTest function executes the heaters self test * @details - * Inputs : none - * Outputs : SELF_TEST_STATUS_T - * @return SELF_TEST_STATUS_T + * Inputs : heatersSelfTestState + * Outputs : none + * @param none + * @return heatersSelfTestState *************************************************************************/ SELF_TEST_STATUS_T execHeatersSelfTest ( void ) { switch ( heatersSelfTestState ) { case HEATERS_SELF_TEST_START: - break; - case HEATERS_SELF_TEST_START_SMALL_PRIMARY_AND_TRIMMER: + case HEATERS_SELF_TEST_START_SMALL_PRIMARY_AND_TRIMMER: break; - case HEATERS_SELF_TEST_START_MAIN_PRIMARY: + case HEATERS_SELF_TEST_START_MAIN_PRIMARY: break; - case HEATERS_SELF_TEST_COMPLETE: + case HEATERS_SELF_TEST_COMPLETE: break; default: - SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_SELF_TEST_INVALID_STATE, heatersSelfTestState ); heatersSelfTestState = HEATERS_SELF_TEST_COMPLETE; @@ -316,8 +326,9 @@ * @brief * The execPrimaryHeaters function executes the primary heaters * @details - * Inputs : none - * Outputs : none + * Inputs : primaryHeatersExecState + * Outputs : primaryHeatersExecState + * @param none * @return none *************************************************************************/ void execPrimaryHeaters ( void ) @@ -344,8 +355,9 @@ * @brief * The execTrimmerHeater function executes the trimmer heater * @details - * Inputs : none - * Outputs : none + * Inputs : trimmerHeaterExecState + * Outputs : trimmerHeaterExecState + * @param none * @return none *************************************************************************/ void execTrimmerHeater ( void ) @@ -376,8 +388,9 @@ * off state * @details * Inputs : none - * Outputs : PRIMARY_HEATERS_EXEC_STATES_T (state) - * @return PRIMARY_HEATERS_EXEC_STATES_T (state) + * Outputs : state (PRIMARY_HEATERS_EXEC_STATES_T) + * @param none + * @return state (PRIMARY_HEATERS_EXEC_STATES_T) *************************************************************************/ static PRIMARY_HEATERS_EXEC_STATES_T handlePrimaryHeaterStateOff ( void ) { @@ -407,9 +420,12 @@ * The handlePrimaryHeaterStateControlToTarget function handles the primary * heaters at control state when the heaters are active * @details - * Inputs : none - * Outputs : PRIMARY_HEATERS_EXEC_STATES_T (state) - * @return PRIMARY_HEATERS_EXEC_STATES_T (state) + * Inputs : primaryHeaterTimerCounter, mainPrimaryHeaterDutyCycle, + * smallPrimaryHeaterDutyCycle + * Outputs : primaryHeaterTimerCounter, mainPrimaryHeaterDutyCycle, + * smallPrimaryHeaterDutyCycle + * @param none + * @return state (PRIMARY_HEATERS_EXEC_STATES_T) *************************************************************************/ static PRIMARY_HEATERS_EXEC_STATES_T handlePrimaryHeaterStateControlToTarget ( void ) { @@ -456,8 +472,9 @@ * off state * @details * Inputs : none - * Outputs : TRIMMER_HEATER_EXEC_STATES_T (state) - * @return TRIMMER_HEATER_EXEC_STATES_T (state) + * Outputs : state (TRIMMER_HEATER_EXEC_STATES_T) + * @param none + * @return state (TRIMMER_HEATER_EXEC_STATES_T) *************************************************************************/ static TRIMMER_HEATER_EXEC_STATES_T handleTrimmerHeaterStateOff ( void ) { @@ -487,9 +504,10 @@ * The handleTrimmerHeaterControlToTarget function handles the trimmer * heater at control state when the heater is active * @details - * Inputs : none - * Outputs : TRIMMER_HEATER_EXEC_STATES_T (state) - * @return TRIMMER_HEATER_EXEC_STATES_T (state) + * Inputs : trimmerHeaterTimerCounter, trimmerHeaterDutyCycle + * Outputs : trimmerHeaterTimerCounter, trimmerHeaterDutyCycle + * @param none + * @return state (TRIMMER_HEATER_EXEC_STATES_T) *************************************************************************/ static TRIMMER_HEATER_EXEC_STATES_T handleTrimmerHeaterControlToTarget ( void ) { @@ -498,7 +516,8 @@ if ( ++trimmerHeaterTimerCounter >= CONTROLLER_CHECK_INTERVAL_COUNT ) { F32 outletTemp = getTemperatureValue ( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ); - trimmerHeaterDutyCycle = runPIController ( PI_CONTROLLER_ID_TRIMMER_HEATER, trimmerHeaterTargetTemperature, outletTemp ); + trimmerHeaterDutyCycle = runPIController ( PI_CONTROLLER_ID_TRIMMER_HEATER, + trimmerHeaterTargetTemperature, outletTemp ); setTrimmerHeaterPWM ( trimmerHeaterDutyCycle ); trimmerHeaterTimerCounter = 0; } @@ -566,8 +585,8 @@ * The resetHeaterState function resets the PI controller of the selected * heater * @details - * Inputs : none - * Outputs : none + * Inputs : mainPrimaryHeaterDutyCycle, trimmerHeaterDutyCycle + * Outputs : mainPrimaryHeaterDutyCycle, trimmerHeaterDutyCycle * @param : heater (NAME_OF_HEATER) : Name of the heater to reset * @return none *************************************************************************/ @@ -590,8 +609,8 @@ * The publishTemperatureData function publishes the temperature sensors * data into the USB debug port at the defined time interval * @details - * Inputs : none - * Outputs : none + * Inputs : dataPublicationTimerCounter + * Outputs : dataPublicationTimerCounter * @param none * @return none *************************************************************************/ @@ -601,12 +620,9 @@ { #ifdef DEBUG_ENABLED { - //U16 primaryJC = ( (U16)getFPGAPRimaryColdJunctionTemp() ) << 4; - //S16 convertedPriJC = ( (S16)primaryJC ) >> 4; - - //U16 trimmerJC = ( (U16)getFPGATrimmerColdJunctionTemp() ) << 4; - //S16 convertedTriJC = ( (S16)trimmerJC ) >> 4; char debugTempStr[ 256 ]; + // TODO: clean up. + // To the reviewers: please ignore this section /*sprintf( debugTempStr, "MPDC: %2d, SPDC: %2d, THDC: %2d, TPi: %6.2f, TPo: %6.2f, TD1: %6.2f, " "TD2: %6.2f, TRo: %6.2f, TDi: %6.2f, TPh: %6.2f, TTh: %6.2f, PTarg: %6.2f, TTarg: %6.2f, ROFlow: %6.2f, PCJ: %6.2f, TCJ: %6.2f\r\n", (U32)(mainPrimaryHeaterDutyCycle*100), (U32)(smallPrimaryHeaterDutyCycle*100), (U32)(trimmerHeaterDutyCycle*100), @@ -624,18 +640,28 @@ getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_COLD_JUNCTION_TEMP_SENSOR )) //(F32)(convertedPriJC*0.0625), //(F32)(convertedTriJC*0.0625)); //TODO Remove flow reader later */ - sprintf( debugTempStr, "MPDC: %2d, SPDC: %2d, THDC: %2d, TPi: %6.2f, TPo: %6.2f, TRo: %6.2f, TPh: %6.2f, TTh: %6.2f, PCJ: %6.2f, TCJ: %6.2f," - " TPI: %6.2f, TTI: %6.2f\r\n", + /*sprintf( debugTempStr, "MPDC: %2d, SPDC: %2d, THDC: %2d, TPi: %6.2f, TPo: %6.2f, TRo: %6.2f, TPh: %6.2f, TTh: %6.2f, PCJ: %6.2f, TCJ: %6.2f," + "TPI: %6.2f, TTI: %6.2f\r\n", (U32)(mainPrimaryHeaterDutyCycle*100), (U32)(smallPrimaryHeaterDutyCycle*100), (U32)(trimmerHeaterDutyCycle*100), getTemperatureValue ( TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ), getTemperatureValue ( TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ), getTemperatureValue ( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ), - getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR ), - getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_THERMO_COUPLE_TEMP_SESNOR ), + getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP ), + getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP), getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR ), getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_COLD_JUNCTION_TEMP_SENSOR ), + getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR), + getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_THERMO_COUPLE_TEMP_SESNOR));*/ + + F32 Pthermo = getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP ); + sprintf( debugTempStr, "TPh: %6.2f, TTh: %6.2f, PCJ: %6.2f, TCJ: %6.2f, TPI: %6.2f, TTI: %6.2f\r\n", + getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP ), + getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP ), + getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR ), + getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_COLD_JUNCTION_TEMP_SENSOR ), getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR ), getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_THERMO_COUPLE_TEMP_SESNOR )); + sendDebugData ( (U08*)debugTempStr, strlen(debugTempStr) ); } #endif Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u -r6e22cc1ec54e6e283827b4b30fb02646343c809f -r26c64288f4baab3707eb9555636b61c0e747f965 --- firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 6e22cc1ec54e6e283827b4b30fb02646343c809f) +++ firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 26c64288f4baab3707eb9555636b61c0e747f965) @@ -20,7 +20,7 @@ #include "Common.h" /** - * @defgroup Heaters + * @defgroup Heaters Heaters * @brief Heaters driver modules. * Controls the Primary and Trimmer Heaters * Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -re071a6ac6e8fe7a729730b90334af153afe97817 -r26c64288f4baab3707eb9555636b61c0e747f965 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision e071a6ac6e8fe7a729730b90334af153afe97817) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 26c64288f4baab3707eb9555636b61c0e747f965) @@ -76,37 +76,39 @@ #define MAX_WATER_INPUT_TEMPERATURE 40U ///< Maximum water input temperature #define ADC_FPGA_READ_DELAY 30U ///< Delay in ms before reading the ADC values from FPGA #define INPUT_WATER_TEMPERATURE_CHECK_TIME_INTERVAL 100U ///< Time interval that is used to check the input water +#define HEATERS_INTERNAL_TEMPERTURE_CALCULATION_INTERVAL 20U ///< Time interval that is used to calculate the heaters internal temperature #define HEATERS_INTERNAL_ADC_TO_TEMP_CONVERSION_COEFF 0.25 ///< Heaters internal temperature sensors ADC to temperature conversion coefficient #define HEATERS_COLD_JUNCTION_ADC_TO_TEMP_CONVERSION_COEFF 0.0625 -#define K_THERMOCOUPLE_TEMP_2_MILLI_VOLT_CONVERSION_COEFF 0.041276 +// todo ADD TO AE TO THE BOTTOM +#define K_THERMOCOUPLE_TEMP_2_MILLI_VOLT_CONVERSION_COEFF 0.041276 ///< K thermocouple temperature to millivolt conversion coefficient -#define THERMOCOUPLE_POSITIVE_TEMP_C_0 (-0.176004136860 * pow(10,-1)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_1 (0.389212049750 * pow(10,-1)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_2 (0.185587700320 * pow(10,-4)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_3 (-0.994575928740 * pow(10,-7)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_4 (0.318409457190 * pow(10,-9)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_5 (-0.560728448890 * pow(10,-12)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_6 (0.560750590590 * pow(10,-15)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_7 (-0.320207200030 * pow(10,-18)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_8 (0.971511471520 * pow(10,-22)) -#define THERMOCOUPLE_POSITIVE_TEMP_C_9 (-0.121047212750 * pow(10,-25)) +#define THERMOCOUPLE_POSITIVE_TEMP_C_0 (-0.176004136860 * pow(10,-1)) ///< K TC positive temperature C0 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_1 (0.389212049750 * pow(10,-1)) ///< K TC positive temperature C1 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_2 (0.185587700320 * pow(10,-4)) ///< K TC positive temperature C2 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_3 (-0.994575928740 * pow(10,-7)) ///< K TC positive temperature C3 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_4 (0.318409457190 * pow(10,-9)) ///< K TC positive temperature C4 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_5 (-0.560728448890 * pow(10,-12)) ///< K TC positive temperature C5 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_6 (0.560750590590 * pow(10,-15)) ///< K TC positive temperature C6 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_7 (-0.320207200030 * pow(10,-18)) ///< K TC positive temperature C7 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_8 (0.971511471520 * pow(10,-22)) ///< K TC positive temperature C8 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_C_9 (-0.121047212750 * pow(10,-25)) ///< K TC positive temperature C9 coefficient -#define THERMOCOUPLE_POSITIVE_TEMP_EXP_A_0 (0.118597600000 * pow(10,0)) -#define THERMOCOUPLE_POSITIVE_TEMP_EXP_A_1 (-0.118343200000 * pow(10,-3)) -#define THERMOCOUPLE_POSITIVE_TEMP_EXP_A_2 (0.126968600000 * pow(10,3)) +#define THERMOCOUPLE_POSITIVE_TEMP_EXP_A_0 (0.118597600000 * pow(10,0)) ///< K TC positive temperature exponent coefficient A0 +#define THERMOCOUPLE_POSITIVE_TEMP_EXP_A_1 (-0.118343200000 * pow(10,-3)) ///< K TC positive temperature exponent coefficient A1 +#define THERMOCOUPLE_POSITIVE_TEMP_EXP_A_2 (0.126968600000 * pow(10,3)) ///< K TC positive temperature exponent coefficient A2 -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_0 0 -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_1 (2.508355 * pow(10,1)) -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_2 (7.860106 * pow(10,-2)) -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_3 (-2.503131 * pow(10,-1)) -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_4 (8.315270 * pow(10,-2)) -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_5 (-1.228034 * pow(10,-2)) -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_6 (9.804036 * pow(10,-4)) -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_7 (-4.413030 * pow(10,-5)) -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_8 (1.057734 * pow(10,-6)) -#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_9 (-1.052755 * pow(10,-8)) +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_0 0 ///< K TC positive temperature inverse D0 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_1 (2.508355 * pow(10,1)) ///< K TC positive temperature inverse D1 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_2 (7.860106 * pow(10,-2)) ///< K TC positive temperature inverse D2 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_3 (-2.503131 * pow(10,-1)) ///< K TC positive temperature inverse D3 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_4 (8.315270 * pow(10,-2)) ///< K TC positive temperature inverse D4 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_5 (-1.228034 * pow(10,-2)) ///< K TC positive temperature inverse D5 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_6 (9.804036 * pow(10,-4)) ///< K TC positive temperature inverse D6 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_7 (-4.413030 * pow(10,-5)) ///< K TC positive temperature inverse D7 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_8 (1.057734 * pow(10,-6)) ///< K TC positive temperature inverse D8 coefficient +#define THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_9 (-1.052755 * pow(10,-8)) ///< K TC positive temperature inverse D9 coefficient /// Temperature sensor self test states typedef enum tempSensors_Self_Test_States @@ -142,8 +144,9 @@ [ NUM_OF_READ_AND_ERROR_ARRAY_COLUMNS ]; ///< Read and error counts from FPGA array //static F32 temperatureValues [ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature values array //TODO Remove static OVERRIDE_F32_T temperatureValues [ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature values array -static U32 elapsedTime; ///< Elapsed time -static U32 conversionTimer; +static U32 elapsedTime; ///< Elapsed time variable +static U32 internalHeatersConversionTimer; ///< Conversion timer variable to calculate the heaters internal temperature + // Private functions prototypes static TEMPSENSORS_SELF_TEST_STATES_T handleSelfTestStart ( void ); @@ -164,7 +167,8 @@ * The initTemperatureSensors function initializes the module * @details * Inputs : none - * Outputs : none + * Outputs : tempSensorsSelfTestResult, tempSensorsSelfTestState, + * tempSensorsExecState, sampleCount, elapsedTime, tempSensorsConstants * @param none * @return none *************************************************************************/ @@ -215,10 +219,10 @@ * The execTemperatureSensorsSelfTest function runs the TemperatureSensors * POST during the self test * @details - * Inputs : none - * Outputs : SELF_TEST_STATUS_T + * Inputs : tempSensorsSelfTestState + * Outputs : tempSensorsSelfTestState * @param none - * @return SELF_TEST_STATUS_T + * @return tempSensorsSelfTestState *************************************************************************/ SELF_TEST_STATUS_T execTemperatureSensorsSelfTest ( void ) { @@ -255,14 +259,14 @@ * The execTemperatureSensors function runs the TemperatureSensors main * tasks * @details - * Inputs : none - * Outputs : none + * Inputs : tempSensorsExecState + * Outputs : tempSensorsExecState * @param none * @return none *************************************************************************/ void execTemperatureSensors ( void ) { - // read the sensors all the time + // Read the sensors all the time switch ( tempSensorsExecState ) { case TEMPSENSORS_SELF_TEST_START: @@ -274,7 +278,8 @@ break; default: - SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, + SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, + SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, tempSensorsExecState ); tempSensorsExecState = TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES; break; @@ -284,17 +289,17 @@ /************************************************************************* * @brief * The getTemperatureValue function gets the enum of the requested - * temperature sensor, converts the ADC of it to temperature in degree C - * and returns the temperature + * temperature sensor and returns the temperature * @details - * Inputs : TEMPERATURE_SENSORS_T (sensor) - * Outputs : F32 (temperature in deg C) - * @param none - * @return F32 (temperature in deg C) + * Inputs : none + * Outputs : none + * @param sensor + * @return temperature *************************************************************************/ F32 getTemperatureValue ( U32 sensor ) { F32 temperature; + if ( temperatureValues [ sensor ].override == OVERRIDE_KEY ) { temperature = temperatureValues [ sensor ].ovData; @@ -303,101 +308,7 @@ { temperature = temperatureValues [ sensor ].data; } - /*switch ( sensor ) - { - case TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR: - if ( temperatureValues [ TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ].override == OVERRIDE_KEY ) - { - temperature = temperatureValues [ TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ].ovData; - } - else - { - temperature = temperatureValues [ TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ].data; - } - break; - case TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR: - if ( temperatureValues [ TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ].override == OVERRIDE_KEY ) - { - temperature = temperatureValues [ TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ].ovData; - } - else - { - temperature = temperatureValues [ TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ].data; - } - break; - - case TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR: - if ( temperatureValues [ TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR ].override == OVERRIDE_KEY ) - { - temperature = temperatureValues [ TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR ].ovData; - } - else - { - temperature = temperatureValues [ TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR ].data; - } - break; - - case TEMPSENSORS_CONDUCTIVITY_SENSOR_2_TEMP_SENSOR: - if ( temperatureValues [ TEMPSENSORS_CONDUCTIVITY_SENSOR_2_TEMP_SENSOR ].override == OVERRIDE_KEY ) - { - temperature = temperatureValues [ TEMPSENSORS_CONDUCTIVITY_SENSOR_2_TEMP_SENSOR ].ovData; - } - else - { - temperature = temperatureValues [ TEMPSENSORS_CONDUCTIVITY_SENSOR_2_TEMP_SENSOR ].data; - } - break; - - case TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR: - if ( temperatureValues [ TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ].override == OVERRIDE_KEY ) - { - temperature = temperatureValues [ TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ].ovData; - } - else - { - temperature = temperatureValues [ TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ].data; - } - break; - - case TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR: - if ( temperatureValues [ TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR ].override == OVERRIDE_KEY ) - { - temperature = temperatureValues [ TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR ].ovData; - } - else - { - temperature = temperatureValues [ TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR ].data; - } - break; - - case TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR: - if ( temperatureValues [ TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR ].override == OVERRIDE_KEY ) - { - temperature = temperatureValues [ TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR ].ovData; - } - else - { - temperature = temperatureValues [ TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR ].data; - } - break; - - case TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR: - if ( temperatureValues [ TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR ].override == OVERRIDE_KEY ) - { - temperature = temperatureValues [ TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR ].ovData; - } - else - { - temperature = temperatureValues [ TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR ].data; - } - break; - - default: - // ToDo: Warning? - break; - }*/ - return temperature; } @@ -408,10 +319,10 @@ * The getADC2TempConversion function calculates the temperature from * ADC read from FPGA * @details - * Inputs : U32 (adc, gain, refResistance) - * Outputs : F32 (temperature in deg C) - * @param none - * @return F32 (temperature in deg C) + * Inputs : none + * Outputs : temperatureValues + * @param avgADC, gain, refResistance, zeroDegResistance + * @return temperature *************************************************************************/ static F32 getADC2TempConversion ( F32 avgADC, U32 gain, U32 refResistance, U32 zeroDegResistance ) { @@ -424,45 +335,58 @@ return temperature; } +/************************************************************************* + * @brief + * The getHeaterInternalTemp function calculates the internal temperature + * of the heaters + * @details + * Inputs : temperatureValues + * Outputs : temperatureValues + * @param TCIndex, CJIndex + * @return none + *************************************************************************/ static void getHeaterInternalTemp ( U32 TCIndex, U32 CJIndex ) { F32 temperature; F32 equiVoltage; F32 correctedVoltage; F32 TCTemp = temperatureValues [ TCIndex ].data; - F32 CJTemp = temperatureValues [ CJIndex ].data; + //F32 CJTemp = temperatureValues [ CJIndex ].data; + // TODO For testing only REMOVE + F32 CJTemp = 29; + // Remove after testing // Value in milli-volts F32 rawVoltage = ( TCTemp - CJTemp ) * K_THERMOCOUPLE_TEMP_2_MILLI_VOLT_CONVERSION_COEFF; // TODO add positive and negative check - equiVoltage = THERMOCOUPLE_POSITIVE_TEMP_C_0 * pow(CJTemp, 0) + - THERMOCOUPLE_POSITIVE_TEMP_C_1 * pow(CJTemp, 1) + - THERMOCOUPLE_POSITIVE_TEMP_C_2 * pow(CJTemp, 2) + - THERMOCOUPLE_POSITIVE_TEMP_C_3 * pow(CJTemp, 3) + - THERMOCOUPLE_POSITIVE_TEMP_C_4 * pow(CJTemp, 4) + - THERMOCOUPLE_POSITIVE_TEMP_C_5 * pow(CJTemp, 5) + - THERMOCOUPLE_POSITIVE_TEMP_C_6 * pow(CJTemp, 6) + - THERMOCOUPLE_POSITIVE_TEMP_C_7 * pow(CJTemp, 7) + - THERMOCOUPLE_POSITIVE_TEMP_C_8 * pow(CJTemp, 8) + - THERMOCOUPLE_POSITIVE_TEMP_C_9 * pow(CJTemp, 9) + + equiVoltage = THERMOCOUPLE_POSITIVE_TEMP_C_0 * (pow(CJTemp, 0)) + + THERMOCOUPLE_POSITIVE_TEMP_C_1 * (pow(CJTemp, 1)) + + THERMOCOUPLE_POSITIVE_TEMP_C_2 * (pow(CJTemp, 2)) + + THERMOCOUPLE_POSITIVE_TEMP_C_3 * (pow(CJTemp, 3)) + + THERMOCOUPLE_POSITIVE_TEMP_C_4 * (pow(CJTemp, 4)) + + THERMOCOUPLE_POSITIVE_TEMP_C_5 * (pow(CJTemp, 5)) + + THERMOCOUPLE_POSITIVE_TEMP_C_6 * (pow(CJTemp, 6)) + + THERMOCOUPLE_POSITIVE_TEMP_C_7 * (pow(CJTemp, 7)) + + THERMOCOUPLE_POSITIVE_TEMP_C_8 * (pow(CJTemp, 8)) + + THERMOCOUPLE_POSITIVE_TEMP_C_9 * (pow(CJTemp, 9)) + THERMOCOUPLE_POSITIVE_TEMP_EXP_A_0 * - exp(THERMOCOUPLE_POSITIVE_TEMP_EXP_A_1 * pow((CJTemp - THERMOCOUPLE_POSITIVE_TEMP_EXP_A_2),2)); + (exp(THERMOCOUPLE_POSITIVE_TEMP_EXP_A_1 * pow((CJTemp - THERMOCOUPLE_POSITIVE_TEMP_EXP_A_2),2))); correctedVoltage = rawVoltage + equiVoltage; temperature = THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_0 + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_1 * correctedVoltage + - THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_2 * pow(correctedVoltage, 2) + - THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_3 * pow(correctedVoltage, 3) + - THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_4 * pow(correctedVoltage, 4) + - THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_5 * pow(correctedVoltage, 5) + - THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_6 * pow(correctedVoltage, 6) + - THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_7 * pow(correctedVoltage, 7) + - THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_8 * pow(correctedVoltage, 8) + - THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_9 * pow(correctedVoltage, 9); + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_2 * (pow(correctedVoltage, 2)) + + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_3 * (pow(correctedVoltage, 3)) + + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_4 * (pow(correctedVoltage, 4)) + + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_5 * (pow(correctedVoltage, 5)) + + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_6 * (pow(correctedVoltage, 6)) + + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_7 * (pow(correctedVoltage, 7)) + + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_8 * (pow(correctedVoltage, 8)) + + THERMOCOUPLE_POSITIVE_TEMP_INVERSE_D_9 * (pow(correctedVoltage, 9)); - if ( TCIndex == TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR ) + if ( TCIndex == TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR ) { temperatureValues [ TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP ].data = temperature; } @@ -472,6 +396,7 @@ } } +// TODO break this function /************************************************************************* * @brief * The processADCRead function receives the ADC value and the sensor @@ -480,7 +405,7 @@ * @details * Inputs : U32 (sensorIndex, adc) * Outputs : none - * @param none + * @param sensorIndex, adc, fpgaError, fpgaCount * @return none *************************************************************************/ static void processADCRead (U32 sensorIndex, U32 adc, U32 fpgaError, U32 fpgaCount ) @@ -531,13 +456,19 @@ else if ( sensorIndex == TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR || sensorIndex == TEMPSENSORS_TRIMMER_HEATER_THERMO_COUPLE_TEMP_SESNOR ) { + // Cast the adc from U32 to U16 and shit it to left by 2 U16 adcConv = ( (U16)adc ) << SHIFT_BITS_BY_2; + // Cast from U16 to S16 and shift the bits to right by 2 + // so if the sign bit is 1, the sign bit is extended convertedADC = ( (S16)adcConv ) >> SHIFT_BITS_BY_2; } else if ( sensorIndex == TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR || sensorIndex == TEMPSENSORS_TRIMMER_HEATER_COLD_JUNCTION_TEMP_SENSOR ) { + // Cast the adc from U32 to U16 and shift it by 4 U16 rawADC = ( (U16)adc ) << SHIFT_BITS_BY_4; + // Cast from U16 to S16 and shift the bits to right by 4 + // so if the sign bit is 1, the sign bit is extended convertedADC = ( (S16)rawADC ) >> SHIFT_BITS_BY_4; } @@ -599,12 +530,12 @@ tempSensorsConstants [ sensorIndex ] [ ADC_READ_REF_RESISTANCE_INDEX ], tempSensorsConstants [ sensorIndex ] [ ADC_READ_0_DEG_RESISTANCE_INDEX ] ); } - else if ( sensorIndex == TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR || + if ( sensorIndex == TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR || sensorIndex == TEMPSENSORS_TRIMMER_HEATER_THERMO_COUPLE_TEMP_SESNOR ) { temperature = avgADCReads * HEATERS_INTERNAL_ADC_TO_TEMP_CONVERSION_COEFF; } - else if ( sensorIndex == TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR || + if ( sensorIndex == TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR || sensorIndex == TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR ) { temperature = avgADCReads * HEATERS_COLD_JUNCTION_ADC_TO_TEMP_CONVERSION_COEFF; @@ -614,12 +545,12 @@ } /************************************************************************* - * @brief handleSelfTestStart - * The handleSelfTestStart function waits for the ADC read array to be - * filled up for the first time. It then sets the state to next state + * @brief + * The handleSelfTestStart function transitions the self test state to + * check ADC * @details * Inputs : none - * Outputs : state (TEMPSENSORS_SELF_TEST_STATES_T) + * Outputs : none * @param none * @return state (TEMPSENSORS_SELF_TEST_STATES_T) *************************************************************************/ @@ -635,7 +566,7 @@ * switches to the next state * @details * Inputs : none - * Outputs : state (TEMPSENSORS_SELF_TEST_STATES_T) + * Outputs : none * @param none * @return state (TEMPSENSORS_SELF_TEST_STATES_T) *************************************************************************/ @@ -664,7 +595,7 @@ * sensors to make sure they are within the allowed range from each other * @details * Inputs : none - * Outputs : state (TEMPSENSORS_SELF_TEST_STATES_T) + * Outputs : none * @param none * @return state (TEMPSENSORS_SELF_TEST_STATES_T) *************************************************************************/ @@ -698,10 +629,11 @@ /************************************************************************* * @brief - * The handleExecStart function switches the state to read + * The handleExecStart function waits for a period of time and switches to + * the state that reads the ADC values from FPGA * @details * Inputs : none - * Outputs : state (TEMPSENSORS_EXEC_STATES_T) + * Outputs : elapsedTime * @param none * @return state (TEMPSENSORS_EXEC_STATES_T) *************************************************************************/ @@ -724,10 +656,13 @@ /************************************************************************* * @brief - * The handleExecGetADCValues function reads the ADC values from FPGA + * The handleExecGetADCValues function reads the ADC values from FPGA and + * at the specified time intervals, checks the temperature range of the + * inlet water and calls other functions to calculate the internal temperature + * of the heaters * @details * Inputs : none - * Outputs : state (TEMPSENSORS_EXEC_STATES_T) + * Outputs : internalHeatersConversionTimer, elapsedTime, temperatureValues * @param none * @return state (TEMPSENSORS_EXEC_STATES_T) *************************************************************************/ @@ -745,7 +680,7 @@ processADCRead( TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR, getFPGATDiTemp(), getFPGATDiErrorCount(), getFPGATDiReadCount() ); processADCRead( TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR, getFPGAPrimaryHeaterTemp(), getFPGAPrimaryHeaterFlags(), getFPGAPrimaryHeaterReadCount() ); processADCRead( TEMPSENSORS_TRIMMER_HEATER_THERMO_COUPLE_TEMP_SESNOR, getFPGATrimmerHeaterTemp(), getFPGATrimmerHeaterFlags(), getFPGATrimmerHeaterReadCount() ); - processADCRead( TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR, getFPGAPRimaryColdJunctionTemp(), getFPGATrimmerHeaterFlags(), getFPGATrimmerHeaterReadCount() ); + processADCRead( TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR, getFPGAPRimaryColdJunctionTemp(), getFPGATrimmerHeaterFlags(), getFPGAPrimaryHeaterReadCount() ); processADCRead( TEMPSENSORS_TRIMMER_HEATER_COLD_JUNCTION_TEMP_SENSOR, getFPGATrimmerColdJunctionTemp(), getFPGATrimmerHeaterFlags(), getFPGATrimmerHeaterReadCount() ); // Check the inlet water is within temperature range at the desired time interval @@ -763,26 +698,38 @@ SET_ALARM_WITH_1_U32_DATA ( ALARM_ID_INLET_WATER_TEMPERATURE_OUT_OF_RANGE, inletTemperature ); } } - if ( conversionTimer >= 20 ) + if ( internalHeatersConversionTimer >= HEATERS_INTERNAL_TEMPERTURE_CALCULATION_INTERVAL ) { getHeaterInternalTemp ( TEMPSENSORS_PRIMARY_HEATER_THERMO_COUPLE_TEMP_SENSOR, TEMPSENSORS_PRIMARY_HEATER_COLD_JUNCTION_TEMP_SENSOR); getHeaterInternalTemp ( TEMPSENSORS_TRIMMER_HEATER_THERMO_COUPLE_TEMP_SESNOR, TEMPSENSORS_TRIMMER_HEATER_COLD_JUNCTION_TEMP_SENSOR); - conversionTimer = 0; + internalHeatersConversionTimer = 0; } else { - conversionTimer++; + internalHeatersConversionTimer++; } return state; } +/************************************************************************* + * @brief + * The testSetMeasuredTemperatureOverride function sets the override value + * for a specific temperature sensor + * @details + * Inputs : temperatureValues + * Outputs : temperatureValues + * @param sensor, temperature + * @return result + *************************************************************************/ + BOOL testSetMeasuredTemperatureOverride ( TEMPERATURE_SENSORS_T sensor, F32 temperature ) { BOOL result = FALSE; + if ( sensor < NUM_OF_TEMPERATURE_SENSORS ) { if ( isTestingActivated() ) @@ -795,9 +742,21 @@ return result; } + +/************************************************************************* + * @brief + * The testSetMeasuredTemperatureOverride function resets the override value + * of a specified temperature sensor + * @details + * Inputs : temperatureValues + * Outputs : temperatureValues + * @param sensor + * @return result + *************************************************************************/ BOOL testResetMeasuredTemperatureOverride ( TEMPERATURE_SENSORS_T sensor ) { BOOL result = FALSE; + if ( sensor < NUM_OF_TEMPERATURE_SENSORS ) { if ( isTestingActivated() ) Index: firmware/App/Controllers/TemperatureSensors.h =================================================================== diff -u -re071a6ac6e8fe7a729730b90334af153afe97817 -r26c64288f4baab3707eb9555636b61c0e747f965 --- firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision e071a6ac6e8fe7a729730b90334af153afe97817) +++ firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision 26c64288f4baab3707eb9555636b61c0e747f965) @@ -20,7 +20,7 @@ #include "Common.h" /** - * @defgroup TemperatureSensors + * @defgroup TemperatureSensors TemperatureSensors * @brief Temperature Sensors driver module. * Reads and processes the temperature sensors. * @@ -52,8 +52,6 @@ void execTemperatureSensors ( void ); -//F32 getTemperatureValue ( TEMPERATURE_SENSORS_T sensor ); //Todo Remove - DATA_ARRAY_GET_PROTOTYPE ( F32, getTemperatureValue, sensor ); BOOL testSetMeasuredTemperatureOverride ( TEMPERATURE_SENSORS_T sensor, F32 temperature ); //Todo add to AE Index: firmware/App/Services/FPGA.c =================================================================== diff -u -re071a6ac6e8fe7a729730b90334af153afe97817 -r26c64288f4baab3707eb9555636b61c0e747f965 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision e071a6ac6e8fe7a729730b90334af153afe97817) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 26c64288f4baab3707eb9555636b61c0e747f965) @@ -1356,10 +1356,31 @@ return fpgaSensorReadings.fpgaTrimmerHeaterReadCnt; } +/*********************************************************************//** + * @brief + * The getFPGAPRimaryColdJunctionTemp function gets primary cold junction + * temperature + * @details + * Inputs : fpgaSensorReadings.fpgaPrimaryHeaterIntJunctionTemp + * Outputs : none + * @param none + * @return Last primary cold junction temperature + *************************************************************************/ U16 getFPGAPRimaryColdJunctionTemp ( void ) { return fpgaSensorReadings.fpgaPrimaryHeaterIntJunctionTemp; } + +/*********************************************************************//** + * @brief + * The getFPGATrimmerColdJunctionTemp function gets trimmer cold junction + * temperature + * @details + * Inputs : fpgaSensorReadings.fpgaTrimmerHeaterIntJunctionTemp + * Outputs : none + * @param none + * @return Last trimmer cold junction temperature + *************************************************************************/ U16 getFPGATrimmerColdJunctionTemp ( void ) { return fpgaSensorReadings.fpgaTrimmerHeaterIntJunctionTemp;