X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Farm%2Fdrv%2Fadc_at91.h;h=5e70477d0e23aa2f34df5d1b1d7c5052abdb0efe;hb=9c54009acbfe8c4b27d5cfd00fd69410caa312c7;hp=49f0de3197f987487a07204939da4b4f6b64a57e;hpb=211f1718bc7a3553323733eea821a477decf0cc7;p=bertos.git diff --git a/bertos/cpu/arm/drv/adc_at91.h b/bertos/cpu/arm/drv/adc_at91.h index 49f0de31..5e70477d 100644 --- a/bertos/cpu/arm/drv/adc_at91.h +++ b/bertos/cpu/arm/drv/adc_at91.h @@ -30,21 +30,19 @@ * * --> * - * \version $Id$ - * * \brief ADC hardware-specific definition * - * \version $Id$ * \author Daniele Basile */ #ifndef DRV_ADC_AT91_H #define DRV_ADC_AT91_H -#include +#include -#include "hw_cpu.h" -#include "appconfig.h" +#include "cfg/cfg_adc.h" + +#include /** * ADC config define. @@ -56,9 +54,10 @@ * Macro for computing correct value to write into ADC * register. */ -#define ADC_COMPUTED_PRESCALER ((CLOCK_FREQ/(2 * CONFIG_ADC_CLOCK)) - 1) -#define ADC_COMPUTED_STARTUPTIME (((CONFIG_ADC_STARTUP_TIME * CONFIG_ADC_CLOCK)/ 8000000UL) - 1) -#define ADC_COMPUTED_SHTIME (((CONFIG_ADC_SHTIME * CONFIG_ADC_CLOCK)/1000000000UL) - 1) +#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. @@ -68,11 +67,11 @@ * Define PIO controller for enable ADC function. * \{ */ -#if CPU_ARM_AT91SAM7X256 +#if CPU_ARM_SAM7X #define ADC_PIO_DISABLE PIOB_PDR #define ADC_PIO_EN_FUNC PIOB_ASR -#elif CPU_ARM_AT91SAM7S256 +#elif CPU_ARM_SAM7S_LARGE #define ADC_PIO_DISABLE PIOA_PDR #define ADC_PIO_EN_FUNC PIOA_BSR @@ -89,5 +88,8 @@ 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 */