00001
00018 #ifndef _ADC_H
00019 #define _ADC_H
00020
00021
00022
00023
00024
00025 #include <types.h>
00026
00027
00029 #define RESOLUTION_8_BIT 0
00030 #define RESOLUTION_10_BIT 1
00031
00032
00033
00034
00035
00038 #if defined(AT91SAM7X256)
00039 typedef enum
00040 {
00041 ADC_533KSPS,
00042 ADC_429KSPS,
00043 ADC_369KSPS,
00044 ADC_250KSPS,
00045 ADC_136KSPS,
00046 ADC_68KSPS,
00047 ADC_34KSPS
00048 } HAL_AdcSampleRate_t;
00049 #elif defined(ATMEGA1281) || defined(ATMEGA2561) || defined(ATMEGA1284) || defined(AT90USB1287)
00050 typedef enum
00051 {
00052 ADC_77KSPS,
00053 ADC_39KSPS,
00054 ADC_19200SPS,
00055 ADC_9600SPS,
00056 ADC_4800SPS
00057 } HAL_AdcSampleRate_t;
00058 #endif
00059
00060
00063 typedef enum
00064 {
00068 AREF = (0 << 6),
00070 AVCC = (1 << 6),
00072 INTERNAL_1d1V = (2 << 6),
00074 INTERNAL_2d56V = (3 << 6)
00075 } HAL_AdcVoltageReference_t;
00076
00077
00080 typedef struct
00081 {
00083 uint8_t resolution;
00085 HAL_AdcSampleRate_t sampleRate;
00087 HAL_AdcVoltageReference_t voltageReference;
00089 void *bufferPointer;
00091 uint16_t selectionsAmount;
00093 void (*callback)();
00094 } HAL_AdcParams_t;
00095
00096
00107 #if defined(AT91SAM7X256)
00108 typedef enum
00109 {
00110 HAL_ADC_CHANNEL0 = (1 << 0),
00111 HAL_ADC_CHANNEL1 = (1 << 1),
00112 HAL_ADC_CHANNEL2 = (1 << 2),
00113 HAL_ADC_CHANNEL3 = (1 << 3),
00114 HAL_ADC_CHANNEL4 = (1 << 4),
00115 HAL_ADC_CHANNEL5 = (1 << 5),
00116 HAL_ADC_CHANNEL6 = (1 << 6),
00117 HAL_ADC_CHANNEL7 = (1 << 7)
00118 } HAL_AdcChannelNumber_t;
00119 #elif defined(ATMEGA1281) || defined(ATMEGA2561) || defined(ATMEGA1284) || defined(AT90USB1287)
00120 typedef enum
00121 {
00123 HAL_ADC_CHANNEL0 = 0,
00125 HAL_ADC_CHANNEL1 = 1,
00127 HAL_ADC_CHANNEL2 = 2,
00129 HAL_ADC_CHANNEL3 = 3,
00131 HAL_ADC_DIFF_CHANNEL0 = 8,
00133 HAL_ADC_DIFF_CHANNEL1 = 9,
00135 HAL_ADC_DIFF_CHANNEL2 = 10,
00137 HAL_ADC_DIFF_CHANNEL3 = 11,
00139 HAL_ADC_DIFF_CHANNEL4 = 12,
00141 HAL_ADC_DIFF_CHANNEL5 = 13,
00143 HAL_ADC_DIFF_CHANNEL6 = 14,
00145 HAL_ADC_DIFF_CHANNEL7 = 15
00146 } HAL_AdcChannelNumber_t;
00147 #endif
00148
00149
00150
00151
00152
00184 int HAL_OpenAdc(HAL_AdcParams_t *param);
00185
00186
00213 int HAL_ReadAdc(HAL_AdcChannelNumber_t channel);
00214
00215
00222 int HAL_CloseAdc(void);
00223
00224 #endif
00225