1 /*****************************************************************************
2 *
3 * \file
4 *
5 * \brief ADC header for AVR UC3 UC3.
6 *
7 * This file defines a useful set of functions for ADC on AVR UC3 devices.
8 *
9  * Copyright (c) 2009-2018 Microchip Technology Inc. and its subsidiaries.
10 *
11 * \asf_license_start
12 *
13 * \page License
14 *
15 * Subject to your compliance with these terms, you may use Microchip
16 * software and any derivatives exclusively with Microchip products.
17 * It is your responsibility to comply with third party license terms applicable
18 * to your use of third party software (including open source software) that
19 * may accompany Microchip software.
20 *
21 * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
22 * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
23 * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
24 * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
25 * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
26 * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
27 * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
28 * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.  TO THE FULLEST EXTENT
29 * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
30 * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
31 * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
32 *
33 * \asf_license_stop
34 *
35 *****************************************************************************/
36 /*
37  * Support and FAQ: visit <a href="https://www.microchip.com/support/">Microchip Support</a>
38  */
39 
40 #ifndef _ADC_H_
41 #define _ADC_H_
42 
43 /**
44  * \defgroup group_avr32_drivers_adc ADC - Analog to Digital Converter
45  *
46  * Analog to Digital Converter is able to capture analog signals and transform
47  * them
48  * into digital format with 10-bit resolution.
49  *
50  * \{
51  */
52 
53 #include <avr32/io.h>
54 #include "compiler.h"
55 
56 /* if using 8 bits for ADC, define this flag in your compiler options */
57 /** Max value for ADC resolution */
58 #ifdef USE_ADC_8_BITS
59 #  define ADC_MAX_VALUE    0xFF
60 #else
61 #  define ADC_MAX_VALUE    0x3FF
62 #endif
63 
64 void adc_configure(volatile avr32_adc_t *adc);
65 
66 void adc_start(volatile avr32_adc_t *adc);
67 
68 void adc_enable(volatile avr32_adc_t *adc, uint16_t channel);
69 
70 void adc_disable(volatile avr32_adc_t *adc, uint16_t channel);
71 
72 bool adc_get_status(volatile avr32_adc_t *adc, uint16_t channel);
73 
74 bool adc_check_eoc(volatile avr32_adc_t *adc, uint16_t channel);
75 
76 bool adc_check_ovr(volatile avr32_adc_t *adc, uint16_t channel);
77 
78 uint32_t adc_get_value(volatile avr32_adc_t *adc,
79 		uint16_t channel);
80 
81 uint32_t adc_get_latest_value(volatile avr32_adc_t *adc);
82 
83 /**
84  * \}
85  */
86 
87 #endif  /* _ADC_H_ */
88