diff --git a/firmware/include/adc.h b/firmware/include/adc.h index 810d9a7f9c8e9c6123df1a65fd512df26a128c0b..8dda0ecd065c8c137183c18ee5f732839a0fef23 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 a5e5a35241b3431943a0b50f0d750e063d6c2ebd..01bf49af49a907979384dd32d18c0f14b5b4fc2f 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 436ad9c793fd5dfc590a699a8328fb4714b0f564..7c2d7bc64cd7c114001a98a2e900cf7e18eb6c13 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(); }