/** * \file * * * \brief ADC hardware-specific definition * * \author Daniele Basile */ #ifndef DRV_ADC_AT91_H #define DRV_ADC_AT91_H #include #include "cfg/cfg_adc.h" #include /** * ADC config define. */ #define ADC_MUX_MAXCH 8 //Max number of channel for ADC. #define ADC_BITS 10 //Bit resolution for ADC converter. /** * Macro for computing correct value to write into ADC * register. */ #define ADC_COMPUTED_PRESCALER (DIV_ROUNDUP(CPU_FREQ, 2 * CONFIG_ADC_CLOCK) - 1) #define ADC_COMPUTED_CLOCK (CPU_FREQ / ((ADC_COMPUTED_PRESCALER + 1) * 2)) #define ADC_COMPUTED_STARTUPTIME (((CONFIG_ADC_STARTUP_TIME * ADC_COMPUTED_CLOCK) / 8000000UL) - 1) #define ADC_COMPUTED_SHTIME ((uint32_t)((CONFIG_ADC_SHTIME * (uint64_t)ADC_COMPUTED_CLOCK) / 1000000000UL) - 1) /** * Init pins macro for adc. */ /** * Define PIO controller for enable ADC function. * \{ */ #if CPU_ARM_SAM7X #define ADC_PIO_DISABLE PIOB_PDR #define ADC_PIO_EN_FUNC PIOB_ASR #elif CPU_ARM_SAM7S_LARGE #define ADC_PIO_DISABLE PIOA_PDR #define ADC_PIO_EN_FUNC PIOA_BSR #else #error No ADC pins name definitions for selected ARM CPU #endif /*\}*/ /** * Init the ADC pins. * Implement it if necessary. */ #define ADC_INIT_PINS() \ do { \ } while (0) void adc_hw_select_ch(uint8_t ch); uint16_t adc_hw_read(void); void adc_hw_init(void); #endif /* DRV_ADC_AT91_H */