xref: /btstack/port/msp432p401lp-cc256x/ti/devices/msp432p4xx/driverlib/adc14.h (revision 5fd0122a3e19d95e11e1f3eb8a08a2b2acb2557e)
1*5fd0122aSMatthias Ringwald /* --COPYRIGHT--,BSD
2*5fd0122aSMatthias Ringwald  * Copyright (c) 2017, Texas Instruments Incorporated
3*5fd0122aSMatthias Ringwald  * All rights reserved.
4*5fd0122aSMatthias Ringwald  *
5*5fd0122aSMatthias Ringwald  * Redistribution and use in source and binary forms, with or without
6*5fd0122aSMatthias Ringwald  * modification, are permitted provided that the following conditions
7*5fd0122aSMatthias Ringwald  * are met:
8*5fd0122aSMatthias Ringwald  *
9*5fd0122aSMatthias Ringwald  * *  Redistributions of source code must retain the above copyright
10*5fd0122aSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer.
11*5fd0122aSMatthias Ringwald  *
12*5fd0122aSMatthias Ringwald  * *  Redistributions in binary form must reproduce the above copyright
13*5fd0122aSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer in the
14*5fd0122aSMatthias Ringwald  *    documentation and/or other materials provided with the distribution.
15*5fd0122aSMatthias Ringwald  *
16*5fd0122aSMatthias Ringwald  * *  Neither the name of Texas Instruments Incorporated nor the names of
17*5fd0122aSMatthias Ringwald  *    its contributors may be used to endorse or promote products derived
18*5fd0122aSMatthias Ringwald  *    from this software without specific prior written permission.
19*5fd0122aSMatthias Ringwald  *
20*5fd0122aSMatthias Ringwald  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21*5fd0122aSMatthias Ringwald  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22*5fd0122aSMatthias Ringwald  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23*5fd0122aSMatthias Ringwald  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24*5fd0122aSMatthias Ringwald  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25*5fd0122aSMatthias Ringwald  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26*5fd0122aSMatthias Ringwald  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27*5fd0122aSMatthias Ringwald  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28*5fd0122aSMatthias Ringwald  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29*5fd0122aSMatthias Ringwald  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30*5fd0122aSMatthias Ringwald  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31*5fd0122aSMatthias Ringwald  * --/COPYRIGHT--*/
32*5fd0122aSMatthias Ringwald #ifndef ADC14_H_
33*5fd0122aSMatthias Ringwald #define ADC14_H_
34*5fd0122aSMatthias Ringwald 
35*5fd0122aSMatthias Ringwald //*****************************************************************************
36*5fd0122aSMatthias Ringwald //
37*5fd0122aSMatthias Ringwald //!
38*5fd0122aSMatthias Ringwald //! \addtogroup adc14_api
39*5fd0122aSMatthias Ringwald //! @{
40*5fd0122aSMatthias Ringwald //
41*5fd0122aSMatthias Ringwald //*****************************************************************************
42*5fd0122aSMatthias Ringwald 
43*5fd0122aSMatthias Ringwald //*****************************************************************************
44*5fd0122aSMatthias Ringwald //
45*5fd0122aSMatthias Ringwald // If building with a C++ compiler, make all of the definitions in this header
46*5fd0122aSMatthias Ringwald // have a C binding.
47*5fd0122aSMatthias Ringwald //
48*5fd0122aSMatthias Ringwald //*****************************************************************************
49*5fd0122aSMatthias Ringwald #ifdef __cplusplus
50*5fd0122aSMatthias Ringwald extern "C"
51*5fd0122aSMatthias Ringwald {
52*5fd0122aSMatthias Ringwald #endif
53*5fd0122aSMatthias Ringwald 
54*5fd0122aSMatthias Ringwald #include <stdint.h>
55*5fd0122aSMatthias Ringwald #include <stdbool.h>
56*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/inc/msp.h>
57*5fd0122aSMatthias Ringwald 
58*5fd0122aSMatthias Ringwald //*****************************************************************************
59*5fd0122aSMatthias Ringwald //
60*5fd0122aSMatthias Ringwald // Control specific variables
61*5fd0122aSMatthias Ringwald //
62*5fd0122aSMatthias Ringwald //*****************************************************************************
63*5fd0122aSMatthias Ringwald 
64*5fd0122aSMatthias Ringwald //*****************************************************************************
65*5fd0122aSMatthias Ringwald //
66*5fd0122aSMatthias Ringwald //The following are values that can be passed to ADC14_initModule
67*5fd0122aSMatthias Ringwald //
68*5fd0122aSMatthias Ringwald //*****************************************************************************
69*5fd0122aSMatthias Ringwald #define ADC_CLOCKSOURCE_ADCOSC   (ADC14_CTL0_SSEL_0)
70*5fd0122aSMatthias Ringwald #define ADC_CLOCKSOURCE_SYSOSC   (ADC14_CTL0_SSEL_1)
71*5fd0122aSMatthias Ringwald #define ADC_CLOCKSOURCE_ACLK     (ADC14_CTL0_SSEL_2)
72*5fd0122aSMatthias Ringwald #define ADC_CLOCKSOURCE_MCLK     (ADC14_CTL0_SSEL_3)
73*5fd0122aSMatthias Ringwald #define ADC_CLOCKSOURCE_SMCLK    (ADC14_CTL0_SSEL_4)
74*5fd0122aSMatthias Ringwald #define ADC_CLOCKSOURCE_HSMCLK   (ADC14_CTL0_SSEL_5)
75*5fd0122aSMatthias Ringwald 
76*5fd0122aSMatthias Ringwald #define ADC_PREDIVIDER_1         (ADC14_CTL0_PDIV_0)
77*5fd0122aSMatthias Ringwald #define ADC_PREDIVIDER_4         (ADC14_CTL0_PDIV_1)
78*5fd0122aSMatthias Ringwald #define ADC_PREDIVIDER_32        (ADC14_CTL0_PDIV_2)
79*5fd0122aSMatthias Ringwald #define ADC_PREDIVIDER_64        (ADC14_CTL0_PDIV_3)
80*5fd0122aSMatthias Ringwald 
81*5fd0122aSMatthias Ringwald #define ADC_DIVIDER_1            (ADC14_CTL0_DIV_0)
82*5fd0122aSMatthias Ringwald #define ADC_DIVIDER_2            (ADC14_CTL0_DIV_1)
83*5fd0122aSMatthias Ringwald #define ADC_DIVIDER_3            (ADC14_CTL0_DIV_2)
84*5fd0122aSMatthias Ringwald #define ADC_DIVIDER_4            (ADC14_CTL0_DIV_3)
85*5fd0122aSMatthias Ringwald #define ADC_DIVIDER_5            (ADC14_CTL0_DIV_4)
86*5fd0122aSMatthias Ringwald #define ADC_DIVIDER_6            (ADC14_CTL0_DIV_5)
87*5fd0122aSMatthias Ringwald #define ADC_DIVIDER_7            (ADC14_CTL0_DIV_6)
88*5fd0122aSMatthias Ringwald #define ADC_DIVIDER_8            (ADC14_CTL0_DIV_7)
89*5fd0122aSMatthias Ringwald 
90*5fd0122aSMatthias Ringwald #define ADC_MAPINTCH3            (ADC14_CTL1_CH3MAP)
91*5fd0122aSMatthias Ringwald #define ADC_MAPINTCH2            (ADC14_CTL1_CH2MAP)
92*5fd0122aSMatthias Ringwald #define ADC_MAPINTCH1            (ADC14_CTL1_CH1MAP)
93*5fd0122aSMatthias Ringwald #define ADC_MAPINTCH0            (ADC14_CTL1_CH0MAP)
94*5fd0122aSMatthias Ringwald #define ADC_TEMPSENSEMAP         (ADC14_CTL1_TCMAP)
95*5fd0122aSMatthias Ringwald #define ADC_BATTMAP              (ADC14_CTL1_BATMAP)
96*5fd0122aSMatthias Ringwald #define ADC_NOROUTE               0
97*5fd0122aSMatthias Ringwald 
98*5fd0122aSMatthias Ringwald #define ADC_8BIT                 ADC14_CTL1_RES_0
99*5fd0122aSMatthias Ringwald #define ADC_10BIT                ADC14_CTL1_RES_1
100*5fd0122aSMatthias Ringwald #define ADC_12BIT                ADC14_CTL1_RES_2
101*5fd0122aSMatthias Ringwald #define ADC_14BIT                ADC14_CTL1_RES_3
102*5fd0122aSMatthias Ringwald 
103*5fd0122aSMatthias Ringwald #define ADC_TRIGGER_ADCSC        ADC14_CTL0_SHS_0
104*5fd0122aSMatthias Ringwald #define ADC_TRIGGER_SOURCE1      ADC14_CTL0_SHS_1
105*5fd0122aSMatthias Ringwald #define ADC_TRIGGER_SOURCE2      ADC14_CTL0_SHS_2
106*5fd0122aSMatthias Ringwald #define ADC_TRIGGER_SOURCE3      ADC14_CTL0_SHS_3
107*5fd0122aSMatthias Ringwald #define ADC_TRIGGER_SOURCE4      ADC14_CTL0_SHS_4
108*5fd0122aSMatthias Ringwald #define ADC_TRIGGER_SOURCE5      ADC14_CTL0_SHS_5
109*5fd0122aSMatthias Ringwald #define ADC_TRIGGER_SOURCE6      ADC14_CTL0_SHS_6
110*5fd0122aSMatthias Ringwald #define ADC_TRIGGER_SOURCE7      ADC14_CTL0_SHS_7
111*5fd0122aSMatthias Ringwald 
112*5fd0122aSMatthias Ringwald #define ADC_PULSE_WIDTH_4        ADC14_CTL0_SHT1_0
113*5fd0122aSMatthias Ringwald #define ADC_PULSE_WIDTH_8        ADC14_CTL0_SHT1_1
114*5fd0122aSMatthias Ringwald #define ADC_PULSE_WIDTH_16       ADC14_CTL0_SHT1_2
115*5fd0122aSMatthias Ringwald #define ADC_PULSE_WIDTH_32       ADC14_CTL0_SHT1_3
116*5fd0122aSMatthias Ringwald #define ADC_PULSE_WIDTH_64       ADC14_CTL0_SHT1_4
117*5fd0122aSMatthias Ringwald #define ADC_PULSE_WIDTH_96       ADC14_CTL0_SHT1_5
118*5fd0122aSMatthias Ringwald #define ADC_PULSE_WIDTH_128      ADC14_CTL0_SHT1_6
119*5fd0122aSMatthias Ringwald #define ADC_PULSE_WIDTH_192      ADC14_CTL0_SHT1_7
120*5fd0122aSMatthias Ringwald 
121*5fd0122aSMatthias Ringwald #define ADC_NONDIFFERENTIAL_INPUTS false
122*5fd0122aSMatthias Ringwald #define ADC_DIFFERENTIAL_INPUTS true
123*5fd0122aSMatthias Ringwald 
124*5fd0122aSMatthias Ringwald #define ADC_MEM0                 0x00000001
125*5fd0122aSMatthias Ringwald #define ADC_MEM1                 0x00000002
126*5fd0122aSMatthias Ringwald #define ADC_MEM2                 0x00000004
127*5fd0122aSMatthias Ringwald #define ADC_MEM3                 0x00000008
128*5fd0122aSMatthias Ringwald #define ADC_MEM4                 0x00000010
129*5fd0122aSMatthias Ringwald #define ADC_MEM5                 0x00000020
130*5fd0122aSMatthias Ringwald #define ADC_MEM6                 0x00000040
131*5fd0122aSMatthias Ringwald #define ADC_MEM7                 0x00000080
132*5fd0122aSMatthias Ringwald #define ADC_MEM8                 0x00000100
133*5fd0122aSMatthias Ringwald #define ADC_MEM9                 0x00000200
134*5fd0122aSMatthias Ringwald #define ADC_MEM10                0x00000400
135*5fd0122aSMatthias Ringwald #define ADC_MEM11                0x00000800
136*5fd0122aSMatthias Ringwald #define ADC_MEM12                0x00001000
137*5fd0122aSMatthias Ringwald #define ADC_MEM13                0x00002000
138*5fd0122aSMatthias Ringwald #define ADC_MEM14                0x00004000
139*5fd0122aSMatthias Ringwald #define ADC_MEM15                0x00008000
140*5fd0122aSMatthias Ringwald #define ADC_MEM16                0x00010000
141*5fd0122aSMatthias Ringwald #define ADC_MEM17                0x00020000
142*5fd0122aSMatthias Ringwald #define ADC_MEM18                0x00040000
143*5fd0122aSMatthias Ringwald #define ADC_MEM19                0x00080000
144*5fd0122aSMatthias Ringwald #define ADC_MEM20                0x00100000
145*5fd0122aSMatthias Ringwald #define ADC_MEM21                0x00200000
146*5fd0122aSMatthias Ringwald #define ADC_MEM22                0x00400000
147*5fd0122aSMatthias Ringwald #define ADC_MEM23                0x00800000
148*5fd0122aSMatthias Ringwald #define ADC_MEM24                0x01000000
149*5fd0122aSMatthias Ringwald #define ADC_MEM25                0x02000000
150*5fd0122aSMatthias Ringwald #define ADC_MEM26                0x04000000
151*5fd0122aSMatthias Ringwald #define ADC_MEM27                0x08000000
152*5fd0122aSMatthias Ringwald #define ADC_MEM28                0x10000000
153*5fd0122aSMatthias Ringwald #define ADC_MEM29                0x20000000
154*5fd0122aSMatthias Ringwald #define ADC_MEM30                0x40000000
155*5fd0122aSMatthias Ringwald #define ADC_MEM31                0x80000000
156*5fd0122aSMatthias Ringwald 
157*5fd0122aSMatthias Ringwald #define ADC_VREFPOS_AVCC_VREFNEG_VSS       (ADC14_MCTLN_VRSEL_0)
158*5fd0122aSMatthias Ringwald #define ADC_VREFPOS_INTBUF_VREFNEG_VSS     (ADC14_MCTLN_VRSEL_1)
159*5fd0122aSMatthias Ringwald #define ADC_VREFPOS_EXTPOS_VREFNEG_EXTNEG  (ADC14_MCTLN_VRSEL_14)
160*5fd0122aSMatthias Ringwald #define ADC_VREFPOS_EXTBUF_VREFNEG_EXTNEG  (ADC14_MCTLN_VRSEL_15)
161*5fd0122aSMatthias Ringwald 
162*5fd0122aSMatthias Ringwald #define ADC_INPUT_A0              (ADC14_MCTLN_INCH_0)
163*5fd0122aSMatthias Ringwald #define ADC_INPUT_A1              (ADC14_MCTLN_INCH_1)
164*5fd0122aSMatthias Ringwald #define ADC_INPUT_A2              (ADC14_MCTLN_INCH_2)
165*5fd0122aSMatthias Ringwald #define ADC_INPUT_A3              (ADC14_MCTLN_INCH_3)
166*5fd0122aSMatthias Ringwald #define ADC_INPUT_A4              (ADC14_MCTLN_INCH_4)
167*5fd0122aSMatthias Ringwald #define ADC_INPUT_A5              (ADC14_MCTLN_INCH_5)
168*5fd0122aSMatthias Ringwald #define ADC_INPUT_A6              (ADC14_MCTLN_INCH_6)
169*5fd0122aSMatthias Ringwald #define ADC_INPUT_A7              (ADC14_MCTLN_INCH_7)
170*5fd0122aSMatthias Ringwald #define ADC_INPUT_A8              (ADC14_MCTLN_INCH_8)
171*5fd0122aSMatthias Ringwald #define ADC_INPUT_A9              (ADC14_MCTLN_INCH_9)
172*5fd0122aSMatthias Ringwald #define ADC_INPUT_A10             (ADC14_MCTLN_INCH_10)
173*5fd0122aSMatthias Ringwald #define ADC_INPUT_A11             (ADC14_MCTLN_INCH_11)
174*5fd0122aSMatthias Ringwald #define ADC_INPUT_A12             (ADC14_MCTLN_INCH_12)
175*5fd0122aSMatthias Ringwald #define ADC_INPUT_A13             (ADC14_MCTLN_INCH_13)
176*5fd0122aSMatthias Ringwald #define ADC_INPUT_A14             (ADC14_MCTLN_INCH_14)
177*5fd0122aSMatthias Ringwald #define ADC_INPUT_A15             (ADC14_MCTLN_INCH_15)
178*5fd0122aSMatthias Ringwald #define ADC_INPUT_A16             (ADC14_MCTLN_INCH_16)
179*5fd0122aSMatthias Ringwald #define ADC_INPUT_A17             (ADC14_MCTLN_INCH_17)
180*5fd0122aSMatthias Ringwald #define ADC_INPUT_A18             (ADC14_MCTLN_INCH_18)
181*5fd0122aSMatthias Ringwald #define ADC_INPUT_A19             (ADC14_MCTLN_INCH_19)
182*5fd0122aSMatthias Ringwald #define ADC_INPUT_A20             (ADC14_MCTLN_INCH_20)
183*5fd0122aSMatthias Ringwald #define ADC_INPUT_A21             (ADC14_MCTLN_INCH_21)
184*5fd0122aSMatthias Ringwald #define ADC_INPUT_A22             (ADC14_MCTLN_INCH_22)
185*5fd0122aSMatthias Ringwald #define ADC_INPUT_A23             (ADC14_MCTLN_INCH_23)
186*5fd0122aSMatthias Ringwald #define ADC_INPUT_A24             (ADC14_MCTLN_INCH_24)
187*5fd0122aSMatthias Ringwald #define ADC_INPUT_A25             (ADC14_MCTLN_INCH_25)
188*5fd0122aSMatthias Ringwald #define ADC_INPUT_A26             (ADC14_MCTLN_INCH_26)
189*5fd0122aSMatthias Ringwald #define ADC_INPUT_A27             (ADC14_MCTLN_INCH_27)
190*5fd0122aSMatthias Ringwald #define ADC_INPUT_A28             (ADC14_MCTLN_INCH_28)
191*5fd0122aSMatthias Ringwald #define ADC_INPUT_A29             (ADC14_MCTLN_INCH_29)
192*5fd0122aSMatthias Ringwald #define ADC_INPUT_A30             (ADC14_MCTLN_INCH_30)
193*5fd0122aSMatthias Ringwald #define ADC_INPUT_A31             (ADC14_MCTLN_INCH_31)
194*5fd0122aSMatthias Ringwald 
195*5fd0122aSMatthias Ringwald #define ADC_COMP_WINDOW0          0x00
196*5fd0122aSMatthias Ringwald #define ADC_COMP_WINDOW1          0x01
197*5fd0122aSMatthias Ringwald 
198*5fd0122aSMatthias Ringwald #define ADC_SIGNED_BINARY         0x00
199*5fd0122aSMatthias Ringwald #define ADC_UNSIGNED_BINARY       0x01
200*5fd0122aSMatthias Ringwald 
201*5fd0122aSMatthias Ringwald #define ADC_MANUAL_ITERATION       0x00
202*5fd0122aSMatthias Ringwald #define ADC_AUTOMATIC_ITERATION    ADC14_CTL0_MSC
203*5fd0122aSMatthias Ringwald 
204*5fd0122aSMatthias Ringwald #define ADC_UNRESTRICTED_POWER_MODE   ADC14_CTL1_PWRMD_0
205*5fd0122aSMatthias Ringwald #define ADC_ULTRA_LOW_POWER_MODE      ADC14_CTL1_PWRMD_2
206*5fd0122aSMatthias Ringwald 
207*5fd0122aSMatthias Ringwald 
208*5fd0122aSMatthias Ringwald #define ADC_INT0 ADC14_IER0_IE0
209*5fd0122aSMatthias Ringwald #define ADC_INT1 ADC14_IER0_IE1
210*5fd0122aSMatthias Ringwald #define ADC_INT2 ADC14_IER0_IE2
211*5fd0122aSMatthias Ringwald #define ADC_INT3 ADC14_IER0_IE3
212*5fd0122aSMatthias Ringwald #define ADC_INT4 ADC14_IER0_IE4
213*5fd0122aSMatthias Ringwald #define ADC_INT5 ADC14_IER0_IE5
214*5fd0122aSMatthias Ringwald #define ADC_INT6 ADC14_IER0_IE6
215*5fd0122aSMatthias Ringwald #define ADC_INT7 ADC14_IER0_IE7
216*5fd0122aSMatthias Ringwald #define ADC_INT8 ADC14_IER0_IE8
217*5fd0122aSMatthias Ringwald #define ADC_INT9 ADC14_IER0_IE9
218*5fd0122aSMatthias Ringwald #define ADC_INT10 ADC14_IER0_IE10
219*5fd0122aSMatthias Ringwald #define ADC_INT11 ADC14_IER0_IE11
220*5fd0122aSMatthias Ringwald #define ADC_INT12 ADC14_IER0_IE12
221*5fd0122aSMatthias Ringwald #define ADC_INT13 ADC14_IER0_IE13
222*5fd0122aSMatthias Ringwald #define ADC_INT14 ADC14_IER0_IE14
223*5fd0122aSMatthias Ringwald #define ADC_INT15 ADC14_IER0_IE15
224*5fd0122aSMatthias Ringwald #define ADC_INT16 ADC14_IER0_IE16
225*5fd0122aSMatthias Ringwald #define ADC_INT17 ADC14_IER0_IE17
226*5fd0122aSMatthias Ringwald #define ADC_INT18 ADC14_IER0_IE18
227*5fd0122aSMatthias Ringwald #define ADC_INT19 ADC14_IER0_IE19
228*5fd0122aSMatthias Ringwald #define ADC_INT20 ADC14_IER0_IE20
229*5fd0122aSMatthias Ringwald #define ADC_INT21 ADC14_IER0_IE21
230*5fd0122aSMatthias Ringwald #define ADC_INT22 ADC14_IER0_IE22
231*5fd0122aSMatthias Ringwald #define ADC_INT23 ADC14_IER0_IE23
232*5fd0122aSMatthias Ringwald #define ADC_INT24 ADC14_IER0_IE24
233*5fd0122aSMatthias Ringwald #define ADC_INT25 ADC14_IER0_IE25
234*5fd0122aSMatthias Ringwald #define ADC_INT26 ADC14_IER0_IE26
235*5fd0122aSMatthias Ringwald #define ADC_INT27 ADC14_IER0_IE27
236*5fd0122aSMatthias Ringwald #define ADC_INT28 ADC14_IER0_IE28
237*5fd0122aSMatthias Ringwald #define ADC_INT29 ADC14_IER0_IE29
238*5fd0122aSMatthias Ringwald #define ADC_INT30 ADC14_IER0_IE30
239*5fd0122aSMatthias Ringwald #define ADC_INT31 ADC14_IER0_IE31
240*5fd0122aSMatthias Ringwald #define ADC_IN_INT 0x0000000200000000
241*5fd0122aSMatthias Ringwald #define ADC_LO_INT 0x0000000400000000
242*5fd0122aSMatthias Ringwald #define ADC_HI_INT 0x0000000800000000
243*5fd0122aSMatthias Ringwald #define ADC_OV_INT 0x0000001000000000
244*5fd0122aSMatthias Ringwald #define ADC_TOV_INT 0x0000002000000000
245*5fd0122aSMatthias Ringwald #define ADC_RDY_INT 0x0000004000000000
246*5fd0122aSMatthias Ringwald 
247*5fd0122aSMatthias Ringwald #define ADC_INVALID_MEM   32
248*5fd0122aSMatthias Ringwald 
249*5fd0122aSMatthias Ringwald //*****************************************************************************
250*5fd0122aSMatthias Ringwald //
251*5fd0122aSMatthias Ringwald //Prototypes for the APIs.
252*5fd0122aSMatthias Ringwald //
253*5fd0122aSMatthias Ringwald //*****************************************************************************
254*5fd0122aSMatthias Ringwald 
255*5fd0122aSMatthias Ringwald //*****************************************************************************
256*5fd0122aSMatthias Ringwald //
257*5fd0122aSMatthias Ringwald //!
258*5fd0122aSMatthias Ringwald //! Enables the ADC block.
259*5fd0122aSMatthias Ringwald //!
260*5fd0122aSMatthias Ringwald //! This will enable operation of the ADC block.
261*5fd0122aSMatthias Ringwald //!
262*5fd0122aSMatthias Ringwald //! \return none.
263*5fd0122aSMatthias Ringwald //
264*5fd0122aSMatthias Ringwald //*****************************************************************************
265*5fd0122aSMatthias Ringwald extern void ADC14_enableModule(void);
266*5fd0122aSMatthias Ringwald 
267*5fd0122aSMatthias Ringwald //*****************************************************************************
268*5fd0122aSMatthias Ringwald //
269*5fd0122aSMatthias Ringwald //!
270*5fd0122aSMatthias Ringwald //! Disables the ADC block.
271*5fd0122aSMatthias Ringwald //!
272*5fd0122aSMatthias Ringwald //! This will disable operation of the ADC block.
273*5fd0122aSMatthias Ringwald //!
274*5fd0122aSMatthias Ringwald //! \return false if user is trying to disable during active conversion
275*5fd0122aSMatthias Ringwald //
276*5fd0122aSMatthias Ringwald //*****************************************************************************
277*5fd0122aSMatthias Ringwald extern bool ADC14_disableModule(void);
278*5fd0122aSMatthias Ringwald 
279*5fd0122aSMatthias Ringwald //*****************************************************************************
280*5fd0122aSMatthias Ringwald //
281*5fd0122aSMatthias Ringwald //!
282*5fd0122aSMatthias Ringwald //! Initializes the ADC module and sets up the clock system divider/pre-divider.
283*5fd0122aSMatthias Ringwald //! This initialization function will also configure the internal/external
284*5fd0122aSMatthias Ringwald //! signal mapping.
285*5fd0122aSMatthias Ringwald //!
286*5fd0122aSMatthias Ringwald //! \note A call to this function while active ADC conversion is happening
287*5fd0122aSMatthias Ringwald //! is an invalid case and will result in a false value being returned.
288*5fd0122aSMatthias Ringwald //!
289*5fd0122aSMatthias Ringwald //! \param clockSource The clock source to use for the ADC module.
290*5fd0122aSMatthias Ringwald //!                 - \b ADC_CLOCKSOURCE_ADCOSC [DEFAULT]
291*5fd0122aSMatthias Ringwald //!                 - \b ADC_CLOCKSOURCE_SYSOSC
292*5fd0122aSMatthias Ringwald //!                 - \b ADC_CLOCKSOURCE_ACLK
293*5fd0122aSMatthias Ringwald //!                 - \b ADC_CLOCKSOURCE_MCLK
294*5fd0122aSMatthias Ringwald //!                 - \b ADC_CLOCKSOURCE_SMCLK
295*5fd0122aSMatthias Ringwald //!                 - \b ADC_CLOCKSOURCE_HSMCLK
296*5fd0122aSMatthias Ringwald //!
297*5fd0122aSMatthias Ringwald //! \param clockPredivider Divides the given clock source before feeding it
298*5fd0122aSMatthias Ringwald //!         into the main clock divider.
299*5fd0122aSMatthias Ringwald //!             Valid values are:
300*5fd0122aSMatthias Ringwald //!                 - \b ADC_PREDIVIDER_1 [DEFAULT]
301*5fd0122aSMatthias Ringwald //!                 - \b ADC_PREDIVIDER_4
302*5fd0122aSMatthias Ringwald //!                 - \b ADC_PREDIVIDER_32
303*5fd0122aSMatthias Ringwald //!                 - \b ADC_PREDIVIDER_64
304*5fd0122aSMatthias Ringwald //!
305*5fd0122aSMatthias Ringwald //! \param clockDivider Divides the pre-divided clock source
306*5fd0122aSMatthias Ringwald //!         Valid values are
307*5fd0122aSMatthias Ringwald //!             - \b ADC_DIVIDER_1 [Default value]
308*5fd0122aSMatthias Ringwald //!             - \b ADC_DIVIDER_2
309*5fd0122aSMatthias Ringwald //!             - \b ADC_DIVIDER_3
310*5fd0122aSMatthias Ringwald //!             - \b ADC_DIVIDER_4
311*5fd0122aSMatthias Ringwald //!             - \b ADC_DIVIDER_5
312*5fd0122aSMatthias Ringwald //!             - \b ADC_DIVIDER_6
313*5fd0122aSMatthias Ringwald //!             - \b ADC_DIVIDER_7
314*5fd0122aSMatthias Ringwald //!             - \b ADC_DIVIDER_8
315*5fd0122aSMatthias Ringwald //!
316*5fd0122aSMatthias Ringwald //! \param internalChannelMask
317*5fd0122aSMatthias Ringwald //!  Configures the internal/external pin mappings
318*5fd0122aSMatthias Ringwald //!  for the ADC modules. This setting determines if the given ADC channel or
319*5fd0122aSMatthias Ringwald //!  component is mapped to an external pin (default), or routed to an internal
320*5fd0122aSMatthias Ringwald //!  component. This parameter is a bit mask where a logical high value will
321*5fd0122aSMatthias Ringwald //!  switch the component to the internal routing. For a list of internal
322*5fd0122aSMatthias Ringwald //!  routings, please refer to the device specific data sheet.
323*5fd0122aSMatthias Ringwald //!  Valid values are a logical OR of the following values:
324*5fd0122aSMatthias Ringwald //!         - \b ADC_MAPINTCH3
325*5fd0122aSMatthias Ringwald //!         - \b ADC_MAPINTCH2
326*5fd0122aSMatthias Ringwald //!         - \b ADC_MAPINTCH1
327*5fd0122aSMatthias Ringwald //!         - \b ADC_MAPINTCH0
328*5fd0122aSMatthias Ringwald //!         - \b ADC_TEMPSENSEMAP
329*5fd0122aSMatthias Ringwald //!         - \b ADC_BATTMAP
330*5fd0122aSMatthias Ringwald //!         - \n ADC_NOROUTE
331*5fd0122aSMatthias Ringwald //! If internalChannelMask is not desired, pass ADC_NOROUTE in lieu of this
332*5fd0122aSMatthias Ringwald //!  parameter.
333*5fd0122aSMatthias Ringwald //!
334*5fd0122aSMatthias Ringwald //! \return false if the initialization fails due to an in progress conversion
335*5fd0122aSMatthias Ringwald //!
336*5fd0122aSMatthias Ringwald //!
337*5fd0122aSMatthias Ringwald //
338*5fd0122aSMatthias Ringwald //*****************************************************************************
339*5fd0122aSMatthias Ringwald extern bool ADC14_initModule(uint32_t clockSource, uint32_t clockPredivider,
340*5fd0122aSMatthias Ringwald         uint32_t clockDivider, uint32_t internalChannelMask);
341*5fd0122aSMatthias Ringwald 
342*5fd0122aSMatthias Ringwald //*****************************************************************************
343*5fd0122aSMatthias Ringwald //
344*5fd0122aSMatthias Ringwald //!
345*5fd0122aSMatthias Ringwald //! Sets the resolution of the ADC module. The default resolution is 12-bit,
346*5fd0122aSMatthias Ringwald //! however for power consumption concerns this can be limited to a lower
347*5fd0122aSMatthias Ringwald //! resolution
348*5fd0122aSMatthias Ringwald //!
349*5fd0122aSMatthias Ringwald //! \param resolution Resolution of the ADC module
350*5fd0122aSMatthias Ringwald //!         - \b ADC_8BIT (10 clock cycle conversion time)
351*5fd0122aSMatthias Ringwald //!         - \b ADC_10BIT (12 clock cycle conversion time)
352*5fd0122aSMatthias Ringwald //!         - \b ADC_12BIT (14 clock cycle conversion time)
353*5fd0122aSMatthias Ringwald //!         - \b ADC_14BIT (16 clock cycle conversion time)[DEFAULT]
354*5fd0122aSMatthias Ringwald //!
355*5fd0122aSMatthias Ringwald //! \return none
356*5fd0122aSMatthias Ringwald //
357*5fd0122aSMatthias Ringwald //*****************************************************************************
358*5fd0122aSMatthias Ringwald extern void ADC14_setResolution(uint32_t resolution);
359*5fd0122aSMatthias Ringwald 
360*5fd0122aSMatthias Ringwald //*****************************************************************************
361*5fd0122aSMatthias Ringwald //
362*5fd0122aSMatthias Ringwald //!
363*5fd0122aSMatthias Ringwald //! Gets the resolution of the ADC module.
364*5fd0122aSMatthias Ringwald //!
365*5fd0122aSMatthias Ringwald //! \return Resolution of the ADC module
366*5fd0122aSMatthias Ringwald //!         - \b ADC_8BIT (10 clock cycle conversion time)
367*5fd0122aSMatthias Ringwald //!         - \b ADC_10BIT (12 clock cycle conversion time)
368*5fd0122aSMatthias Ringwald //!         - \b ADC_12BIT (14 clock cycle conversion time)
369*5fd0122aSMatthias Ringwald //!         - \b ADC_14BIT (16 clock cycle conversion time)
370*5fd0122aSMatthias Ringwald //
371*5fd0122aSMatthias Ringwald //*****************************************************************************
372*5fd0122aSMatthias Ringwald extern uint_fast32_t ADC14_getResolution(void);
373*5fd0122aSMatthias Ringwald 
374*5fd0122aSMatthias Ringwald //*****************************************************************************
375*5fd0122aSMatthias Ringwald //
376*5fd0122aSMatthias Ringwald //!
377*5fd0122aSMatthias Ringwald //! Sets the source for the trigger of the ADC module. By default, this value
378*5fd0122aSMatthias Ringwald //! is configured to a software source (the ADCSC bit), however depending on
379*5fd0122aSMatthias Ringwald //! the specific device the trigger can be set to different sources (for
380*5fd0122aSMatthias Ringwald //! example, a timer output). These sources vary from part to part and the
381*5fd0122aSMatthias Ringwald //! user should refer to the device specific datasheet.
382*5fd0122aSMatthias Ringwald //!
383*5fd0122aSMatthias Ringwald //! \param source Trigger source for sampling. Possible values include:
384*5fd0122aSMatthias Ringwald //!         - \b ADC_TRIGGER_ADCSC [DEFAULT]
385*5fd0122aSMatthias Ringwald //!         - \b ADC_TRIGGER_SOURCE1
386*5fd0122aSMatthias Ringwald //!         - \b ADC_TRIGGER_SOURCE2
387*5fd0122aSMatthias Ringwald //!         - \b ADC_TRIGGER_SOURCE3
388*5fd0122aSMatthias Ringwald //!         - \b ADC_TRIGGER_SOURCE4
389*5fd0122aSMatthias Ringwald //!         - \b ADC_TRIGGER_SOURCE5
390*5fd0122aSMatthias Ringwald //!         - \b ADC_TRIGGER_SOURCE6
391*5fd0122aSMatthias Ringwald //!         - \b ADC_TRIGGER_SOURCE7
392*5fd0122aSMatthias Ringwald //! \param invertSignal When set to true, will invert the trigger signal to a
393*5fd0122aSMatthias Ringwald //!         falling edge. When false, will use a rising edge.
394*5fd0122aSMatthias Ringwald //!
395*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
396*5fd0122aSMatthias Ringwald //
397*5fd0122aSMatthias Ringwald //*****************************************************************************
398*5fd0122aSMatthias Ringwald extern bool ADC14_setSampleHoldTrigger(uint32_t source, bool invertSignal);
399*5fd0122aSMatthias Ringwald 
400*5fd0122aSMatthias Ringwald //*****************************************************************************
401*5fd0122aSMatthias Ringwald //
402*5fd0122aSMatthias Ringwald //!
403*5fd0122aSMatthias Ringwald //! Sets the sample/hold time for the specified memory register range. The
404*5fd0122aSMatthias Ringwald //! duration of time required for a sample differs depending on the user's
405*5fd0122aSMatthias Ringwald //! hardware configuration.
406*5fd0122aSMatthias Ringwald //!
407*5fd0122aSMatthias Ringwald //! There are two values in the ADCC module. The first value controls
408*5fd0122aSMatthias Ringwald //! ADC memory locations ADC_MEMORY_0 through ADC_MEMORY_7 and
409*5fd0122aSMatthias Ringwald //! ADC_MEMORY_24 through ADC_MEMORY_31, while the second value
410*5fd0122aSMatthias Ringwald //! controls memory locations ADC_MEMORY_8 through ADC_MEMORY_23.
411*5fd0122aSMatthias Ringwald //!
412*5fd0122aSMatthias Ringwald //! \param firstPulseWidth Pulse width of the first pulse in ADCCLK cycles
413*5fd0122aSMatthias Ringwald //!     Possible values must be one of the following:
414*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_4 [DEFAULT]
415*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_8
416*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_16
417*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_32
418*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_64
419*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_96
420*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_128
421*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_192
422*5fd0122aSMatthias Ringwald //! \param secondPulseWidth Pulse width of the second pulse in ADCCLK
423*5fd0122aSMatthias Ringwald //!     cycles. Possible values must be one of the following:
424*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_4 [DEFAULT]
425*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_8
426*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_16
427*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_32
428*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_64
429*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_96
430*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_128
431*5fd0122aSMatthias Ringwald //!         - \b ADC_PULSE_WIDTH_192
432*5fd0122aSMatthias Ringwald //!
433*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
434*5fd0122aSMatthias Ringwald //
435*5fd0122aSMatthias Ringwald //*****************************************************************************
436*5fd0122aSMatthias Ringwald extern bool ADC14_setSampleHoldTime(uint32_t firstPulseWidth,
437*5fd0122aSMatthias Ringwald         uint32_t secondPulseWidth);
438*5fd0122aSMatthias Ringwald 
439*5fd0122aSMatthias Ringwald //*****************************************************************************
440*5fd0122aSMatthias Ringwald //
441*5fd0122aSMatthias Ringwald //!
442*5fd0122aSMatthias Ringwald //! Configures the ADC module to use a multiple memory sample scheme. This
443*5fd0122aSMatthias Ringwald //! means that multiple samples will consecutively take place and be stored in
444*5fd0122aSMatthias Ringwald //! multiple memory locations. The first sample/conversion will be placed in
445*5fd0122aSMatthias Ringwald //! memoryStart, while the last sample will be stored in memoryEnd.
446*5fd0122aSMatthias Ringwald //! Each memory location should be configured individually using the
447*5fd0122aSMatthias Ringwald //! ADC14_configureConversionMemory function.
448*5fd0122aSMatthias Ringwald //!
449*5fd0122aSMatthias Ringwald //! The ADC module can be started in "repeat" mode which will cause the
450*5fd0122aSMatthias Ringwald //! ADC module to resume sampling once the initial sample/conversion set is
451*5fd0122aSMatthias Ringwald //! executed.  For multi-sample mode, this means that the sampling of the
452*5fd0122aSMatthias Ringwald //! entire memory provided.
453*5fd0122aSMatthias Ringwald //!
454*5fd0122aSMatthias Ringwald //! \param memoryStart Memory location to store first sample/conversion
455*5fd0122aSMatthias Ringwald //!         value. Possible values include:
456*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
457*5fd0122aSMatthias Ringwald //! \param memoryEnd Memory location to store last sample.
458*5fd0122aSMatthias Ringwald //!     Possible values include:
459*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
460*5fd0122aSMatthias Ringwald //! \param repeatMode Specifies whether or not to repeat the conversion/sample
461*5fd0122aSMatthias Ringwald //!         cycle after the first round of sample/conversions. Valid values
462*5fd0122aSMatthias Ringwald //!         are true or false.
463*5fd0122aSMatthias Ringwald //!
464*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
465*5fd0122aSMatthias Ringwald //
466*5fd0122aSMatthias Ringwald //*****************************************************************************
467*5fd0122aSMatthias Ringwald extern bool ADC14_configureMultiSequenceMode(uint32_t memoryStart,
468*5fd0122aSMatthias Ringwald         uint32_t memoryEnd, bool repeatMode);
469*5fd0122aSMatthias Ringwald 
470*5fd0122aSMatthias Ringwald //*****************************************************************************
471*5fd0122aSMatthias Ringwald //
472*5fd0122aSMatthias Ringwald //!
473*5fd0122aSMatthias Ringwald //! Configures the ADC module to use a a single ADC memory location for
474*5fd0122aSMatthias Ringwald //! sampling/conversion. This is used when only one channel might be needed for
475*5fd0122aSMatthias Ringwald //! conversion, or where using a multiple sampling scheme is not important.
476*5fd0122aSMatthias Ringwald //!
477*5fd0122aSMatthias Ringwald //! The ADC module can be started in "repeat" mode which will cause the
478*5fd0122aSMatthias Ringwald //! ADC module to resume sampling once the initial sample/conversion set is
479*5fd0122aSMatthias Ringwald //! executed. In single sample mode, this will cause the ADC module to
480*5fd0122aSMatthias Ringwald //! continuously sample into the memory destination provided.
481*5fd0122aSMatthias Ringwald 
482*5fd0122aSMatthias Ringwald //! \param memoryDestination Memory location to store sample/conversion
483*5fd0122aSMatthias Ringwald //!         value. Possible values include:
484*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
485*5fd0122aSMatthias Ringwald //!
486*5fd0122aSMatthias Ringwald //! \param repeatMode Specifies whether or not to repeat the conversion/sample
487*5fd0122aSMatthias Ringwald //!         cycle after the first round of sample/conversions
488*5fd0122aSMatthias Ringwald //!
489*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
490*5fd0122aSMatthias Ringwald //
491*5fd0122aSMatthias Ringwald //*****************************************************************************
492*5fd0122aSMatthias Ringwald extern bool ADC14_configureSingleSampleMode(uint32_t memoryDestination,
493*5fd0122aSMatthias Ringwald         bool repeatMode);
494*5fd0122aSMatthias Ringwald 
495*5fd0122aSMatthias Ringwald //*****************************************************************************
496*5fd0122aSMatthias Ringwald //
497*5fd0122aSMatthias Ringwald //!
498*5fd0122aSMatthias Ringwald //! Enables conversion of ADC data. Note that this only enables conversion.
499*5fd0122aSMatthias Ringwald //! To trigger the conversion, you will have to call the
500*5fd0122aSMatthias Ringwald //! ADC14_toggleConversionTrigger or use the source trigger configured in
501*5fd0122aSMatthias Ringwald //! ADC14_setSampleHoldTrigger.
502*5fd0122aSMatthias Ringwald //!
503*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
504*5fd0122aSMatthias Ringwald //
505*5fd0122aSMatthias Ringwald //*****************************************************************************
506*5fd0122aSMatthias Ringwald extern bool ADC14_enableConversion(void);
507*5fd0122aSMatthias Ringwald 
508*5fd0122aSMatthias Ringwald //*****************************************************************************
509*5fd0122aSMatthias Ringwald //
510*5fd0122aSMatthias Ringwald //!
511*5fd0122aSMatthias Ringwald //! Halts conversion conversion of the ADC module. Note that the software bit
512*5fd0122aSMatthias Ringwald //! for triggering conversions will also be cleared with this function.
513*5fd0122aSMatthias Ringwald //!
514*5fd0122aSMatthias Ringwald //! If multi-sequence conversion mode was enabled, the position of the last
515*5fd0122aSMatthias Ringwald //! completed conversion can be retrieved using ADCLastConversionMemoryGet
516*5fd0122aSMatthias Ringwald //!
517*5fd0122aSMatthias Ringwald //! \return none
518*5fd0122aSMatthias Ringwald //
519*5fd0122aSMatthias Ringwald //*****************************************************************************
520*5fd0122aSMatthias Ringwald extern void ADC14_disableConversion(void);
521*5fd0122aSMatthias Ringwald 
522*5fd0122aSMatthias Ringwald //*****************************************************************************
523*5fd0122aSMatthias Ringwald //
524*5fd0122aSMatthias Ringwald //!
525*5fd0122aSMatthias Ringwald //! Toggles the trigger for conversion of the ADC module by toggling the
526*5fd0122aSMatthias Ringwald //! trigger software bit. Note that this will cause the ADC to start
527*5fd0122aSMatthias Ringwald //! conversion regardless if the software bit was set as the trigger using
528*5fd0122aSMatthias Ringwald //! ADC14_setSampleHoldTrigger.
529*5fd0122aSMatthias Ringwald //!
530*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
531*5fd0122aSMatthias Ringwald //
532*5fd0122aSMatthias Ringwald //*****************************************************************************
533*5fd0122aSMatthias Ringwald extern bool ADC14_toggleConversionTrigger(void);
534*5fd0122aSMatthias Ringwald 
535*5fd0122aSMatthias Ringwald //*****************************************************************************
536*5fd0122aSMatthias Ringwald //
537*5fd0122aSMatthias Ringwald //!
538*5fd0122aSMatthias Ringwald //! Returns a boolean value that tells if a conversion/sample is in progress
539*5fd0122aSMatthias Ringwald //!
540*5fd0122aSMatthias Ringwald //! \return true if conversion is active, false otherwise
541*5fd0122aSMatthias Ringwald //
542*5fd0122aSMatthias Ringwald //*****************************************************************************
543*5fd0122aSMatthias Ringwald extern bool ADC14_isBusy(void);
544*5fd0122aSMatthias Ringwald 
545*5fd0122aSMatthias Ringwald //*****************************************************************************
546*5fd0122aSMatthias Ringwald //
547*5fd0122aSMatthias Ringwald //!
548*5fd0122aSMatthias Ringwald //! Configures an individual memory location for the ADC module.
549*5fd0122aSMatthias Ringwald //!
550*5fd0122aSMatthias Ringwald //! \param memorySelect is the individual ADC memory location to
551*5fd0122aSMatthias Ringwald //!     configure. If multiple memory locations want to be configured with the
552*5fd0122aSMatthias Ringwald //!     same configuration, this value can be logically ORed together with other
553*5fd0122aSMatthias Ringwald //!     values.
554*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
555*5fd0122aSMatthias Ringwald //! \param refSelect is the voltage reference to use for the selected
556*5fd0122aSMatthias Ringwald //!         memory spot. Possible values include:
557*5fd0122aSMatthias Ringwald //!         - \b ADC_VREFPOS_AVCC_VREFNEG_VSS [DEFAULT]
558*5fd0122aSMatthias Ringwald //!         - \b ADC_VREFPOS_INTBUF_VREFNEG_VSS
559*5fd0122aSMatthias Ringwald //!         - \b ADC_VREFPOS_EXTPOS_VREFNEG_EXTNEG
560*5fd0122aSMatthias Ringwald //!         - \b ADC_VREFPOS_EXTBUF_VREFNEG_EXTNEG
561*5fd0122aSMatthias Ringwald //! \param channelSelect selects the channel to be used for ADC sampling.
562*5fd0122aSMatthias Ringwald //!         Note if differential mode is enabled, the value sampled will be
563*5fd0122aSMatthias Ringwald //!         equal to the difference between the corresponding even/odd memory
564*5fd0122aSMatthias Ringwald //!         locations. Possible values are:
565*5fd0122aSMatthias Ringwald //!         - \b ADC_INPUT_A0 through \b ADC_INPUT_A31
566*5fd0122aSMatthias Ringwald //!
567*5fd0122aSMatthias Ringwald //! \param differntialMode selects if the channel selected by the
568*5fd0122aSMatthias Ringwald //!     channelSelect will be configured in differential mode. If this
569*5fd0122aSMatthias Ringwald //!     parameter is given as true, the configured channel will be paired
570*5fd0122aSMatthias Ringwald //!     with its neighbor in differential mode. for example, if channel A0 or A1
571*5fd0122aSMatthias Ringwald //!     is selected, the channel configured will be the difference between A0
572*5fd0122aSMatthias Ringwald //!     and A1. If A2 or A3 are selected, the channel configured will be the
573*5fd0122aSMatthias Ringwald //!     difference between A2 and A3 (and so on). Users can enter true or false,
574*5fd0122aSMatthias Ringwald //!     or one of the following values:
575*5fd0122aSMatthias Ringwald //!         - ADC_NONDIFFERENTIAL_INPUTS
576*5fd0122aSMatthias Ringwald //!         - ADC_DIFFERENTIAL_INPUTS
577*5fd0122aSMatthias Ringwald //!
578*5fd0122aSMatthias Ringwald //!
579*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
580*5fd0122aSMatthias Ringwald //!
581*5fd0122aSMatthias Ringwald //
582*5fd0122aSMatthias Ringwald //*****************************************************************************
583*5fd0122aSMatthias Ringwald extern bool ADC14_configureConversionMemory(uint32_t memorySelect,
584*5fd0122aSMatthias Ringwald         uint32_t refSelect, uint32_t channelSelect, bool differntialMode);
585*5fd0122aSMatthias Ringwald 
586*5fd0122aSMatthias Ringwald //*****************************************************************************
587*5fd0122aSMatthias Ringwald //
588*5fd0122aSMatthias Ringwald //!
589*5fd0122aSMatthias Ringwald //! Enables the specified mask of memory channels to use the specified
590*5fd0122aSMatthias Ringwald //! comparator window. THe ADCC module has two different comparator windows
591*5fd0122aSMatthias Ringwald //! that can be set with this function.
592*5fd0122aSMatthias Ringwald //!
593*5fd0122aSMatthias Ringwald //! \param memorySelect is the mask of memory locations to enable the
594*5fd0122aSMatthias Ringwald //!         comparator window for. This can be a bitwise OR of the following
595*5fd0122aSMatthias Ringwald //!         values:
596*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
597*5fd0122aSMatthias Ringwald //! \param windowSelect Memory location to store sample/conversion
598*5fd0122aSMatthias Ringwald //!         value. Possible values include:
599*5fd0122aSMatthias Ringwald //!         \b ADCOMP_WINDOW0 [DEFAULT]
600*5fd0122aSMatthias Ringwald //!         \b ADCOMP_WINDOW1
601*5fd0122aSMatthias Ringwald //!
602*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
603*5fd0122aSMatthias Ringwald //
604*5fd0122aSMatthias Ringwald //*****************************************************************************
605*5fd0122aSMatthias Ringwald extern bool ADC14_enableComparatorWindow(uint32_t memorySelect,
606*5fd0122aSMatthias Ringwald         uint32_t windowSelect);
607*5fd0122aSMatthias Ringwald 
608*5fd0122aSMatthias Ringwald //*****************************************************************************
609*5fd0122aSMatthias Ringwald //
610*5fd0122aSMatthias Ringwald //!
611*5fd0122aSMatthias Ringwald //! Disables the comparator window on the specified memory channels
612*5fd0122aSMatthias Ringwald //!
613*5fd0122aSMatthias Ringwald //! \param memorySelect is the mask of memory locations to disable the
614*5fd0122aSMatthias Ringwald //!         comparator window for. This can be a bitwise OR of the following
615*5fd0122aSMatthias Ringwald //!         values:
616*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
617*5fd0122aSMatthias Ringwald //!
618*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
619*5fd0122aSMatthias Ringwald //
620*5fd0122aSMatthias Ringwald //*****************************************************************************
621*5fd0122aSMatthias Ringwald extern bool ADC14_disableComparatorWindow(uint32_t memorySelect);
622*5fd0122aSMatthias Ringwald 
623*5fd0122aSMatthias Ringwald //*****************************************************************************
624*5fd0122aSMatthias Ringwald //
625*5fd0122aSMatthias Ringwald //!
626*5fd0122aSMatthias Ringwald //! Sets the lower and upper limits of the specified window comparator. Note
627*5fd0122aSMatthias Ringwald //! that this function will truncate values based of the resolution/data
628*5fd0122aSMatthias Ringwald //! format configured. If the ADC is operating in 10-bit mode, and a 12-bit
629*5fd0122aSMatthias Ringwald //! value is passed into this function the most significant 2 bits will be
630*5fd0122aSMatthias Ringwald //! truncated.
631*5fd0122aSMatthias Ringwald //!
632*5fd0122aSMatthias Ringwald //! The parameters provided to this function for the upper and lower threshold
633*5fd0122aSMatthias Ringwald //! depend on the current resolution for the ADC. For example, if configured
634*5fd0122aSMatthias Ringwald //! in 12-bit mode, a 12-bit resolution is the maximum that can be provided
635*5fd0122aSMatthias Ringwald //! for the window. If in 2's complement mode, Bit 15 is used as the MSB.
636*5fd0122aSMatthias Ringwald //!
637*5fd0122aSMatthias Ringwald //! \param window Memory location to store sample/conversion
638*5fd0122aSMatthias Ringwald //!         value. Possible values include:
639*5fd0122aSMatthias Ringwald //!         \b ADC_COMP_WINDOW0 [DEFAULT]
640*5fd0122aSMatthias Ringwald //!         \b ADC_COMP_WINDOW1
641*5fd0122aSMatthias Ringwald //! \param low is the lower limit of the window comparator
642*5fd0122aSMatthias Ringwald //! \param high is the upper limit of the window comparator
643*5fd0122aSMatthias Ringwald //!
644*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
645*5fd0122aSMatthias Ringwald //!
646*5fd0122aSMatthias Ringwald //
647*5fd0122aSMatthias Ringwald //*****************************************************************************
648*5fd0122aSMatthias Ringwald extern bool ADC14_setComparatorWindowValue(uint32_t window, int16_t low,
649*5fd0122aSMatthias Ringwald         int16_t high);
650*5fd0122aSMatthias Ringwald 
651*5fd0122aSMatthias Ringwald //*****************************************************************************
652*5fd0122aSMatthias Ringwald //
653*5fd0122aSMatthias Ringwald //!
654*5fd0122aSMatthias Ringwald //! Switches between a binary unsigned data format and a signed 2's complement
655*5fd0122aSMatthias Ringwald //! data format.
656*5fd0122aSMatthias Ringwald //!
657*5fd0122aSMatthias Ringwald //! \param resultFormat Format for result to conversion results.
658*5fd0122aSMatthias Ringwald //!         Possible values include:
659*5fd0122aSMatthias Ringwald //!         \b ADC_UNSIGNED_BINARY [DEFAULT]
660*5fd0122aSMatthias Ringwald //!         \b ADC_SIGNED_BINARY
661*5fd0122aSMatthias Ringwald //!
662*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
663*5fd0122aSMatthias Ringwald //!
664*5fd0122aSMatthias Ringwald //
665*5fd0122aSMatthias Ringwald //*****************************************************************************
666*5fd0122aSMatthias Ringwald extern bool ADC14_setResultFormat(uint32_t resultFormat);
667*5fd0122aSMatthias Ringwald 
668*5fd0122aSMatthias Ringwald //*****************************************************************************
669*5fd0122aSMatthias Ringwald //
670*5fd0122aSMatthias Ringwald //!
671*5fd0122aSMatthias Ringwald //! Returns the conversion result for the specified memory channel in the format
672*5fd0122aSMatthias Ringwald //! assigned by the ADC14_setResultFormat (unsigned binary by default) function.
673*5fd0122aSMatthias Ringwald //!
674*5fd0122aSMatthias Ringwald //! \param memorySelect is the memory location to get the conversion result.
675*5fd0122aSMatthias Ringwald //!     Valid values are:
676*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
677*5fd0122aSMatthias Ringwald //! \return conversion result of specified memory channel
678*5fd0122aSMatthias Ringwald //!
679*5fd0122aSMatthias Ringwald //
680*5fd0122aSMatthias Ringwald //*****************************************************************************
681*5fd0122aSMatthias Ringwald extern uint_fast16_t ADC14_getResult(uint32_t memorySelect);
682*5fd0122aSMatthias Ringwald 
683*5fd0122aSMatthias Ringwald //*****************************************************************************
684*5fd0122aSMatthias Ringwald //
685*5fd0122aSMatthias Ringwald //!
686*5fd0122aSMatthias Ringwald //! Returns the conversion results of the currently configured multi-sequence
687*5fd0122aSMatthias Ringwald //! conversion. If a multi-sequence conversion has not happened, this value
688*5fd0122aSMatthias Ringwald //! is unreliable. Note that it is up to the user to verify the integrity of
689*5fd0122aSMatthias Ringwald //! and proper size of the array being passed. If there are 16 multi-sequence
690*5fd0122aSMatthias Ringwald //! results, and an array with only 4 elements allocated is passed, invalid
691*5fd0122aSMatthias Ringwald //! memory settings will occur
692*5fd0122aSMatthias Ringwald //!
693*5fd0122aSMatthias Ringwald //! \param res conversion result of the last multi-sequence sample
694*5fd0122aSMatthias Ringwald //! in an array of unsigned 16-bit integers
695*5fd0122aSMatthias Ringwald //!
696*5fd0122aSMatthias Ringwald //! \return None
697*5fd0122aSMatthias Ringwald //!
698*5fd0122aSMatthias Ringwald //
699*5fd0122aSMatthias Ringwald //*****************************************************************************
700*5fd0122aSMatthias Ringwald extern void ADC14_getMultiSequenceResult(uint16_t* res);
701*5fd0122aSMatthias Ringwald 
702*5fd0122aSMatthias Ringwald //*****************************************************************************
703*5fd0122aSMatthias Ringwald //
704*5fd0122aSMatthias Ringwald //!
705*5fd0122aSMatthias Ringwald //! Returns the conversion results of the specified ADC memory locations.
706*5fd0122aSMatthias Ringwald //! Note that it is up to the user to verify the integrity of
707*5fd0122aSMatthias Ringwald //! and proper size of the array being passed. If there are 16 multi-sequence
708*5fd0122aSMatthias Ringwald //! results, and an array with only 4 elements allocated is passed, invalid
709*5fd0122aSMatthias Ringwald //! memory settings will occur. This function is inclusive.
710*5fd0122aSMatthias Ringwald //!
711*5fd0122aSMatthias Ringwald //! \param memoryStart is the memory location to get the conversion result.
712*5fd0122aSMatthias Ringwald //!     Valid values are:
713*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
714*5fd0122aSMatthias Ringwald //!
715*5fd0122aSMatthias Ringwald //! \param memoryEnd is the memory location to get the conversion result.
716*5fd0122aSMatthias Ringwald //!     Valid values are:
717*5fd0122aSMatthias Ringwald //!         - \b ADC_MEM0 through \b ADC_MEM31
718*5fd0122aSMatthias Ringwald //! \param res conversion result of the last multi-sequence sample
719*5fd0122aSMatthias Ringwald //! in an array of unsigned 16-bit integers
720*5fd0122aSMatthias Ringwald //!
721*5fd0122aSMatthias Ringwald //! \return None
722*5fd0122aSMatthias Ringwald //!
723*5fd0122aSMatthias Ringwald //
724*5fd0122aSMatthias Ringwald //*****************************************************************************
725*5fd0122aSMatthias Ringwald extern void ADC14_getResultArray(uint32_t memoryStart, uint32_t memoryEnd,
726*5fd0122aSMatthias Ringwald         uint16_t* res);
727*5fd0122aSMatthias Ringwald 
728*5fd0122aSMatthias Ringwald //*****************************************************************************
729*5fd0122aSMatthias Ringwald //
730*5fd0122aSMatthias Ringwald //!
731*5fd0122aSMatthias Ringwald //! Enables the "on-demand" activity of the voltage reference register. If this
732*5fd0122aSMatthias Ringwald //! setting is enabled, the internal voltage reference buffer will only be
733*5fd0122aSMatthias Ringwald //! updated during a sample or conversion cycle. This is used to optimize
734*5fd0122aSMatthias Ringwald //! power consumption.
735*5fd0122aSMatthias Ringwald //!
736*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
737*5fd0122aSMatthias Ringwald //!
738*5fd0122aSMatthias Ringwald //
739*5fd0122aSMatthias Ringwald //*****************************************************************************
740*5fd0122aSMatthias Ringwald extern bool ADC14_enableReferenceBurst(void);
741*5fd0122aSMatthias Ringwald 
742*5fd0122aSMatthias Ringwald //*****************************************************************************
743*5fd0122aSMatthias Ringwald //
744*5fd0122aSMatthias Ringwald //!
745*5fd0122aSMatthias Ringwald //! Disables the "on-demand" activity of the voltage reference register.
746*5fd0122aSMatthias Ringwald //!
747*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
748*5fd0122aSMatthias Ringwald //!
749*5fd0122aSMatthias Ringwald //
750*5fd0122aSMatthias Ringwald //*****************************************************************************
751*5fd0122aSMatthias Ringwald extern bool ADC14_disableReferenceBurst(void);
752*5fd0122aSMatthias Ringwald 
753*5fd0122aSMatthias Ringwald //*****************************************************************************
754*5fd0122aSMatthias Ringwald //
755*5fd0122aSMatthias Ringwald //!
756*5fd0122aSMatthias Ringwald //! Sets the power mode of the ADC module. A more aggressive power mode will
757*5fd0122aSMatthias Ringwald //! restrict the number of samples per second for sampling while optimizing
758*5fd0122aSMatthias Ringwald //! power consumption. Ideally, if power consumption is a concern, this value
759*5fd0122aSMatthias Ringwald //! should be set to the most restrictive setting that satisfies your sampling
760*5fd0122aSMatthias Ringwald //! requirement.
761*5fd0122aSMatthias Ringwald //!
762*5fd0122aSMatthias Ringwald //! \param adcPowerMode is the power mode to set. Valid values are:
763*5fd0122aSMatthias Ringwald //!         - \b ADC_UNRESTRICTED_POWER_MODE (no restriction)
764*5fd0122aSMatthias Ringwald //!         - \b ADC_LOW_POWER_MODE (500ksps restriction)
765*5fd0122aSMatthias Ringwald //!         - \b ADC_ULTRA_LOW_POWER_MODE (200ksps restriction)
766*5fd0122aSMatthias Ringwald //!         - \b ADC_EXTREME_LOW_POWER_MODE (50ksps restriction)
767*5fd0122aSMatthias Ringwald //!
768*5fd0122aSMatthias Ringwald //! \return false if setting fails due to an in progress conversion
769*5fd0122aSMatthias Ringwald //!
770*5fd0122aSMatthias Ringwald //
771*5fd0122aSMatthias Ringwald //*****************************************************************************
772*5fd0122aSMatthias Ringwald extern bool ADC14_setPowerMode(uint32_t powerMode);
773*5fd0122aSMatthias Ringwald 
774*5fd0122aSMatthias Ringwald //*****************************************************************************
775*5fd0122aSMatthias Ringwald //
776*5fd0122aSMatthias Ringwald //!
777*5fd0122aSMatthias Ringwald //! Enables SAMPCON to be sourced from the sampling timer and to configures
778*5fd0122aSMatthias Ringwald //! multi sample and conversion mode.
779*5fd0122aSMatthias Ringwald //! \param multiSampleConvert - Switches between manual and automatic
780*5fd0122aSMatthias Ringwald //!         iteration when using the sample timer. Valid values are:
781*5fd0122aSMatthias Ringwald //! - \b ADC_MANUAL_ITERATION The user will have to manually set the SHI signal
782*5fd0122aSMatthias Ringwald //!         ( usually by  ADC14_toggleConversionTrigger ) at the end
783*5fd0122aSMatthias Ringwald //!         of each sample/conversion cycle.
784*5fd0122aSMatthias Ringwald //! - \b ADC_AUTOMATIC_ITERATION  After one sample/convert is finished, the ADC
785*5fd0122aSMatthias Ringwald //!         module will automatically continue on to the next sample
786*5fd0122aSMatthias Ringwald //!
787*5fd0122aSMatthias Ringwald //! \return false if the initialization fails due to an in progress conversion
788*5fd0122aSMatthias Ringwald //
789*5fd0122aSMatthias Ringwald //*****************************************************************************
790*5fd0122aSMatthias Ringwald extern bool ADC14_enableSampleTimer(uint32_t multiSampleConvert);
791*5fd0122aSMatthias Ringwald 
792*5fd0122aSMatthias Ringwald //*****************************************************************************
793*5fd0122aSMatthias Ringwald //
794*5fd0122aSMatthias Ringwald //!
795*5fd0122aSMatthias Ringwald //! Disables SAMPCON from being sourced from the sample timer.
796*5fd0122aSMatthias Ringwald //!
797*5fd0122aSMatthias Ringwald //! \return false if the initialization fails due to an in progress conversion
798*5fd0122aSMatthias Ringwald //
799*5fd0122aSMatthias Ringwald //*****************************************************************************
800*5fd0122aSMatthias Ringwald extern bool ADC14_disableSampleTimer(void);
801*5fd0122aSMatthias Ringwald 
802*5fd0122aSMatthias Ringwald //*****************************************************************************
803*5fd0122aSMatthias Ringwald //
804*5fd0122aSMatthias Ringwald //!
805*5fd0122aSMatthias Ringwald //! Enables the indicated ADCC interrupt sources. The ADC_INT0
806*5fd0122aSMatthias Ringwald //! through ADC_INT31 parameters correspond to a completion event of the
807*5fd0122aSMatthias Ringwald //! corresponding memory location. For example, when the ADC_MEM0 location
808*5fd0122aSMatthias Ringwald //! finishes a conversion cycle, the ADC_INT0 interrupt will be set.
809*5fd0122aSMatthias Ringwald //!
810*5fd0122aSMatthias Ringwald //! \param mask is the bit mask of interrupts to enable.
811*5fd0122aSMatthias Ringwald //!        Valid values are a bitwise OR of the following values:
812*5fd0122aSMatthias Ringwald //!        - \b ADC_INT0 through ADC_INT31
813*5fd0122aSMatthias Ringwald //!        - \b ADC_IN_INT - Interrupt enable for a conversion in the result
814*5fd0122aSMatthias Ringwald //!                          register is either greater than the ADCLO or
815*5fd0122aSMatthias Ringwald //!                          lower than the ADCHI threshold.
816*5fd0122aSMatthias Ringwald //!        - \b ADC_LO_INT - Interrupt enable for the falling short of the
817*5fd0122aSMatthias Ringwald //!                          lower limit interrupt of the window comparator for
818*5fd0122aSMatthias Ringwald //!                          the result register.
819*5fd0122aSMatthias Ringwald //!        - \b ADC_HI_INT - Interrupt enable for the exceeding the upper
820*5fd0122aSMatthias Ringwald //!                          limit of the window comparator for the result
821*5fd0122aSMatthias Ringwald //!                          register.
822*5fd0122aSMatthias Ringwald //!        - \b ADC_OV_INT - Interrupt enable for a conversion that is about
823*5fd0122aSMatthias Ringwald //!                          to save to a memory buffer that has not been read
824*5fd0122aSMatthias Ringwald //!                          out yet.
825*5fd0122aSMatthias Ringwald //!        - \b ADC_TOV_INT -Interrupt enable for a conversion that is about
826*5fd0122aSMatthias Ringwald //!                          to start before the previous conversion has been
827*5fd0122aSMatthias Ringwald //!                          completed.
828*5fd0122aSMatthias Ringwald //!        - \b ADC_RDY_INT -Interrupt enable for the local buffered reference
829*5fd0122aSMatthias Ringwald //!                          ready signal.
830*5fd0122aSMatthias Ringwald //!
831*5fd0122aSMatthias Ringwald //!
832*5fd0122aSMatthias Ringwald //! \return NONE
833*5fd0122aSMatthias Ringwald //
834*5fd0122aSMatthias Ringwald //*****************************************************************************
835*5fd0122aSMatthias Ringwald extern void ADC14_enableInterrupt(uint_fast64_t mask);
836*5fd0122aSMatthias Ringwald 
837*5fd0122aSMatthias Ringwald //*****************************************************************************
838*5fd0122aSMatthias Ringwald //
839*5fd0122aSMatthias Ringwald //!
840*5fd0122aSMatthias Ringwald //! Disables the indicated ADCC interrupt sources.  Only the sources that
841*5fd0122aSMatthias Ringwald //! are enabled can be reflected to the processor interrupt; disabled sources
842*5fd0122aSMatthias Ringwald //! have no effect on the processor. The ADC_INT0 through ADC_INT31
843*5fd0122aSMatthias Ringwald //! parameters correspond to a completion event of the corresponding memory
844*5fd0122aSMatthias Ringwald //! location. For example, when the ADC_MEM0 location finishes a conversion
845*5fd0122aSMatthias Ringwald //! cycle, the ADC_INT0 interrupt will be set.
846*5fd0122aSMatthias Ringwald //!
847*5fd0122aSMatthias Ringwald //! \param mask is the bit mask of interrupts to disable.
848*5fd0122aSMatthias Ringwald //!        Valid values are a bitwise OR of the following values:
849*5fd0122aSMatthias Ringwald //!        - \b ADC_INT0 through ADC_INT31
850*5fd0122aSMatthias Ringwald //!        - \b ADC_IN_INT - Interrupt enable for a conversion in the result
851*5fd0122aSMatthias Ringwald //!                          register is either greater than the ADCLO or
852*5fd0122aSMatthias Ringwald //!                          lower than the ADCHI threshold.
853*5fd0122aSMatthias Ringwald //!        - \b ADC_LO_INT - Interrupt enable for the falling short of the
854*5fd0122aSMatthias Ringwald //!                          lower limit interrupt of the window comparator for
855*5fd0122aSMatthias Ringwald //!                          the result register.
856*5fd0122aSMatthias Ringwald //!        - \b ADC_HI_INT - Interrupt enable for the exceeding the upper
857*5fd0122aSMatthias Ringwald //!                          limit of the window comparator for the result
858*5fd0122aSMatthias Ringwald //!                          register.
859*5fd0122aSMatthias Ringwald //!        - \b ADC_OV_INT - Interrupt enable for a conversion that is about
860*5fd0122aSMatthias Ringwald //!                          to save to a memory buffer that has not been read
861*5fd0122aSMatthias Ringwald //!                          out yet.
862*5fd0122aSMatthias Ringwald //!        - \b ADC_TOV_INT -Interrupt enable for a conversion that is about
863*5fd0122aSMatthias Ringwald //!                          to start before the previous conversion has been
864*5fd0122aSMatthias Ringwald //!                          completed.
865*5fd0122aSMatthias Ringwald //!        - \b ADC_RDY_INT -Interrupt enable for the local buffered reference
866*5fd0122aSMatthias Ringwald //!                          ready signal.
867*5fd0122aSMatthias Ringwald //!
868*5fd0122aSMatthias Ringwald //!
869*5fd0122aSMatthias Ringwald //! \return NONE
870*5fd0122aSMatthias Ringwald //
871*5fd0122aSMatthias Ringwald //*****************************************************************************
872*5fd0122aSMatthias Ringwald extern void ADC14_disableInterrupt(uint_fast64_t mask);
873*5fd0122aSMatthias Ringwald 
874*5fd0122aSMatthias Ringwald //*****************************************************************************
875*5fd0122aSMatthias Ringwald //
876*5fd0122aSMatthias Ringwald //!
877*5fd0122aSMatthias Ringwald //! Returns the status of a the ADC interrupt register. The ADC_INT0
878*5fd0122aSMatthias Ringwald //! through ADC_INT31 parameters correspond to a completion event of the
879*5fd0122aSMatthias Ringwald //! corresponding memory location. For example, when the ADC_MEM0 location
880*5fd0122aSMatthias Ringwald //! finishes a conversion cycle, the ADC_INT0 interrupt will be set.
881*5fd0122aSMatthias Ringwald //!
882*5fd0122aSMatthias Ringwald //! \return The interrupt status. Value is a bitwise OR of the following values:
883*5fd0122aSMatthias Ringwald //!        - \b ADC_INT0 through ADC_INT31
884*5fd0122aSMatthias Ringwald //!        - \b ADC_IN_INT - Interrupt enable for a conversion in the result
885*5fd0122aSMatthias Ringwald //!                          register is either greater than the ADCLO or
886*5fd0122aSMatthias Ringwald //!                          lower than the ADCHI threshold.
887*5fd0122aSMatthias Ringwald //!        - \b ADC_LO_INT - Interrupt enable for the falling short of the
888*5fd0122aSMatthias Ringwald //!                          lower limit interrupt of the window comparator for
889*5fd0122aSMatthias Ringwald //!                          the result register.
890*5fd0122aSMatthias Ringwald //!        - \b ADC_HI_INT - Interrupt enable for the exceeding the upper
891*5fd0122aSMatthias Ringwald //!                          limit of the window comparator for the result
892*5fd0122aSMatthias Ringwald //!                          register.
893*5fd0122aSMatthias Ringwald //!        - \b ADC_OV_INT - Interrupt enable for a conversion that is about
894*5fd0122aSMatthias Ringwald //!                          to save to a memory buffer that has not been read
895*5fd0122aSMatthias Ringwald //!                          out yet.
896*5fd0122aSMatthias Ringwald //!        - \b ADC_TOV_INT -Interrupt enable for a conversion that is about
897*5fd0122aSMatthias Ringwald //!                          to start before the previous conversion has been
898*5fd0122aSMatthias Ringwald //!                          completed.
899*5fd0122aSMatthias Ringwald //!        - \b ADC_RDY_INT -Interrupt enable for the local buffered reference
900*5fd0122aSMatthias Ringwald //!                          ready signal.
901*5fd0122aSMatthias Ringwald //!
902*5fd0122aSMatthias Ringwald //!
903*5fd0122aSMatthias Ringwald //
904*5fd0122aSMatthias Ringwald //*****************************************************************************
905*5fd0122aSMatthias Ringwald extern uint_fast64_t ADC14_getInterruptStatus(void);
906*5fd0122aSMatthias Ringwald 
907*5fd0122aSMatthias Ringwald //*****************************************************************************
908*5fd0122aSMatthias Ringwald //
909*5fd0122aSMatthias Ringwald //!
910*5fd0122aSMatthias Ringwald //! Returns the status of a the ADC interrupt register masked with the
911*5fd0122aSMatthias Ringwald //! enabled interrupts. This function is useful to call in ISRs to get a list
912*5fd0122aSMatthias Ringwald //! of pending interrupts that are actually enabled and could have caused the
913*5fd0122aSMatthias Ringwald //! ISR. The ADC_INT0 through ADC_INT31 parameters correspond to a
914*5fd0122aSMatthias Ringwald //! completion event of the corresponding memory location. For example,
915*5fd0122aSMatthias Ringwald //! when the ADC_MEM0 location finishes a conversion cycle, the ADC_INT0
916*5fd0122aSMatthias Ringwald // !interrupt will be set.
917*5fd0122aSMatthias Ringwald //!
918*5fd0122aSMatthias Ringwald //! \return The interrupt status. Value is a bitwise OR of the following values:
919*5fd0122aSMatthias Ringwald //!        - \b ADC_INT0 through ADC_INT31
920*5fd0122aSMatthias Ringwald //!        - \b ADC_IN_INT - Interrupt enable for a conversion in the result
921*5fd0122aSMatthias Ringwald //!                          register is either greater than the ADCLO or
922*5fd0122aSMatthias Ringwald //!                          lower than the ADCHI threshold.
923*5fd0122aSMatthias Ringwald //!        - \b ADC_LO_INT - Interrupt enable for the falling short of the
924*5fd0122aSMatthias Ringwald //!                          lower limit interrupt of the window comparator for
925*5fd0122aSMatthias Ringwald //!                          the result register.
926*5fd0122aSMatthias Ringwald //!        - \b ADC_HI_INT - Interrupt enable for the exceeding the upper
927*5fd0122aSMatthias Ringwald //!                          limit of the window comparator for the result
928*5fd0122aSMatthias Ringwald //!                          register.
929*5fd0122aSMatthias Ringwald //!        - \b ADC_OV_INT - Interrupt enable for a conversion that is about
930*5fd0122aSMatthias Ringwald //!                          to save to a memory buffer that has not been read
931*5fd0122aSMatthias Ringwald //!                          out yet.
932*5fd0122aSMatthias Ringwald //!        - \b ADC_TOV_INT -Interrupt enable for a conversion that is about
933*5fd0122aSMatthias Ringwald //!                          to start before the previous conversion has been
934*5fd0122aSMatthias Ringwald //!                          completed.
935*5fd0122aSMatthias Ringwald //!        - \b ADC_RDY_INT -Interrupt enable for the local buffered reference
936*5fd0122aSMatthias Ringwald //!                          ready signal.
937*5fd0122aSMatthias Ringwald //!
938*5fd0122aSMatthias Ringwald //!
939*5fd0122aSMatthias Ringwald //
940*5fd0122aSMatthias Ringwald //*****************************************************************************
941*5fd0122aSMatthias Ringwald extern uint_fast64_t ADC14_getEnabledInterruptStatus(void);
942*5fd0122aSMatthias Ringwald 
943*5fd0122aSMatthias Ringwald //*****************************************************************************
944*5fd0122aSMatthias Ringwald //
945*5fd0122aSMatthias Ringwald //!
946*5fd0122aSMatthias Ringwald //! Clears the indicated ADCC interrupt sources.
947*5fd0122aSMatthias Ringwald //!
948*5fd0122aSMatthias Ringwald //! \param mask is the bit mask of interrupts to clear. The ADC_INT0
949*5fd0122aSMatthias Ringwald //! through ADC_INT31 parameters correspond to a completion event of the
950*5fd0122aSMatthias Ringwald //! corresponding memory location. For example, when the ADC_MEM0 location
951*5fd0122aSMatthias Ringwald //! finishes a conversion cycle, the ADC_INT0 interrupt will be set.
952*5fd0122aSMatthias Ringwald //!        Valid values are a bitwise OR of the following values:
953*5fd0122aSMatthias Ringwald //!        - \b ADC_INT0 through ADC_INT31
954*5fd0122aSMatthias Ringwald //!        - \b ADC_IN_INT - Interrupt enable for a conversion in the result
955*5fd0122aSMatthias Ringwald //!                          register is either greater than the ADCLO or
956*5fd0122aSMatthias Ringwald //!                          lower than the ADCHI threshold.
957*5fd0122aSMatthias Ringwald //!        - \b ADC_LO_INT - Interrupt enable for the falling short of the
958*5fd0122aSMatthias Ringwald //!                          lower limit interrupt of the window comparator for
959*5fd0122aSMatthias Ringwald //!                          the result register.
960*5fd0122aSMatthias Ringwald //!        - \b ADC_HI_INT - Interrupt enable for the exceeding the upper
961*5fd0122aSMatthias Ringwald //!                          limit of the window comparator for the result
962*5fd0122aSMatthias Ringwald //!                          register.
963*5fd0122aSMatthias Ringwald //!        - \b ADC_OV_INT - Interrupt enable for a conversion that is about
964*5fd0122aSMatthias Ringwald //!                          to save to a memory buffer that has not been read
965*5fd0122aSMatthias Ringwald //!                          out yet.
966*5fd0122aSMatthias Ringwald //!        - \b ADC_TOV_INT -Interrupt enable for a conversion that is about
967*5fd0122aSMatthias Ringwald //!                          to start before the previous conversion has been
968*5fd0122aSMatthias Ringwald //!                          completed.
969*5fd0122aSMatthias Ringwald //!        - \b ADC_RDY_INT -Interrupt enable for the local buffered reference
970*5fd0122aSMatthias Ringwald //!                          ready signal.
971*5fd0122aSMatthias Ringwald //!
972*5fd0122aSMatthias Ringwald //!
973*5fd0122aSMatthias Ringwald //! \return NONE
974*5fd0122aSMatthias Ringwald //
975*5fd0122aSMatthias Ringwald //*****************************************************************************
976*5fd0122aSMatthias Ringwald extern void ADC14_clearInterruptFlag(uint_fast64_t mask);
977*5fd0122aSMatthias Ringwald 
978*5fd0122aSMatthias Ringwald //*****************************************************************************
979*5fd0122aSMatthias Ringwald //
980*5fd0122aSMatthias Ringwald //!
981*5fd0122aSMatthias Ringwald //! Registers an interrupt handler for the ADC interrupt.
982*5fd0122aSMatthias Ringwald //!
983*5fd0122aSMatthias Ringwald //! \param intHandler is a pointer to the function to be called when the ADC
984*5fd0122aSMatthias Ringwald //!  interrupt occurs.
985*5fd0122aSMatthias Ringwald //!
986*5fd0122aSMatthias Ringwald //! This function registers the handler to be called when an ADC
987*5fd0122aSMatthias Ringwald //! interrupt occurs. This function enables the global interrupt in the
988*5fd0122aSMatthias Ringwald //! interrupt controller; specific ADC14 interrupts must be enabled
989*5fd0122aSMatthias Ringwald //! via ADC14_enableInterrupt().  It is the interrupt handler's responsibility
990*5fd0122aSMatthias Ringwald //! to clear the interrupt source via ADC14_clearInterruptFlag().
991*5fd0122aSMatthias Ringwald //!
992*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about
993*5fd0122aSMatthias Ringwald //! registering interrupt handlers.
994*5fd0122aSMatthias Ringwald //!
995*5fd0122aSMatthias Ringwald //! \return None.
996*5fd0122aSMatthias Ringwald //
997*5fd0122aSMatthias Ringwald //*****************************************************************************
998*5fd0122aSMatthias Ringwald extern void ADC14_registerInterrupt(void (*intHandler)(void));
999*5fd0122aSMatthias Ringwald 
1000*5fd0122aSMatthias Ringwald //*****************************************************************************
1001*5fd0122aSMatthias Ringwald //
1002*5fd0122aSMatthias Ringwald //!
1003*5fd0122aSMatthias Ringwald //! Unregisters the interrupt handler for the ADCC module.
1004*5fd0122aSMatthias Ringwald //!
1005*5fd0122aSMatthias Ringwald //! This function unregisters the handler to be called when an ADCC
1006*5fd0122aSMatthias Ringwald //! interrupt occurs.  This function also masks off the interrupt in the
1007*5fd0122aSMatthias Ringwald //! interrupt controller so that the interrupt handler no longer is called.
1008*5fd0122aSMatthias Ringwald //!
1009*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about
1010*5fd0122aSMatthias Ringwald //! registering interrupt handlers.
1011*5fd0122aSMatthias Ringwald //!
1012*5fd0122aSMatthias Ringwald //! \return None.
1013*5fd0122aSMatthias Ringwald //
1014*5fd0122aSMatthias Ringwald //*****************************************************************************
1015*5fd0122aSMatthias Ringwald extern void ADC14_unregisterInterrupt(void);
1016*5fd0122aSMatthias Ringwald 
1017*5fd0122aSMatthias Ringwald /* Defines for future devices that might have multiple instances */
1018*5fd0122aSMatthias Ringwald #define ADC14_enableModuleMultipleInstance(a) ADC14_enableModule()
1019*5fd0122aSMatthias Ringwald #define ADC14_disableModuleMultipleInstance(a) ADC14_disableModule()
1020*5fd0122aSMatthias Ringwald #define ADC14_initModuleMultipleInstance(a,b,c,d,e) ADC14_initModule(b,c,d,e)
1021*5fd0122aSMatthias Ringwald #define ADC14_setResolutionMultipleInstance(a,b) ADC14_setResolution(b)
1022*5fd0122aSMatthias Ringwald #define ADC14_getResolutionMultipleInstance(a) ADC14_getResolution()
1023*5fd0122aSMatthias Ringwald #define ADC14_setSampleHoldTriggerMultipleInstance(a,b,c) ADC14_setSampleHoldTrigger(b,c)
1024*5fd0122aSMatthias Ringwald #define ADC14_setSampleHoldTimeMultipleInstance(a,b,c) ADC14_setSampleHoldTime(b,c)
1025*5fd0122aSMatthias Ringwald #define ADC14_configureMultiSequenceModeMultipleInstance(a,b,c,d) ADC14_configureMultiSequenceMode(b,c,d)
1026*5fd0122aSMatthias Ringwald #define ADC14_configureSingleSampleModeMultipleInstance(a,b,c) ADC14_configureSingleSampleMode(b,c)
1027*5fd0122aSMatthias Ringwald #define ADC14_enableConversionMultipleInstance(a,b) ADC14_enableConversion(b)
1028*5fd0122aSMatthias Ringwald #define ADC14_disableConversionMultipleInstance(a) ADC14_disableConversion()
1029*5fd0122aSMatthias Ringwald #define ADC14_toggleConversionTriggerMultipleInstance(a) ADC14_toggleConversionTrigger()
1030*5fd0122aSMatthias Ringwald #define ADC14_isBusyMultipleInstance(a) ADC14_isBusy()
1031*5fd0122aSMatthias Ringwald #define ADC14_configureConversionMemoryMultipleInstance(a,b,c,d,e) ADC14_configureConversionMemory(b,c,d,e)
1032*5fd0122aSMatthias Ringwald #define ADC14_enableComparatorWindowMultipleInstance(a,b,c) ADC14_enableComparatorWindow(b,c)
1033*5fd0122aSMatthias Ringwald #define ADC14_disableComparatorWindowMultipleInstance(a,b) ADC14_disableComparatorWindow(b)
1034*5fd0122aSMatthias Ringwald #define ADC14_setComparatorWindowValueMultipleInstance(a,b,c,d) ADC14_setComparatorWindowValue(b,c,d)
1035*5fd0122aSMatthias Ringwald #define ADC14_setResultFormatMultipleInstance(a,b) ADC14_setResultFormat(b)
1036*5fd0122aSMatthias Ringwald #define ADC14_getResultMultipleInstance(a,b) ADC14_getResult(b)
1037*5fd0122aSMatthias Ringwald #define ADC14_getMultiSequenceResultMultipleInstance(a,b) ADC14_getMultiSequenceResult(b)
1038*5fd0122aSMatthias Ringwald #define ADC14_getResultArrayMultipleInstance(a,b,c,d) ADC14_getResultArray(b,c,d)
1039*5fd0122aSMatthias Ringwald #define ADC14_enableReferenceBurstMultipleInstance(a) ADC14_enableReferenceBurst()
1040*5fd0122aSMatthias Ringwald #define ADC14_disableReferenceBurstMultipleInstance(a) ADC14_disableReferenceBurst()
1041*5fd0122aSMatthias Ringwald #define ADC14_setPowerModeMultipleInstance(a,b) ADC14_setPowerMode(b)
1042*5fd0122aSMatthias Ringwald #define ADC14_enableSampleTimerMultipleInstance(a,b) ADC14_enableSampleTimer(b)
1043*5fd0122aSMatthias Ringwald #define ADC14_disableSampleTimerMultipleInstance(a) ADC14_disableSampleTimer()
1044*5fd0122aSMatthias Ringwald #define ADC14_enableInterruptMultipleInstance(a,b) ADC14_enableInterrupt(b)
1045*5fd0122aSMatthias Ringwald #define ADC14_disableInterruptMultipleInstance(a,b) ADC14_disableInterrupt(b)
1046*5fd0122aSMatthias Ringwald #define ADC14_getInterruptStatusMultipleInstance(a) ADC14_getInterruptStatus()
1047*5fd0122aSMatthias Ringwald #define ADC14_getEnabledInterruptStatusMultipleInstance(a) ADC14_getEnabledInterruptStatus()
1048*5fd0122aSMatthias Ringwald #define ADC14_clearInterruptFlagMultipleInstance(a,b) ADC14_clearInterruptFlag(b)
1049*5fd0122aSMatthias Ringwald #define ADC14_registerInterruptMultipleInstance(a,b) ADC14_registerInterrupt(b)
1050*5fd0122aSMatthias Ringwald #define ADC14_unregisterInterruptMultipleInstance(a) ADC14_unregisterInterrupt()
1051*5fd0122aSMatthias Ringwald 
1052*5fd0122aSMatthias Ringwald //*****************************************************************************
1053*5fd0122aSMatthias Ringwald //
1054*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers.
1055*5fd0122aSMatthias Ringwald //
1056*5fd0122aSMatthias Ringwald //*****************************************************************************
1057*5fd0122aSMatthias Ringwald #ifdef __cplusplus
1058*5fd0122aSMatthias Ringwald }
1059*5fd0122aSMatthias Ringwald #endif
1060*5fd0122aSMatthias Ringwald 
1061*5fd0122aSMatthias Ringwald //*****************************************************************************
1062*5fd0122aSMatthias Ringwald //
1063*5fd0122aSMatthias Ringwald // Close the Doxygen group.
1064*5fd0122aSMatthias Ringwald //! @}
1065*5fd0122aSMatthias Ringwald //
1066*5fd0122aSMatthias Ringwald //*****************************************************************************
1067*5fd0122aSMatthias Ringwald 
1068*5fd0122aSMatthias Ringwald #endif /* ADC14_H_ */
1069