Subversion Repositories HomeAutomation

Rev

Rev 796 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1. /**
  2.  * @defgroup adc ADC driver
  3.  * @code #include <drivers/adc/adc.h> @endcode
  4.  *
  5.  * @brief Simple low level ADC driver.
  6.  *
  7.  * This driver is a simple ADC implementation.
  8.  *
  9.  *
  10.  * @author  Erik Larsson
  11.  * @author  Anders Runeson
  12.  * @author  Martin Norden
  13.  * @date    2008-05-11
  14.  */
  15.  
  16. /**@{*/
  17.  
  18. #ifndef ADC_H_
  19. #define ADC_H_
  20.  
  21. #if !defined(__AVR_ATmega88__) && !defined(__AVR_ATmega168__)
  22. #error only tested on ATmega88/168
  23. #endif
  24.  
  25. #if !defined(ADCHAN0) && !defined(ADCHAN1) && !defined(ADCHAN2) && !defined(ADCHAN3) && !defined(ADCHAN4) && !defined(ADCHAN5) && !defined(ADCHAN6) && !defined(ADCHAN7)
  26. #error No channels defined, either define the AD-channel you use (with ADCHANx=1 in config.inc) or dont use adc driver
  27. #endif
  28. #ifndef ADCHAN0
  29. #define ADCHAN0 0
  30. #endif
  31. #ifndef ADCHAN1
  32. #define ADCHAN1 0
  33. #endif
  34. #ifndef ADCHAN2
  35. #define ADCHAN2 0
  36. #endif
  37. #ifndef ADCHAN3
  38. #define ADCHAN3 0
  39. #endif
  40. #ifndef ADCHAN4
  41. #define ADCHAN4 0
  42. #endif
  43. #ifndef ADCHAN5
  44. #define ADCHAN5 0
  45. #endif
  46. #ifndef ADCHAN6
  47. #define ADCHAN6 0
  48. #endif
  49. #ifndef ADCHAN7
  50. #define ADCHAN7 0
  51. #endif
  52.  
  53. /*-----------------------------------------------
  54.  * Includes
  55.  * ---------------------------------------------*/
  56. #include <stdlib.h>
  57. #include <inttypes.h>
  58.  
  59. /*-----------------------------------------------
  60.  * Functions
  61.  * ---------------------------------------------*/
  62.  
  63. /**
  64.  * @brief Initialize ADC.
  65.  *
  66.  * Initializes the ADC-unit on the AVR. The voltage reference is set to Avcc.
  67.  *
  68.  */
  69. uint8_t ADC_Init(void);
  70.  
  71. /**
  72.  * @brief Get an ADC value.
  73.  *
  74.  * Starts an ADC conversion and returns the result right adjusted, 10 bits.
  75.  * If the channel is changed it does a dummy-read first to prevent garbage data.
  76.  *
  77.  * @param channel
  78.  *      Channel to get ADC data from
  79.  * @retval
  80.  *      The ADC data
  81.  */
  82. uint16_t ADC_Get(uint8_t channel);
  83.  
  84. /**@}*/
  85. #endif
  86.