Temperature.h 4.63 KB
 Dean Camera committed Feb 23, 2009 1 2 /* LUFA Library  Dean Camera committed Dec 30, 2009 3  Copyright (C) Dean Camera, 2010.  Dean Camera committed Feb 23, 2009 4 5 6 7 8 9  dean [at] fourwalledcubicle [dot] com www.fourwalledcubicle.com */ /*  Dean Camera committed Dec 30, 2009 10  Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)  Dean Camera committed Feb 23, 2009 11   Dean Camera committed Dec 28, 2009 12 13 14 15 16 17 18  Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of the author not be used in advertising or publicity pertaining to distribution of the  Dean Camera committed Feb 23, 2009 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35  software without specific, written prior permission. The author disclaim all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall the author be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software. */ /** \file * * Temperature sensor board driver for the USB boards which contain a temperature sensor. */  Dean Camera committed Apr 16, 2009 36 /** \ingroup Group_BoardDrivers  Dean Camera committed Nov 08, 2009 37  * @defgroup Group_Temperature Temperature Sensor Driver - LUFA/Drivers/Board/Temperature.h  Dean Camera committed Apr 16, 2009 38  *  Dean Camera committed Apr 17, 2009 39 40 41 42 43  * \section Sec_Dependencies Module Source Dependencies * The following files must be built with any user project that uses this module: * - LUFA/Drivers/Board/Temperature.c * * \section Module Description  Dean Camera committed Jul 14, 2009 44 45 46 47  * Temperature sensor driver. This provides an easy to use interface for the hardware temperature sensor located * on many boards. It provides an interface to configure the sensor and appropriate ADC channel, plus read out the * current temperature in degrees C. It is designed for and will only work with the temperature sensor located on the * official Atmel USB AVR boards, as each sensor has different characteristics.  Dean Camera committed Apr 16, 2009 48 49 50 51  * * @{ */  Dean Camera committed Feb 23, 2009 52 53 54 55 56 57 58 59 60 61 62 63 #ifndef __TEMPERATURE_H__ #define __TEMPERATURE_H__ /* Macros: */ #if !defined(__DOXYGEN__) #define INCLUDE_FROM_BOARD_DRIVER #endif /* Includes: */ #include #include "../../Common/Common.h"  Dean Camera committed Apr 16, 2009 64  #include "../Peripheral/ADC.h"  Dean Camera committed Feb 23, 2009 65 66  #if !defined(BOARD)  Dean Camera committed May 04, 2009 67  #error BOARD must be set in makefile to a value specified in BoardTypes.h.  Dean Camera committed Dec 04, 2009 68 69 70  #elif ((BOARD != BOARD_USBKEY) && (BOARD != BOARD_STK525) && \ (BOARD != BOARD_STK526) && (BOARD != BOARD_USER) && \ (BOARD != BOARD_EVK527))  Dean Camera committed Feb 23, 2009 71 72 73 74 75 76 77 78 79 80 81  #error The selected board does not contain a temperature sensor. #endif /* Enable C linkage for C++ Compilers: */ #if defined(__cplusplus) extern "C" { #endif /* Public Interface - May be used in end-application: */ /* Macros: */ /** ADC channel number for the temperature sensor. */  Dean Camera committed Jan 25, 2010 82  #define TEMP_ADC_CHANNEL 0  Dean Camera committed Feb 23, 2009 83   Dean Camera committed Jan 25, 2010 84 85 86  /** ADC channel MUX mask for the temperature sensor. */ #define TEMP_ADC_CHANNEL_MASK ADC_CHANNEL0  Dean Camera committed Apr 22, 2009 87  /** Minimum returnable temperature from the \ref Temperature_GetTemperature() function. */  Dean Camera committed Jan 25, 2010 88  #define TEMP_MIN_TEMP TEMP_TABLE_OFFSET  Dean Camera committed Feb 23, 2009 89   Dean Camera committed Apr 22, 2009 90  /** Maximum returnable temperature from the \ref Temperature_GetTemperature() function. */  Dean Camera committed Jan 25, 2010 91  #define TEMP_MAX_TEMP ((TEMP_TABLE_SIZE - 1) + TEMP_TABLE_OFFSET)  Dean Camera committed Apr 16, 2009 92   Dean Camera committed Apr 19, 2009 93  /* Pseudo-Function Macros: */  Dean Camera committed Apr 16, 2009 94 95 96 97  #if defined(__DOXYGEN__) /** Initializes the temperature sensor driver, including setting up the appropriate ADC channel. * This must be called before any other temperature sensor routines. *  Dean Camera committed Nov 24, 2009 98 99  * \note The ADC itself (not the ADC channel) must be configured separately before calling the * temperature sensor functions.  Dean Camera committed Apr 16, 2009 100 101 102 103 104  */ static inline void Temperature_Init(void); #else #define Temperature_Init() ADC_SetupChannel(TEMP_ADC_CHANNEL); #endif  Dean Camera committed Feb 23, 2009 105 106 107  /* Function Prototypes: */ /** Performs a complete ADC on the temperature sensor channel, and converts the result into a  Dean Camera committed Apr 22, 2009 108  * valid temperature between \ref TEMP_MIN_TEMP and \ref TEMP_MAX_TEMP in degrees Celsius.  Dean Camera committed Feb 23, 2009 109  *  Dean Camera committed Apr 01, 2009 110  * \return Signed temperature in degrees Celsius  Dean Camera committed Feb 23, 2009 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126  */ int8_t Temperature_GetTemperature(void) ATTR_WARN_UNUSED_RESULT; /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) /* Macros: */ #define TEMP_TABLE_SIZE (sizeof(Temperature_Lookup) / sizeof(Temperature_Lookup[0])) #define TEMP_TABLE_OFFSET -21 #endif /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) } #endif #endif  Dean Camera committed Apr 16, 2009 127 128  /** @} */