Minor fixes in AT91 ADC module.
[bertos.git] / bertos / cpu / arm / drv / adc_at91.h
index f1125980623afe10d47fe8dedacbf7514c8e2d43..2ec0cdb595af0f676a6ab3b2b13f91c4ad1f1f72 100644 (file)
  * 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.
@@ -90,5 +91,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 */