Definition in file s_temperature.c.
#include <string.h>
#include <stdio.h>
#include "compiler.h"
#include "s_temperature.h"
#include "board.h"
#include "gpio.h"
#include "adc.h"
Go to the source code of this file.
Functions | |
Bool | b_temperature_get_value (char *buf) |
Get the current temperature value. | |
Variables | |
static volatile avr32_adc_t * | adc = (volatile avr32_adc_t *) &AVR32_ADC |
const unsigned short | temperature_code [] |
The following table give the correspondance between the ADC code and the temperature Each elements of the table corresponds to an ADC code value. |
Bool b_temperature_get_value | ( | char * | buf | ) |
Get the current temperature value.
buf | char buffer in which the temperature value is stored. |
Definition at line 89 of file s_temperature.c.
References adc, and temperature_code.
Referenced by device_full_custom_task().
00090 { 00091 int i_current_val, value, index = 0; 00092 00093 00094 /* enable channel for sensor */ 00095 adc_enable( adc, ADC_TEMPERATURE_CHANNEL ); 00096 // start conversion 00097 adc_start( adc ); 00098 // get value for sensor 00099 value = adc_get_value( adc, ADC_TEMPERATURE_CHANNEL ); 00100 /* Disable channel for sensor */ 00101 adc_disable( adc, ADC_TEMPERATURE_CHANNEL ); 00102 00103 if(value > temperature_code[0]) 00104 { 00105 i_current_val = -20; 00106 } 00107 else 00108 { 00109 while(temperature_code[index++] > value); 00110 i_current_val = (index - 1 - 20); 00111 } 00112 00113 // Build the log string. 00114 sprintf( buf, "%2dC\r\n", i_current_val); 00115 return TRUE; 00116 }
volatile avr32_adc_t* adc = (volatile avr32_adc_t *) &AVR32_ADC [static] |
ADC cell.
Definition at line 78 of file s_temperature.c.
const unsigned short temperature_code[] |
Initial value:
{ 0x3B4,0x3B0,0x3AB,0x3A6,0x3A0,0x39A,0x394,0x38E,0x388,0x381,0x37A,0x373, 0x36B,0x363,0x35B,0x353,0x34A,0x341,0x338,0x32F,0x325,0x31B,0x311,0x307, 0x2FC,0x2F1,0x2E6,0x2DB,0x2D0,0x2C4,0x2B8,0x2AC,0x2A0,0x294,0x288,0x27C, 0x26F,0x263,0x256,0x24A,0x23D,0x231,0x225,0x218,0x20C,0x200,0x1F3,0x1E7, 0x1DB,0x1CF,0x1C4,0x1B8,0x1AC,0x1A1,0x196,0x18B,0x180,0x176,0x16B,0x161, 0x157,0x14D,0x144,0x13A,0x131,0x128,0x11F,0x117,0x10F,0x106,0xFE,0xF7, 0xEF,0xE8,0xE1,0xDA,0xD3,0xCD,0xC7,0xC0,0xBA,0xB5,0xAF,0xAA,0xA4,0x9F, 0x9A,0x96,0x91,0x8C,0x88,0x84,0x80,0x7C,0x78,0x74,0x71,0x6D,0x6A,0x67, 0x64,0x61,0x5E,0x5B,0x58,0x55,0x53,0x50,0x4E,0x4C,0x49,0x47,0x45,0x43, 0x41,0x3F,0x3D,0x3C,0x3A,0x38}
The index in the table give the corresponding temperature (inC) with the following formula : Tempeature=index-20. table[O] corresponds to -20C temperature code The following table gives the ADC code for VCC=3.3V and Aref=AVcc
Definition at line 65 of file s_temperature.c.
Referenced by b_temperature_get_value().