Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r28672c1c97532a025a2ca23148760904bde814e5 -rb170a68ce18b6654fb3abad7d5611f0b681f1278 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 28672c1c97532a025a2ca23148760904bde814e5) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision b170a68ce18b6654fb3abad7d5611f0b681f1278) @@ -151,9 +151,16 @@ * @brief * The initHeaters function initializes the variables and the PI controllers * for the primary and trimmer heaters. - * @details - * Inputs : none - * Outputs : Heaters module initialized + * @details Inputs: heatersSelfTestState, primaryHeatersExecState, + * trimmerHeaterExecState, primaryHeaterTargetTemperature, + * trimmerHeaterTargetTemperature, primaryHeaterTimerCounter, + * dataPublicationTimerCounter, isPrimaryHeaterOn, isTrimmerHeaterOn, + * selfTestElapsedTime + * @details Outputs: heatersSelfTestState, primaryHeatersExecState, + * trimmerHeaterExecState, primaryHeaterTargetTemperature, + * trimmerHeaterTargetTemperature, primaryHeaterTimerCounter, + * dataPublicationTimerCounter, isPrimaryHeaterOn, isTrimmerHeaterOn, + * selfTestElapsedTime * @return none *************************************************************************/ void initHeaters( void ) @@ -183,9 +190,8 @@ * @brief * The setPrimaryHeaterTargetTemperature function sets the primary heater * target temperature. - * @details - * Inputs : none - * Outputs : primaryHeaterTargetTemperature + * @details Inputs: primaryHeaterTargetTemperature + * @details Outputs: primaryHeaterTargetTemperature * @param targetTemp target temperature for the primary heater * @return none *************************************************************************/ @@ -198,9 +204,8 @@ * @brief * The setTrimmerHeaterTargetTemperature function sets the trimmer heater * target temperature. - * @details - * Inputs : none - * Outputs : trimmerHeaterTargetTemperature + * @details Inputs: trimmerHeaterTargetTemperature + * @details Outputs: trimmerHeaterTargetTemperature * @param targetTemp target temperature for the trimmer heater * @return none *************************************************************************/ @@ -213,10 +218,10 @@ * @brief * The startPrimaryHeater function starts the primary heaters. It resets * the primary heaters state and sets the main primary heater duty cycle. - * @details - * Inputs : primaryHeaterTargetTemperature - * Outputs : hasStartPrimaryHeaterRequested - * @return status + * @details Inputs: primaryHeaterTargetTemperature, + * hasStartPrimaryHeaterRequested + * @details Outputs: hasStartPrimaryHeaterRequested + * @return returns TRUE if the status of the primary heater was successful *************************************************************************/ BOOL startPrimaryHeater( void ) { @@ -237,10 +242,10 @@ * @brief * 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 : trimmerHeaterTargetTemperature - * Outputs : hasStartTrimmerHeaterRequested - * @return status + * @details Inputs: trimmerHeaterTargetTemperature, + * hasStartTrimmerHeaterRequested + * @details Outputs: hasStartTrimmerHeaterRequested + * @return returns TRUE if the staring the trimmer heater was successful *************************************************************************/ BOOL startTrimmerHeater( void ) { @@ -260,9 +265,10 @@ /*********************************************************************//** * @brief * The stopPrimaryHeater function stops the primary heater. - * @details - * Inputs : none - * Outputs : Primary heater stops + * @details Inputs: mainPrimaryHeaterDutyCycle, smallPrimaryHeaterDutyCycle, + * isPrimaryHeaterOn + * @details Outputs: mainPrimaryHeaterDutyCycle, smallPrimaryHeaterDutyCycle, + * isPrimaryHeaterOn * @return none *************************************************************************/ void stopPrimaryHeater( void ) @@ -277,9 +283,8 @@ /*********************************************************************//** * @brief * The stopTrimmerHeater function stops the trimmer heater. - * @details - * Inputs : none - * Outputs : Trimmer heater stops + * @details Inputs: trimmerHeaterDutyCycle, isTrimmerHeaterOn + * @details Outputs: trimmerHeaterDutyCycle, isTrimmerHeaterOn * @return none *************************************************************************/ void stopTrimmerHeater( void ) @@ -291,10 +296,10 @@ /*********************************************************************//** * @brief - * The execHeatersMonitor function turns off the heaters when RO pump is not on. - * @details - * Inputs : none - * Outputs : Turns off the heaters when RO pump is not on + * The execHeatersMonitor function turns off the heaters when RO pump is + * not on. + * @details Inputs: none + * @details Outputs: none * @return none *************************************************************************/ void execHeatersMonitor( void ) @@ -313,11 +318,11 @@ /*********************************************************************//** * @brief - * The execHeatersSelfTest function executes the heaters' self-test state machine. - * @details - * Inputs : heatersSelfTestState - * Outputs : heatersSelfTestState - * @return heatersSelfTestState + * The execHeatersSelfTest function executes the heaters' self-test state + * machine. + * @details Inputs: heatersSelfTestState + * @details Outputs: heatersSelfTestState + * @return heatersSelfTestResult which is the status of the heaters self test *************************************************************************/ SELF_TEST_STATUS_T execHeatersSelfTest( void ) { @@ -351,9 +356,8 @@ /*********************************************************************//** * @brief * The execPrimaryHeaters function executes the primary heaters' state machine. - * @details - * Inputs : primaryHeatersExecState - * Outputs : primaryHeatersExecState + * @details Inputs: primaryHeatersExecState + * @details Outputs: primaryHeatersExecState * @return none *************************************************************************/ void execPrimaryHeaters( void ) @@ -378,9 +382,8 @@ /*********************************************************************//** * @brief * The execTrimmerHeater function executes the trimmer heater's state machine. - * @details - * Inputs : trimmerHeaterExecState - * Outputs : trimmerHeaterExecState + * @details Inputs: trimmerHeaterExecState + * @details Outputs: trimmerHeaterExecState * @return none *************************************************************************/ void execTrimmerHeater( void ) @@ -400,16 +403,17 @@ trimmerHeaterExecState = TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET; break; } + + publishHeatersData(); } /*********************************************************************//** * @brief - * The handleHeatersSelfTestStart function starts the small primary and - * the trimmer heaters for self-test. - * @details - * Inputs : heatersSelfTestResult, selfTestElapsedTime - * Outputs : heatersSelfTestResult, selfTestElapsedTime - * @return state (HEATERS_SELF_TEST_STATES_T) + * The handleHeatersSelfTestStart function handles the start state of the + * heaters self test. + * @details Inputs: heatersSelfTestResult, selfTestElapsedTime + * @details Outputs: heatersSelfTestResult, selfTestElapsedTime + * @return next state *************************************************************************/ static HEATERS_SELF_TEST_STATES_T handleHeatersSelfTestStart( void ) { @@ -435,26 +439,24 @@ * elapsed, it checks the thermocouple temperature shared among the two * heaters. If they are in range, it sets the main primary heater and transitions * to the next state. If it fails, it sets an alarm and fails the test. - * @details - * Inputs : heatersSelfTestResult, selfTestElapsedTime - * Outputs : heatersSelfTestResult, selfTestElapsedTime - * @return state (HEATERS_SELF_TEST_STATES_T) + * @details Inputs: heatersSelfTestResult, selfTestElapsedTime + * @details Outputs: heatersSelfTestResult, selfTestElapsedTime + * @return next state *************************************************************************/ static HEATERS_SELF_TEST_STATES_T handleHeatersSelfTestSmallPrimaryAndTrimmerHeaters( void ) { HEATERS_SELF_TEST_STATES_T state = HEATERS_SELF_TEST_SMALL_PRIMARY_AND_TRIMMER_HEATERS; if ( didTimeout( selfTestElapsedTime, HEATERS_POST_HEAT_UP_TIME_SECONDS ) ) { - setSmallPrimaryHeaterPWM( 0 ); - setTrimmerHeaterPWM( 0 ); + setSmallPrimaryHeaterPWM( 0.0 ); + setTrimmerHeaterPWM( 0.0 ); F32 convertedTemperature = getTemperatureValue( TEMPSENSORS_TRIMMER_HEATER_INTERNAL ); if ( fabs( convertedTemperature - SMALL_PRIMARY_AND_TRIMMER_HEATERS_POST_TARGET_TEMPERATURE ) > HEATERS_POST_TEMPERATURE_TOLERANCE ) { - //TODO alarm - // TODO POST failed + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_HEATERS_FAULT, HEATERS_SELF_TEST_SMALL_PRIMARY_AND_TRIMMER_HEATERS ); heatersSelfTestResult = SELF_TEST_STATUS_FAILED; state = HEATERS_SELF_TEST_COMPLETE; } @@ -475,25 +477,23 @@ * on the main primary heater has elapsed. When the time has elapsed, it * checks to ensure the thermocouple temperature is within the tolerance * of the target temperature. It then transitions to the complete state. - * @details - * Inputs : heatersSelfTestResult - * Outputs : heatersSelfTestResult - * @return state (HEATERS_SELF_TEST_STATES_T) + * @details Inputs: heatersSelfTestResult + * @details Outputs: heatersSelfTestResult + * @return next state *************************************************************************/ static HEATERS_SELF_TEST_STATES_T handleHeatersSelfTestMainPrimaryHeater( void ) { HEATERS_SELF_TEST_STATES_T state = HEATERS_SELF_TEST_MAIN_PRIMARY_HEATER; if ( didTimeout( selfTestElapsedTime, HEATERS_POST_HEAT_UP_TIME_SECONDS ) ) { - setMainPrimaryHeaterPWM( 0 ); + setMainPrimaryHeaterPWM( 0.0 ); F32 convertedTemperature = getTemperatureValue( TEMPSENSORS_PRIMARY_HEATER_INTERNAL ); if ( fabs( convertedTemperature - MAIN_PRIMARY_HEATER_POST_TARGET_TEMPERATURE ) > HEATERS_POST_TEMPERATURE_TOLERANCE ) { - //TODO alarm - // TODO POST failed + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_HEATERS_FAULT, HEATERS_SELF_TEST_MAIN_PRIMARY_HEATER ); heatersSelfTestResult = SELF_TEST_STATUS_FAILED; } else @@ -509,12 +509,11 @@ /*********************************************************************//** * @brief - * The handlePrimaryHeaterStateOff function handles the primary heaters at - * off state. - * @details - * Inputs : hasStartPrimaryHeaterRequested, isPrimaryHeaterOn - * Outputs : state (PRIMARY_HEATERS_EXEC_STATES_T), isPrimaryHeaterOn - * @return state (PRIMARY_HEATERS_EXEC_STATES_T) + * The handlePrimaryHeaterStateOff function handles the primary heaters off + * state. + * @details Inputs: hasStartPrimaryHeaterRequested, isPrimaryHeaterOn + * @details Outputs: hasStartPrimaryHeaterRequested, isPrimaryHeaterOn + * @return next state *************************************************************************/ static PRIMARY_HEATERS_EXEC_STATES_T handlePrimaryHeaterStateOff( void ) { @@ -549,21 +548,18 @@ state = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET; } - publishHeatersData(); - return state; } /*********************************************************************//** * @brief * The handlePrimaryHeaterStateControlToTarget function handles the primary * heaters at control state when the heaters are active. - * @details - * Inputs : primaryHeaterTimerCounter, mainPrimaryHeaterDutyCycle, + * @details Inputs: primaryHeaterTimerCounter, mainPrimaryHeaterDutyCycle, * smallPrimaryHeaterDutyCycle, isPrimaryHeaterOn - * Outputs : primaryHeaterTimerCounter, mainPrimaryHeaterDutyCycle, - * smallPrimaryHeaterDutyCycle - * @return state (PRIMARY_HEATERS_EXEC_STATES_T) + * @details Outputs: primaryHeaterTimerCounter, mainPrimaryHeaterDutyCycle, + * smallPrimaryHeaterDutyCycle, isPrimaryHeaterOn + * @return next state *************************************************************************/ static PRIMARY_HEATERS_EXEC_STATES_T handlePrimaryHeaterStateControlToTarget( void ) { @@ -593,8 +589,6 @@ primaryHeaterTimerCounter = 0; } - publishHeatersData(); - // TODO remove this code #ifdef DEBUG_ENABLED #ifdef ENABLE_DIP_SWITCHES @@ -623,12 +617,11 @@ /*********************************************************************//** * @brief - * The handleTrimmerHeaterStateOff function handles the trimmer heater at + * The handleTrimmerHeaterStateOff function handles the trimmer heater * off state. - * @details - * Inputs : hasStartTrimmerHeaterRequested, isTrimmerHeaterOn - * Outputs : state (TRIMMER_HEATER_EXEC_STATES_T), isTrimmerHeaterOn - * @return state (TRIMMER_HEATER_EXEC_STATES_T) + * @details Inputs: hasStartTrimmerHeaterRequested, isTrimmerHeaterOn + * @details Outputs: hasStartTrimmerHeaterRequested, isTrimmerHeaterOn + * @return next state *************************************************************************/ static TRIMMER_HEATER_EXEC_STATES_T handleTrimmerHeaterStateOff( void ) { @@ -666,19 +659,17 @@ state = TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET; } - publishHeatersData(); - return state; } /*********************************************************************//** * @brief * The handleTrimmerHeaterControlToTarget function handles the trimmer * heater at control state when the heater is active. - * @details - * Inputs : trimmerHeaterTimerCounter, trimmerHeaterDutyCycle - * Outputs : trimmerHeaterTimerCounter, trimmerHeaterDutyCycle, isTrimmerHeaterOn - * @return state (TRIMMER_HEATER_EXEC_STATES_T) + * @details Inputs: trimmerHeaterTimerCounter, trimmerHeaterDutyCycle, + * isTrimmerHeaterOn + * @details Outputs: trimmerHeaterTimerCounter, trimmerHeaterDutyCycle + * @return next state *************************************************************************/ static TRIMMER_HEATER_EXEC_STATES_T handleTrimmerHeaterControlToTarget( void ) { @@ -692,8 +683,6 @@ trimmerHeaterTimerCounter = 0; } - publishHeatersData(); - // TODO remove this code #ifdef DEBUG_ENABLED #ifdef ENABLE_DIP_SWITCHES @@ -726,10 +715,10 @@ /*********************************************************************//** * @brief - * The setMainPrimaryHeaterPWM function sets the PWM of the main primary heater. - * @details - * Inputs : none - * Outputs : Sets the PWM duty cycle for the main primary heater + * The setMainPrimaryHeaterPWM function sets the PWM of the main primary + * heater. + * @details Inputs: none + * @details Outputs: none * @param pwm PWM duty cycle to set for 1st primary heater element * @return none *************************************************************************/ @@ -740,10 +729,10 @@ /*********************************************************************//** * @brief - * The setSmallPrimaryHeaterPWM function sets the PWM of the small primary heater. - * @details - * Inputs : none - * Outputs : Sets the PWM duty cycle for the small primary heater + * The setSmallPrimaryHeaterPWM function sets the PWM of the small primary + * heater. + * @details Inputs: none + * @details Outputs: none * @param pwm PWM duty cycle to set for 2nd primary heater element * @return none *************************************************************************/ @@ -755,9 +744,8 @@ /*********************************************************************//** * @brief * The setTrimmerHeaterPWM function sets the PWM of the trimmer heater. - * @details - * Inputs : none - * Outputs : Sets the PWM duty cycle for the trimmer heater + * @detailsInputs: none + * @details Outputs: none * @param pwm PWM duty cycle to set for trimmer heater * @return none *************************************************************************/ @@ -768,11 +756,12 @@ /*********************************************************************//** * @brief - * The resetHeaterState function resets the PI controller of the selected heater. - * @details - * Inputs : mainPrimaryHeaterDutyCycle, trimmerHeaterDutyCycle - * Outputs : mainPrimaryHeaterDutyCycle, trimmerHeaterDutyCycle - * @param heater enumeration of the heater for which the PI controller will be reset + * The resetHeaterState function resets the PI controller of the selected + * heater. + * @details Inputs: mainPrimaryHeaterDutyCycle, trimmerHeaterDutyCycle + * @details Outputs: mainPrimaryHeaterDutyCycle, trimmerHeaterDutyCycle + * @param heater enumeration of the heater for which the PI controller + * will be reset * @return none *************************************************************************/ static void resetHeaterState( NAME_OF_HEATER_T heater ) @@ -792,10 +781,9 @@ /*********************************************************************//** * @brief * The getPublishHeatersDataInterval function gets the publish interval. - * @details - * Inputs : heatersDataPublishInterval - * Outputs : none - * @return result + * @details Inputs: heatersDataPublishInterval + * @details Outputs: none + * @return data publish interval *************************************************************************/ U32 getPublishHeatersDataInterval( void ) { @@ -812,10 +800,9 @@ /*********************************************************************//** * @brief * The publishTemperatureData function publishes the temperature sensors - * data into the USB debug port at the defined time interval. - * @details - * Inputs : dataPublicationTimerCounter - * Outputs : Broadcast temperature sensors' data + * data. + * @details Inputs: dataPublicationTimerCounter + * @details Outputs: dataPublicationTimerCounter * @return none *************************************************************************/ static void publishHeatersData( void ) @@ -844,10 +831,10 @@ * @brief * The testSetHeatersPublishIntervalOverride function overrides the heaters * publish data time interval. - * @details - * Inputs : heatersDataPublishInterval - * Outputs : heatersDataPublishInterval - * @return result + * @details Inputs: heatersDataPublishInterval + * @details Outputs: heatersDataPublishInterval + * @param value which is the data publish interval + * @return data publish interval override *************************************************************************/ BOOL testSetHeatersPublishIntervalOverride( U32 value ) { @@ -869,10 +856,9 @@ * @brief * The testResetHeatersPublishIntervalOverride function resets the heaters * publish time interval to its previous time interval. - * @details - * Inputs : heatersDataPublishInterval - * Outputs : heatersDataPublishInterval - * @return result + * @details Inputs: heatersDataPublishInterval + * @details Output : heatersDataPublishInterval + * @return returns TRUE if reset was successful *************************************************************************/ BOOL testResetHeatersPublishIntervalOverride( void ) { Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u -r28672c1c97532a025a2ca23148760904bde814e5 -rb170a68ce18b6654fb3abad7d5611f0b681f1278 --- firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 28672c1c97532a025a2ca23148760904bde814e5) +++ firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision b170a68ce18b6654fb3abad7d5611f0b681f1278) @@ -23,6 +23,8 @@ /** * @defgroup Heaters Heaters * @brief Heaters driver modules. Controls the primary and trimmer heaters. + * Primary heater manufacturer: Heatron, PN: UEL14EXK2A-Rev D. The heater is a 750W flow through. + * Trimmer heater manufacturer: Heatron, PN: UEL5EXK1A-Rev D. The heater is a 70W flow through. * * @addtogroup Heaters * @{ Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r28672c1c97532a025a2ca23148760904bde814e5 -rb170a68ce18b6654fb3abad7d5611f0b681f1278 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 28672c1c97532a025a2ca23148760904bde814e5) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision b170a68ce18b6654fb3abad7d5611f0b681f1278) @@ -45,7 +45,6 @@ #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 16777215U ///< Temperature sensors max ADC count (from 2^24 -1) #define ADC_FPGA_READ_DELAY 30U ///< Delay in ms before reading the ADC values from FPGA. #define MAX_NUM_OF_RAW_ADC_SAMPLES 32U ///< Number of ADC reads for moving average calculations. @@ -73,10 +72,9 @@ #define EXTERNAL_TEMP_SENSORS_ERROR_VALUE 0x80 ///< External temperature sensors error value. #define HEATERS_INTERNAL_TEMP_SENSOR_FAULT 0x01 ///< Heaters internal temperature sensor fault. -#define TEMP_SENSORS_DATA_PUBLISH_INTERVAL (MS_PER_SECOND / TASK_PRIORITY_INTERVAL) ///< Temperature sensors publish data time interval. +#define TEMP_SENSORS_DATA_PUBLISH_INTERVAL (500 / TASK_PRIORITY_INTERVAL) ///< Temperature sensors publish data time interval. #define MAX_TEMPERATURE_SENSOR_FAILURES 5//10 ///< Maximum number of temperature sensor errors within window period before alarm. #define MAX_TEMPERATURE_SENSOR_FAILURE_WINDOW_MS (10 * MS_PER_SECOND) ///< Temperature sensor error window. -//#define TEMP_SENSORS_DATA_PUBLISH_INTERVAL (500 / TASK_PRIORITY_INTERVAL) ///< Temperature sensors publish data time interval /// Temperature sensor self-test states. typedef enum tempSensors_Self_Test_States @@ -152,7 +150,8 @@ -1.228034E-2, 9.804036E-4, -4.413030E-5, 1.057734E-6, -1.052755E-8 }; -static const U32 tempSensorsADCMaxCount = 1 << 24; +static const U32 tempSensorsADCMaxCount = ( 1 << TEMP_SENSORS_ADC_BITS ) - 1; ///< ADC 24 bit max count which is (2^24 - 1). +static const U32 tempEquationResistorCalc = 1 << ( TEMP_SENSORS_ADC_BITS - 1 ); ///< Temperature sensors resistor calculation (2^(24 - 1)) static const F32 tempEquationCoeffA = 3.9083E-3; ///< ADC to temperature conversion coefficient A. static const F32 tempEquationCoeffB = -5.775E-7; ///< ADC to temperature conversion coefficient B. @@ -400,8 +399,8 @@ if ( fabs( adcConversionCoeff ) < NEARLY_ZERO ) { - // 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 ) ) ); + // R(RTD) = R(ref) * ( adc – 2^(N - 1) ) / ( G * 2^(N - 1) ); + F32 resistance = ( refResistance * ( avgADC - tempEquationResistorCalc ) ) / ( gain * tempEquationResistorCalc ); // T = (-A + √( A^2 - 4B * ( 1 - R_T / R_0 ) ) ) / 2B F32 secondSqrtPart = 4 * tempEquationCoeffB * (1 - ( resistance / zeroDegResistance ) ); temperature = ( -tempEquationCoeffA + sqrt( pow( tempEquationCoeffA, 2 ) - secondSqrtPart ) ) / ( 2 * tempEquationCoeffB ); @@ -681,7 +680,7 @@ S32 const tpiADC = (S32)getFPGATPiTemp(); BOOL const isLessThanZero = tpiADC <= 0; - BOOL const isGreaterThanFullScale = tpiADC >= TEMP_SENSORS_ADC_MAX_COUNT; + BOOL const isGreaterThanFullScale = tpiADC >= tempSensorsADCMaxCount; if ( isLessThanZero || isGreaterThanFullScale ) { Index: firmware/App/Controllers/TemperatureSensors.h =================================================================== diff -u -r28672c1c97532a025a2ca23148760904bde814e5 -rb170a68ce18b6654fb3abad7d5611f0b681f1278 --- firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision 28672c1c97532a025a2ca23148760904bde814e5) +++ firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision b170a68ce18b6654fb3abad7d5611f0b681f1278) @@ -23,6 +23,7 @@ /** * @defgroup TemperatureSensors TemperatureSensors * @brief Temperature Sensors driver module. Reads and processes the temperature sensors. + * TODO add the sensors hardware * * @addtogroup TemperatureSensors * @{