From 86e4059865e1c079d146195e9e073dbbc975b6a5 Mon Sep 17 00:00:00 2001 From: Leonardo Martinez <leonardo.martinez.hornak@fing.edu.uy> Date: Mon, 17 May 2021 17:16:34 -0300 Subject: [PATCH] Temperature obtained in celsius degrees --- firmware/include/adc.h | 4 ++-- firmware/include/common.h | 1 + firmware/src/adc.c | 16 ++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/firmware/include/adc.h b/firmware/include/adc.h index 810d9a7..8dda0ec 100644 --- a/firmware/include/adc.h +++ b/firmware/include/adc.h @@ -37,8 +37,8 @@ void setTempCallbackFunction(void *callback_function); void runADCConversion(void); /** - * @brief Obtains the last temperature reading in milicelsius - * @return int temperature in celsius degrees divided by 1000 + * @brief Obtains the last temperature reading in celsius + * @return int temperature in celsius degrees * */ int getTemperatureReading(void); diff --git a/firmware/include/common.h b/firmware/include/common.h index a5e5a35..01bf49a 100644 --- a/firmware/include/common.h +++ b/firmware/include/common.h @@ -12,5 +12,6 @@ #define INCLUDE_COMMON_H_ //#define DEBUG +#define REF_VOLTAGE_DIV_BY_ADC_10BITS_RESOLUTION 1.17 #endif /* INCLUDE_COMMON_H_ */ diff --git a/firmware/src/adc.c b/firmware/src/adc.c index 436ad9c..7c2d7bc 100644 --- a/firmware/src/adc.c +++ b/firmware/src/adc.c @@ -1,4 +1,5 @@ #include <msp.h> +#include "common.h" #include "adc.h" #include "fifo_function_queue.h" @@ -55,25 +56,28 @@ void runADCConversion(){ int getTemperatureReading(){ int temp; - //Converts mVolts to miliCelsius using temperature sensor transfer function (no calibration) + float aux; + //Converts ADC Reading to mVolts (1.2 Volts set for reference voltage) + aux = (float)(adcval) * REF_VOLTAGE_DIV_BY_ADC_10BITS_RESOLUTION; + + //Converts mVolts to celsius using temperature sensor transfer function (no calibration) //Using 10 bits resolution - temp = (((adcval - 686) * 512)/1024); + temp = (int)((aux - 686) * 0.512); return temp; } void ADC14_IRQHandler(void) { - addToFunctionQueue(temperature_ready_callback); - //Reading to ADC14MEM clears the IFG adcval = ADC14->MEM[0]; ADC14->CTL0 &= ~ADC14_CTL0_ENC; ADC14->CTL0 &= ~ADC14_CTL0_ON; - __low_power_mode_off_on_exit(); - //Disable ISRs ADC14 -> IER0 &= ~ADC14_IER0_IE0; NVIC_DisableIRQ(ADC14_IRQn); + + addToFunctionQueue(temperature_ready_callback); + __low_power_mode_off_on_exit(); } -- GitLab