Refactor to use new protocol module and sipo.
[bertos.git] / bertos / cpu / arm / drv / adc_at91.h
index 6c77de0f431a72dabdfe013b9a1367746cb28e2e..5e70477d0e23aa2f34df5d1b1d7c5052abdb0efe 100644 (file)
  *
  * -->
  *
- * \version $Id$
- *
  * \brief ADC hardware-specific definition
  *
- * \version $Id$
  * \author Daniele Basile <asterix@develer.com>
  */
 
  * Macro for computing correct value to write into ADC
  * register.
  */
-#define ADC_COMPUTED_PRESCALER    ((CPU_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.
  * 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
 
@@ -90,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 */