c775e16175f0c86ba62e2fffd00e5dd92e3f14fe
[bertos.git] / drv / adc.c
1 /*!
2  * \file
3  * <!--
4  * Copyright 2005 Develer S.r.l. (http://www.develer.com/)
5  * This file is part of DevLib - See README.devlib for information.
6  * -->
7  *
8  * \version $Id$
9  *
10  * \brief ADC driver (implementation)
11  *
12  * \version $Id$
13  * \author Francesco Sacchi <batt@develer.com>
14  */
15
16 /*#*
17  *#* $Log$
18  *#* Revision 1.1  2005/06/27 21:28:31  bernie
19  *#* Import ADC driver.
20  *#*
21  *#*/
22
23
24 #include <drv/adc.h>
25 #include <drv/timer.h>
26 #include <hw_adc.h>
27
28 #include <cfg/debug.h>
29 #include <cfg/macros.h>
30 #include <cfg/compiler.h>
31
32 DB(bool adc_initialized = false;)
33
34 /*!
35  * Read the ADC channel \a ch.
36  */
37 adcread_t adc_read(uint16_t ch)
38 {
39         ASSERT(ch <= (uint16_t)ADC_MUX_MAXCH);
40         ch = MIN(ch, (uint16_t)ADC_MUX_MAXCH);
41
42         adc_hw_select_ch(ch);
43
44         return(adc_hw_read());
45 }
46
47 /*!
48  * Initialize the ADC hardware.
49  */
50 void adc_init(void)
51 {
52         cpuflags_t flags;
53         IRQ_SAVE_DISABLE(flags);
54
55         ADC_HW_INIT;
56         DB(adc_initialized = true;)
57         IRQ_RESTORE(flags);
58 }