xref: /btstack/port/msp432p401lp-cc256x/ti/devices/msp432p4xx/driverlib/comp_e.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 COMP_E_H_
33*5fd0122aSMatthias Ringwald #define COMP_E_H_
34*5fd0122aSMatthias Ringwald 
35*5fd0122aSMatthias Ringwald //*****************************************************************************
36*5fd0122aSMatthias Ringwald //
37*5fd0122aSMatthias Ringwald //! \addtogroup comp_api
38*5fd0122aSMatthias Ringwald //! @{
39*5fd0122aSMatthias Ringwald //
40*5fd0122aSMatthias Ringwald //*****************************************************************************
41*5fd0122aSMatthias Ringwald 
42*5fd0122aSMatthias Ringwald //*****************************************************************************
43*5fd0122aSMatthias Ringwald //
44*5fd0122aSMatthias Ringwald // If building with a C++ compiler, make all of the definitions in this header
45*5fd0122aSMatthias Ringwald // have a C binding.
46*5fd0122aSMatthias Ringwald //
47*5fd0122aSMatthias Ringwald //*****************************************************************************
48*5fd0122aSMatthias Ringwald #ifdef __cplusplus
49*5fd0122aSMatthias Ringwald extern "C"
50*5fd0122aSMatthias Ringwald {
51*5fd0122aSMatthias Ringwald #endif
52*5fd0122aSMatthias Ringwald 
53*5fd0122aSMatthias Ringwald #include <stdint.h>
54*5fd0122aSMatthias Ringwald #include <stdbool.h>
55*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/inc/msp.h>
56*5fd0122aSMatthias Ringwald 
57*5fd0122aSMatthias Ringwald /* Module defines for Comp */
58*5fd0122aSMatthias Ringwald #define COMP_E_CMSIS(x) ((COMP_E_Type *) x)
59*5fd0122aSMatthias Ringwald 
60*5fd0122aSMatthias Ringwald #define COMP_E_FILTEROUTPUT_OFF                                            0x00
61*5fd0122aSMatthias Ringwald #define COMP_E_FILTEROUTPUT_DLYLVL1         (COMP_E_CTL1_F + COMP_E_CTL1_FDLY_0)
62*5fd0122aSMatthias Ringwald #define COMP_E_FILTEROUTPUT_DLYLVL2         (COMP_E_CTL1_F + COMP_E_CTL1_FDLY_1)
63*5fd0122aSMatthias Ringwald #define COMP_E_FILTEROUTPUT_DLYLVL3         (COMP_E_CTL1_F + COMP_E_CTL1_FDLY_2)
64*5fd0122aSMatthias Ringwald #define COMP_E_FILTEROUTPUT_DLYLVL4         (COMP_E_CTL1_F + COMP_E_CTL1_FDLY_3)
65*5fd0122aSMatthias Ringwald 
66*5fd0122aSMatthias Ringwald #define COMP_E_INPUT0                                                    (0x01)
67*5fd0122aSMatthias Ringwald #define COMP_E_INPUT1                                                    (0x02)
68*5fd0122aSMatthias Ringwald #define COMP_E_INPUT2                                                    (0x04)
69*5fd0122aSMatthias Ringwald #define COMP_E_INPUT3                                                    (0x08)
70*5fd0122aSMatthias Ringwald #define COMP_E_INPUT4                                                    (0x10)
71*5fd0122aSMatthias Ringwald #define COMP_E_INPUT5                                                    (0x20)
72*5fd0122aSMatthias Ringwald #define COMP_E_INPUT6                                                    (0x40)
73*5fd0122aSMatthias Ringwald #define COMP_E_INPUT7                                                    (0x80)
74*5fd0122aSMatthias Ringwald #define COMP_E_INPUT8                                                   (0x100)
75*5fd0122aSMatthias Ringwald #define COMP_E_INPUT9                                                   (0x200)
76*5fd0122aSMatthias Ringwald #define COMP_E_INPUT10                                                  (0x400)
77*5fd0122aSMatthias Ringwald #define COMP_E_INPUT11                                                  (0x800)
78*5fd0122aSMatthias Ringwald #define COMP_E_INPUT12                                                 (0x1000)
79*5fd0122aSMatthias Ringwald #define COMP_E_INPUT13                                                 (0x2000)
80*5fd0122aSMatthias Ringwald #define COMP_E_INPUT14                                                 (0x4000)
81*5fd0122aSMatthias Ringwald #define COMP_E_INPUT15                                                 (0x8000)
82*5fd0122aSMatthias Ringwald #define COMP_E_VREF                                                      (0x9F)
83*5fd0122aSMatthias Ringwald 
84*5fd0122aSMatthias Ringwald #define COMP_E_NORMALOUTPUTPOLARITY                      (!(COMP_E_CTL1_OUTPOL))
85*5fd0122aSMatthias Ringwald #define COMP_E_INVERTEDOUTPUTPOLARITY                       (COMP_E_CTL1_OUTPOL)
86*5fd0122aSMatthias Ringwald 
87*5fd0122aSMatthias Ringwald #define COMP_E_REFERENCE_AMPLIFIER_DISABLED               (COMP_E_CTL2_CEREFL_0)
88*5fd0122aSMatthias Ringwald #define COMP_E_VREFBASE1_2V                               (COMP_E_CTL2_CEREFL_1)
89*5fd0122aSMatthias Ringwald #define COMP_E_VREFBASE2_0V                               (COMP_E_CTL2_CEREFL_2)
90*5fd0122aSMatthias Ringwald #define COMP_E_VREFBASE2_5V                               (COMP_E_CTL2_CEREFL_3)
91*5fd0122aSMatthias Ringwald 
92*5fd0122aSMatthias Ringwald #define COMP_E_ACCURACY_STATIC                             (!COMP_E_CTL2_REFACC)
93*5fd0122aSMatthias Ringwald #define COMP_E_ACCURACY_CLOCKED                             (COMP_E_CTL2_REFACC)
94*5fd0122aSMatthias Ringwald 
95*5fd0122aSMatthias Ringwald #define COMP_E_HIGH_SPEED_MODE                             (COMP_E_CTL1_PWRMD_0)
96*5fd0122aSMatthias Ringwald #define COMP_E_NORMAL_MODE                                 (COMP_E_CTL1_PWRMD_1)
97*5fd0122aSMatthias Ringwald #define COMP_E_ULTRA_LOW_POWER_MODE                        (COMP_E_CTL1_PWRMD_2)
98*5fd0122aSMatthias Ringwald 
99*5fd0122aSMatthias Ringwald #define COMP_E_OUTPUT_INTERRUPT                                  (COMP_E_INT_IE)
100*5fd0122aSMatthias Ringwald #define COMP_E_INVERTED_POLARITY_INTERRUPT                      (COMP_E_INT_IIE)
101*5fd0122aSMatthias Ringwald #define COMP_E_READY_INTERRUPT                                (COMP_E_INT_RDYIE)
102*5fd0122aSMatthias Ringwald 
103*5fd0122aSMatthias Ringwald #define COMP_E_OUTPUT_INTERRUPT_FLAG                            (COMP_E_INT_IFG)
104*5fd0122aSMatthias Ringwald #define COMP_E_INTERRUPT_FLAG_INVERTED_POLARITY                (COMP_E_INT_IIFG)
105*5fd0122aSMatthias Ringwald #define COMP_E_INTERRUPT_FLAG_READY                          (COMP_E_INT_RDYIFG)
106*5fd0122aSMatthias Ringwald 
107*5fd0122aSMatthias Ringwald #define COMP_E_FALLINGEDGE                                     (COMP_E_CTL1_IES)
108*5fd0122aSMatthias Ringwald #define COMP_E_RISINGEDGE                                   (!(COMP_E_CTL1_IES))
109*5fd0122aSMatthias Ringwald 
110*5fd0122aSMatthias Ringwald #define COMP_E_LOW                                                         (0x0)
111*5fd0122aSMatthias Ringwald #define COMP_E_HIGH                                            (COMP_E_CTL1_OUT)
112*5fd0122aSMatthias Ringwald 
113*5fd0122aSMatthias Ringwald //*****************************************************************************
114*5fd0122aSMatthias Ringwald //
115*5fd0122aSMatthias Ringwald //!     ypedef COMP_E_Config
116*5fd0122aSMatthias Ringwald //! \brief Type definition for \link _COMP_E_Config \endlink structure
117*5fd0122aSMatthias Ringwald //!
118*5fd0122aSMatthias Ringwald //! \struct _COMP_E_Config
119*5fd0122aSMatthias Ringwald //! \brief Configuration structure for Comparator module. See
120*5fd0122aSMatthias Ringwald //!        \link COMP_E_initModule \endlink for parameter documentation.
121*5fd0122aSMatthias Ringwald //
122*5fd0122aSMatthias Ringwald //*****************************************************************************
123*5fd0122aSMatthias Ringwald typedef struct _COMP_E_Config
124*5fd0122aSMatthias Ringwald {
125*5fd0122aSMatthias Ringwald     uint_fast16_t positiveTerminalInput;
126*5fd0122aSMatthias Ringwald     uint_fast16_t negativeTerminalInput;
127*5fd0122aSMatthias Ringwald     uint_fast8_t outputFilterEnableAndDelayLevel;
128*5fd0122aSMatthias Ringwald     uint_fast8_t invertedOutputPolarity;
129*5fd0122aSMatthias Ringwald     uint_fast16_t powerMode;
130*5fd0122aSMatthias Ringwald } COMP_E_Config;
131*5fd0122aSMatthias Ringwald 
132*5fd0122aSMatthias Ringwald //*****************************************************************************
133*5fd0122aSMatthias Ringwald //
134*5fd0122aSMatthias Ringwald //! Initializes the Comparator Module.
135*5fd0122aSMatthias Ringwald //!
136*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
137*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
138*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
139*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
140*5fd0122aSMatthias Ringwald //! \param config Configuration structure for the Comparator module
141*5fd0122aSMatthias Ringwald //!
142*5fd0122aSMatthias Ringwald //! <hr>
143*5fd0122aSMatthias Ringwald //! <b>Configuration options for \link COMP_E_Config \endlink structure.</b>
144*5fd0122aSMatthias Ringwald //! <hr>
145*5fd0122aSMatthias Ringwald //!
146*5fd0122aSMatthias Ringwald //! \param positiveTerminalInput selects the input to the positive terminal.
147*5fd0122aSMatthias Ringwald //!        Valid values are
148*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT0 [Default]
149*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT1
150*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT2
151*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT3
152*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT4
153*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT5
154*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT6
155*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT7
156*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT8
157*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT9
158*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT10
159*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT11
160*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT12
161*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT13
162*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT14
163*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT15
164*5fd0122aSMatthias Ringwald //!        - \b COMP_E_VREF
165*5fd0122aSMatthias Ringwald //!        \n Modified bits are \b CEIPSEL and \b CEIPEN of \b CECTL0 register,
166*5fd0122aSMatthias Ringwald //!        \b CERSEL of \b CECTL2 register, and CEPDx of \b CECTL3 register.
167*5fd0122aSMatthias Ringwald //! \param negativeTerminalInput selects the input to the negative terminal.
168*5fd0122aSMatthias Ringwald //!        \n Valid values are:
169*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT0 [Default]
170*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT1
171*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT2
172*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT3
173*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT4
174*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT5
175*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT6
176*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT7
177*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT8
178*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT9
179*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT10
180*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT11
181*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT12
182*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT13
183*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT14
184*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT15
185*5fd0122aSMatthias Ringwald //!        - \b COMP_E_VREF
186*5fd0122aSMatthias Ringwald //!        \n Modified bits are \b CEIMSEL and \b CEIMEN of \b CECTL0 register,
187*5fd0122aSMatthias Ringwald //!        \b CERSEL of \b CECTL2 register, and CEPDx of \b CECTL3 register.
188*5fd0122aSMatthias Ringwald //! \param outputFilterEnableAndDelayLevel controls the output filter delay
189*5fd0122aSMatthias Ringwald //!       state, which is either off or enabled with a specified delay level.
190*5fd0122aSMatthias Ringwald //!        \n Valid values are
191*5fd0122aSMatthias Ringwald //!        - \b COMP_E_FILTEROUTPUT_OFF [Default]
192*5fd0122aSMatthias Ringwald //!        - \b COMP_E_FILTEROUTPUT_DLYLVL1
193*5fd0122aSMatthias Ringwald //!        - \b COMP_E_FILTEROUTPUT_DLYLVL2
194*5fd0122aSMatthias Ringwald //!        - \b COMP_E_FILTEROUTPUT_DLYLVL3
195*5fd0122aSMatthias Ringwald //!        - \b COMP_E_FILTEROUTPUT_DLYLVL4
196*5fd0122aSMatthias Ringwald //!        \n This parameter is device specific and delay levels should be found
197*5fd0122aSMatthias Ringwald //!        in the device's datasheet.
198*5fd0122aSMatthias Ringwald //!        \n Modified bits are \b CEF and \b CEFDLY of \b CECTL1 register.
199*5fd0122aSMatthias Ringwald //! \param invertedOutputPolarity controls if the output will be inverted or
200*5fd0122aSMatthias Ringwald //!        not. Valid values are
201*5fd0122aSMatthias Ringwald //!        - \b COMP_E_NORMALOUTPUTPOLARITY - indicates the output should be
202*5fd0122aSMatthias Ringwald //!             normal. [Default]
203*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INVERTEDOUTPUTPOLARITY -  the output should be inverted.
204*5fd0122aSMatthias Ringwald //!        \n Modified bits are \b CEOUTPOL of \b CECTL1 register.
205*5fd0122aSMatthias Ringwald //! \param powerMode controls the power mode of the module
206*5fd0122aSMatthias Ringwald //!        - \b COMP_E_HIGH_SPEED_MODE [default]
207*5fd0122aSMatthias Ringwald //!        - \b COMP_E_NORMAL_MODE
208*5fd0122aSMatthias Ringwald //!        - \b COMP_E_ULTRA_LOW_POWER_MODE
209*5fd0122aSMatthias Ringwald //! Upon successful initialization of the Comparator module, this function will
210*5fd0122aSMatthias Ringwald //! have reset all necessary register bits and set the given options in the
211*5fd0122aSMatthias Ringwald //! registers. To actually use the comparator module, the COMP_E_enableModule()
212*5fd0122aSMatthias Ringwald //! function must be explicitly called before use.
213*5fd0122aSMatthias Ringwald //! If a Reference Voltage is set to a terminal, the Voltage should be set
214*5fd0122aSMatthias Ringwald //! using the COMP_E_setReferenceVoltage() function.
215*5fd0122aSMatthias Ringwald //!
216*5fd0122aSMatthias Ringwald //! \return true or false of the initialization process.
217*5fd0122aSMatthias Ringwald //
218*5fd0122aSMatthias Ringwald //*****************************************************************************
219*5fd0122aSMatthias Ringwald extern bool COMP_E_initModule(uint32_t comparator, const COMP_E_Config *config);
220*5fd0122aSMatthias Ringwald 
221*5fd0122aSMatthias Ringwald //*****************************************************************************
222*5fd0122aSMatthias Ringwald //
223*5fd0122aSMatthias Ringwald //! Generates a Reference Voltage to the terminal selected during
224*5fd0122aSMatthias Ringwald //! initialization.
225*5fd0122aSMatthias Ringwald //!
226*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
227*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
228*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
229*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
230*5fd0122aSMatthias Ringwald //! \param supplyVoltageReferenceBase decides the source and max amount of
231*5fd0122aSMatthias Ringwald //!       Voltage that can be used as a reference.
232*5fd0122aSMatthias Ringwald //!        Valid values are
233*5fd0122aSMatthias Ringwald //!        - \b COMP_E_REFERENCE_AMPLIFIER_DISABLED
234*5fd0122aSMatthias Ringwald //!        - \b COMP_E_VREFBASE1_2V
235*5fd0122aSMatthias Ringwald //!        - \b COMP_E_VREFBASE2_0V
236*5fd0122aSMatthias Ringwald //!        - \b COMP_E_VREFBASE2_5V
237*5fd0122aSMatthias Ringwald //! \param upperLimitSupplyVoltageFractionOf32 is the numerator of the
238*5fd0122aSMatthias Ringwald //!       equation to generate the reference voltage for the upper limit
239*5fd0122aSMatthias Ringwald //!       reference voltage. Valid values are between 1 and 32.
240*5fd0122aSMatthias Ringwald //! \param lowerLimitSupplyVoltageFractionOf32 is the numerator of the
241*5fd0122aSMatthias Ringwald //!       equation to generate the reference voltage for the lower limit
242*5fd0122aSMatthias Ringwald //!       reference voltage. Valid values are between 1 and 32.
243*5fd0122aSMatthias Ringwald //!  <br>Modified bits are \b CEREF0 of \b CECTL2 register.
244*5fd0122aSMatthias Ringwald //!
245*5fd0122aSMatthias Ringwald //! Use this function to generate a voltage to serve as a reference to the
246*5fd0122aSMatthias Ringwald //! terminal selected at initialization. The voltage is determined by the
247*5fd0122aSMatthias Ringwald //! equation: Vbase * (Numerator / 32). If the upper and lower limit voltage
248*5fd0122aSMatthias Ringwald //! numerators are equal, then a static reference is defined, whereas they are
249*5fd0122aSMatthias Ringwald //! different then a hysteresis effect is generated.
250*5fd0122aSMatthias Ringwald //!
251*5fd0122aSMatthias Ringwald //! \return NONE
252*5fd0122aSMatthias Ringwald //
253*5fd0122aSMatthias Ringwald //*****************************************************************************
254*5fd0122aSMatthias Ringwald extern void COMP_E_setReferenceVoltage(uint32_t comparator,
255*5fd0122aSMatthias Ringwald         uint_fast16_t supplyVoltageReferenceBase,
256*5fd0122aSMatthias Ringwald         uint_fast16_t lowerLimitSupplyVoltageFractionOf32,
257*5fd0122aSMatthias Ringwald         uint_fast16_t upperLimitSupplyVoltageFractionOf32);
258*5fd0122aSMatthias Ringwald 
259*5fd0122aSMatthias Ringwald //*****************************************************************************
260*5fd0122aSMatthias Ringwald //
261*5fd0122aSMatthias Ringwald //! Sets the reference accuracy
262*5fd0122aSMatthias Ringwald //!
263*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
264*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
265*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
266*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
267*5fd0122aSMatthias Ringwald //! \param referenceAccuracy is the reference accuracy setting of the
268*5fd0122aSMatthias Ringwald //!      comparator. Clocked is for low power/low accuracy.
269*5fd0122aSMatthias Ringwald //!      Valid values are
270*5fd0122aSMatthias Ringwald //!      - \b COMP_E_ACCURACY_STATIC
271*5fd0122aSMatthias Ringwald //!      - \b COMP_E_ACCURACY_CLOCKED
272*5fd0122aSMatthias Ringwald //!      <br>Modified bits are \b CEREFACC of \b CECTL2 register.
273*5fd0122aSMatthias Ringwald //!
274*5fd0122aSMatthias Ringwald //! The reference accuracy is set to the desired setting. Clocked is better for
275*5fd0122aSMatthias Ringwald //!  low power operations but has a lower accuracy.
276*5fd0122aSMatthias Ringwald //!
277*5fd0122aSMatthias Ringwald //! \return NONE
278*5fd0122aSMatthias Ringwald //
279*5fd0122aSMatthias Ringwald //*****************************************************************************
280*5fd0122aSMatthias Ringwald extern void COMP_E_setReferenceAccuracy(uint32_t comparator,
281*5fd0122aSMatthias Ringwald         uint_fast16_t referenceAccuracy);
282*5fd0122aSMatthias Ringwald 
283*5fd0122aSMatthias Ringwald //*****************************************************************************
284*5fd0122aSMatthias Ringwald //
285*5fd0122aSMatthias Ringwald //! Sets the power mode
286*5fd0122aSMatthias Ringwald //!
287*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
288*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
289*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
290*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
291*5fd0122aSMatthias Ringwald //! \param powerMode decides the power mode
292*5fd0122aSMatthias Ringwald //!        Valid values are
293*5fd0122aSMatthias Ringwald //!        - \b COMP_E_HIGH_SPEED_MODE
294*5fd0122aSMatthias Ringwald //!        - \b COMP_E_NORMAL_MODE
295*5fd0122aSMatthias Ringwald //!        - \b COMP_E_ULTRA_LOW_POWER_MODE
296*5fd0122aSMatthias Ringwald //!        <br>Modified bits are \b CEPWRMD of \b CECTL1 register.
297*5fd0122aSMatthias Ringwald //!
298*5fd0122aSMatthias Ringwald //! \return NONE
299*5fd0122aSMatthias Ringwald //
300*5fd0122aSMatthias Ringwald //*****************************************************************************
301*5fd0122aSMatthias Ringwald extern void COMP_E_setPowerMode(uint32_t comparator, uint_fast16_t powerMode);
302*5fd0122aSMatthias Ringwald 
303*5fd0122aSMatthias Ringwald //*****************************************************************************
304*5fd0122aSMatthias Ringwald //
305*5fd0122aSMatthias Ringwald //! Turns on the Comparator module.
306*5fd0122aSMatthias Ringwald //!
307*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
308*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
309*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
310*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
311*5fd0122aSMatthias Ringwald //!
312*5fd0122aSMatthias Ringwald //! This function sets the bit that enables the operation of the
313*5fd0122aSMatthias Ringwald //! Comparator module.
314*5fd0122aSMatthias Ringwald //!
315*5fd0122aSMatthias Ringwald //! \return NONE
316*5fd0122aSMatthias Ringwald //
317*5fd0122aSMatthias Ringwald //*****************************************************************************
318*5fd0122aSMatthias Ringwald extern void COMP_E_enableModule(uint32_t comparator);
319*5fd0122aSMatthias Ringwald 
320*5fd0122aSMatthias Ringwald //*****************************************************************************
321*5fd0122aSMatthias Ringwald //
322*5fd0122aSMatthias Ringwald //! Turns off the Comparator module.
323*5fd0122aSMatthias Ringwald //!
324*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
325*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
326*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
327*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
328*5fd0122aSMatthias Ringwald //!
329*5fd0122aSMatthias Ringwald //! This function clears the CEON bit disabling the operation of the Comparator
330*5fd0122aSMatthias Ringwald //! module, saving from excess power consumption.
331*5fd0122aSMatthias Ringwald //!
332*5fd0122aSMatthias Ringwald //! Modified bits are \b CEON of \b CECTL1 register.
333*5fd0122aSMatthias Ringwald //! \return NONE
334*5fd0122aSMatthias Ringwald //
335*5fd0122aSMatthias Ringwald //*****************************************************************************
336*5fd0122aSMatthias Ringwald extern void COMP_E_disableModule(uint32_t comparator);
337*5fd0122aSMatthias Ringwald 
338*5fd0122aSMatthias Ringwald //*****************************************************************************
339*5fd0122aSMatthias Ringwald //
340*5fd0122aSMatthias Ringwald //! Shorts the two input pins chosen during initialization.
341*5fd0122aSMatthias Ringwald //!
342*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
343*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
344*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
345*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
346*5fd0122aSMatthias Ringwald //!
347*5fd0122aSMatthias Ringwald //! This function sets the bit that shorts the devices attached to the input
348*5fd0122aSMatthias Ringwald //! pins chosen from the initialization of the comparator.
349*5fd0122aSMatthias Ringwald //!
350*5fd0122aSMatthias Ringwald //! Modified bits are \b CESHORT of \b CECTL1 register.
351*5fd0122aSMatthias Ringwald //! \return NONE
352*5fd0122aSMatthias Ringwald //
353*5fd0122aSMatthias Ringwald //*****************************************************************************
354*5fd0122aSMatthias Ringwald extern void COMP_E_shortInputs(uint32_t comparator);
355*5fd0122aSMatthias Ringwald 
356*5fd0122aSMatthias Ringwald //*****************************************************************************
357*5fd0122aSMatthias Ringwald //
358*5fd0122aSMatthias Ringwald //! Disables the short of the two input pins chosen during initialization.
359*5fd0122aSMatthias Ringwald //!
360*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
361*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
362*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
363*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
364*5fd0122aSMatthias Ringwald //!
365*5fd0122aSMatthias Ringwald //! This function clears the bit that shorts the devices attached to the input
366*5fd0122aSMatthias Ringwald //! pins chosen from the initialization of the comparator.
367*5fd0122aSMatthias Ringwald //!
368*5fd0122aSMatthias Ringwald //! Modified bits are \b CESHORT of \b CECTL1 register.
369*5fd0122aSMatthias Ringwald //! \return NONE
370*5fd0122aSMatthias Ringwald //
371*5fd0122aSMatthias Ringwald //*****************************************************************************
372*5fd0122aSMatthias Ringwald extern void COMP_E_unshortInputs(uint32_t comparator);
373*5fd0122aSMatthias Ringwald 
374*5fd0122aSMatthias Ringwald //*****************************************************************************
375*5fd0122aSMatthias Ringwald //
376*5fd0122aSMatthias Ringwald //! Disables the input buffer of the selected input port to effectively allow
377*5fd0122aSMatthias Ringwald //! for analog signals.
378*5fd0122aSMatthias Ringwald //!
379*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
380*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
381*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
382*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
383*5fd0122aSMatthias Ringwald //! \param inputPort is the port in which the input buffer will be disabled.
384*5fd0122aSMatthias Ringwald //!        Valid values are a logical OR of the following:
385*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT0 [Default]
386*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT1
387*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT2
388*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT3
389*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT4
390*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT5
391*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT6
392*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT7
393*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT8
394*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT9
395*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT10
396*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT11
397*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT12
398*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT13
399*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT14
400*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT15
401*5fd0122aSMatthias Ringwald //!       <br> Modified bits are \b CEPDx of \b CECTL3 register.
402*5fd0122aSMatthias Ringwald //!
403*5fd0122aSMatthias Ringwald //! This function sets the bit to disable the buffer for the specified input
404*5fd0122aSMatthias Ringwald //! port to allow for analog signals from any of the comparator input pins. This
405*5fd0122aSMatthias Ringwald //! bit is automatically set when the input is initialized to be used with the
406*5fd0122aSMatthias Ringwald //! comparator module. This function should be used whenever an analog input is
407*5fd0122aSMatthias Ringwald //! connected to one of these pins to prevent parasitic voltage from causing
408*5fd0122aSMatthias Ringwald //! unexpected results.
409*5fd0122aSMatthias Ringwald //!
410*5fd0122aSMatthias Ringwald //! \return NONE
411*5fd0122aSMatthias Ringwald //
412*5fd0122aSMatthias Ringwald //*****************************************************************************
413*5fd0122aSMatthias Ringwald extern void COMP_E_disableInputBuffer(uint32_t comparator,
414*5fd0122aSMatthias Ringwald         uint_fast16_t inputPort);
415*5fd0122aSMatthias Ringwald 
416*5fd0122aSMatthias Ringwald //*****************************************************************************
417*5fd0122aSMatthias Ringwald //
418*5fd0122aSMatthias Ringwald //! Enables the input buffer of the selected input port to allow for digital
419*5fd0122aSMatthias Ringwald //! signals.
420*5fd0122aSMatthias Ringwald //!
421*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
422*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
423*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
424*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
425*5fd0122aSMatthias Ringwald //! \param inputPort is the port in which the input buffer will be enabled.
426*5fd0122aSMatthias Ringwald //!        Valid values are a logical OR of the following:
427*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT0 [Default]
428*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT1
429*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT2
430*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT3
431*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT4
432*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT5
433*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT6
434*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT7
435*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT8
436*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT9
437*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT10
438*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT11
439*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT12
440*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT13
441*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT14
442*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INPUT15
443*5fd0122aSMatthias Ringwald //!      <br> Modified bits are \b CEPDx of \b CECTL3 register.
444*5fd0122aSMatthias Ringwald //!
445*5fd0122aSMatthias Ringwald //! This function clears the bit to enable the buffer for the specified input
446*5fd0122aSMatthias Ringwald //! port to allow for digital signals from any of the comparator input pins.
447*5fd0122aSMatthias Ringwald //! This should not be reset if there is an analog signal connected to the
448*5fd0122aSMatthias Ringwald //! specified input pin to prevent from unexpected results.
449*5fd0122aSMatthias Ringwald //!
450*5fd0122aSMatthias Ringwald //! \return NONE
451*5fd0122aSMatthias Ringwald //
452*5fd0122aSMatthias Ringwald //*****************************************************************************
453*5fd0122aSMatthias Ringwald extern void COMP_E_enableInputBuffer(uint32_t comparator,
454*5fd0122aSMatthias Ringwald         uint_fast16_t inputPort);
455*5fd0122aSMatthias Ringwald 
456*5fd0122aSMatthias Ringwald //*****************************************************************************
457*5fd0122aSMatthias Ringwald //
458*5fd0122aSMatthias Ringwald //! Toggles the bit that swaps which terminals the inputs go to, while also
459*5fd0122aSMatthias Ringwald //! inverting the output of the comparator.
460*5fd0122aSMatthias Ringwald //!
461*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
462*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
463*5fd0122aSMatthias Ringwald //!         - \ bCOMP_E0
464*5fd0122aSMatthias Ringwald //!         - \ bCOMP_E1
465*5fd0122aSMatthias Ringwald //!
466*5fd0122aSMatthias Ringwald //! This function toggles the bit that controls which input goes to which
467*5fd0122aSMatthias Ringwald //! terminal. After initialization, this bit is set to 0, after toggling it once
468*5fd0122aSMatthias Ringwald //! the inputs are routed to the opposite terminal and the output is inverted.
469*5fd0122aSMatthias Ringwald //!
470*5fd0122aSMatthias Ringwald //! Modified bits are \b CEEX of \b CECTL1 register.
471*5fd0122aSMatthias Ringwald //! \return NONE
472*5fd0122aSMatthias Ringwald //
473*5fd0122aSMatthias Ringwald //*****************************************************************************
474*5fd0122aSMatthias Ringwald extern void COMP_E_swapIO(uint32_t comparator);
475*5fd0122aSMatthias Ringwald 
476*5fd0122aSMatthias Ringwald //*****************************************************************************
477*5fd0122aSMatthias Ringwald //
478*5fd0122aSMatthias Ringwald //! Returns the output value of the Comparator module.
479*5fd0122aSMatthias Ringwald //!
480*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid parameters
481*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
482*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
483*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
484*5fd0122aSMatthias Ringwald //!
485*5fd0122aSMatthias Ringwald //! Returns the output value of the Comparator module.
486*5fd0122aSMatthias Ringwald //!
487*5fd0122aSMatthias Ringwald //! \return COMP_E_HIGH or COMP_E_LOW as the output value of the Comparator
488*5fd0122aSMatthias Ringwald //!          module.
489*5fd0122aSMatthias Ringwald //
490*5fd0122aSMatthias Ringwald //*****************************************************************************
491*5fd0122aSMatthias Ringwald extern uint8_t COMP_E_outputValue(uint32_t comparator);
492*5fd0122aSMatthias Ringwald 
493*5fd0122aSMatthias Ringwald //*****************************************************************************
494*5fd0122aSMatthias Ringwald //
495*5fd0122aSMatthias Ringwald //! Enables selected Comparator interrupt sources.
496*5fd0122aSMatthias Ringwald //!
497*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
498*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
499*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
500*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
501*5fd0122aSMatthias Ringwald //! \param mask is the bit mask of the interrupt sources to be enabled.
502*5fd0122aSMatthias Ringwald //!        Mask value is the logical OR of any of the following
503*5fd0122aSMatthias Ringwald //!        - \b COMP_E_OUTPUT_INTERRUPT - Output interrupt
504*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INVERTED_POLARITY_INTERRUPT - Output interrupt inverted
505*5fd0122aSMatthias Ringwald //!                                                 polarity
506*5fd0122aSMatthias Ringwald //!        - \b COMP_E_READY_INTERRUPT - Ready interrupt
507*5fd0122aSMatthias Ringwald //!
508*5fd0122aSMatthias Ringwald //! Enables the indicated Comparator interrupt sources.  Only the sources that
509*5fd0122aSMatthias Ringwald //! are enabled can be reflected to the processor interrupt; disabled sources
510*5fd0122aSMatthias Ringwald //! have no effect on the processor. The default trigger for the non-inverted
511*5fd0122aSMatthias Ringwald //! interrupt is a rising edge of the output, this can be changed with the
512*5fd0122aSMatthias Ringwald //! interruptSetEdgeDirection() function.
513*5fd0122aSMatthias Ringwald //!
514*5fd0122aSMatthias Ringwald //! \return NONE
515*5fd0122aSMatthias Ringwald //
516*5fd0122aSMatthias Ringwald //*****************************************************************************
517*5fd0122aSMatthias Ringwald extern void COMP_E_enableInterrupt(uint32_t comparator, uint_fast16_t mask);
518*5fd0122aSMatthias Ringwald 
519*5fd0122aSMatthias Ringwald //*****************************************************************************
520*5fd0122aSMatthias Ringwald //
521*5fd0122aSMatthias Ringwald //! Disables selected Comparator interrupt sources.
522*5fd0122aSMatthias Ringwald //!
523*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
524*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
525*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
526*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
527*5fd0122aSMatthias Ringwald //! \param mask is the bit mask of the interrupt sources to be disabled.
528*5fd0122aSMatthias Ringwald //!        Mask value is the logical OR of any of the following
529*5fd0122aSMatthias Ringwald //!        - \b COMP_E_OUTPUT_INTERRUPT - Output interrupt
530*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INVERTED_POLARITY_INTERRUPT - Output interrupt inverted
531*5fd0122aSMatthias Ringwald //!                                                 polarity
532*5fd0122aSMatthias Ringwald //!        - \b COMP_E_READY_INTERRUPT - Ready interrupt
533*5fd0122aSMatthias Ringwald //!
534*5fd0122aSMatthias Ringwald //! Disables the indicated Comparator interrupt sources.  Only the sources that
535*5fd0122aSMatthias Ringwald //! are enabled can be reflected to the processor interrupt; disabled sources
536*5fd0122aSMatthias Ringwald //! have no effect on the processor.
537*5fd0122aSMatthias Ringwald //!
538*5fd0122aSMatthias Ringwald //! \return NONE
539*5fd0122aSMatthias Ringwald //
540*5fd0122aSMatthias Ringwald //*****************************************************************************
541*5fd0122aSMatthias Ringwald extern void COMP_E_disableInterrupt(uint32_t comparator, uint_fast16_t mask);
542*5fd0122aSMatthias Ringwald 
543*5fd0122aSMatthias Ringwald //*****************************************************************************
544*5fd0122aSMatthias Ringwald //
545*5fd0122aSMatthias Ringwald //! Clears Comparator interrupt flags.
546*5fd0122aSMatthias Ringwald //!
547*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
548*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
549*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
550*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
551*5fd0122aSMatthias Ringwald //! \param mask is a bit mask of the interrupt sources to be cleared.
552*5fd0122aSMatthias Ringwald //!        Mask value is the logical OR of any of the following
553*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INTERRUPT_FLAG - Output interrupt flag
554*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INTERRUPT_FLAG_INVERTED_POLARITY - Output interrupt flag
555*5fd0122aSMatthias Ringwald //!                                                     inverted polarity
556*5fd0122aSMatthias Ringwald //!        - \b COMP_E_INTERRUPT_FLAG_READY - Ready interrupt flag
557*5fd0122aSMatthias Ringwald //!
558*5fd0122aSMatthias Ringwald //! The Comparator interrupt source is cleared, so that it no longer asserts.
559*5fd0122aSMatthias Ringwald //! The highest interrupt flag is automatically cleared when an interrupt vector
560*5fd0122aSMatthias Ringwald //! generator is used.
561*5fd0122aSMatthias Ringwald //!
562*5fd0122aSMatthias Ringwald //! \return NONE
563*5fd0122aSMatthias Ringwald //
564*5fd0122aSMatthias Ringwald //*****************************************************************************
565*5fd0122aSMatthias Ringwald extern void COMP_E_clearInterruptFlag(uint32_t comparator, uint_fast16_t mask);
566*5fd0122aSMatthias Ringwald 
567*5fd0122aSMatthias Ringwald //*****************************************************************************
568*5fd0122aSMatthias Ringwald //
569*5fd0122aSMatthias Ringwald //! Gets the current Comparator interrupt status.
570*5fd0122aSMatthias Ringwald //!
571*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
572*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
573*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
574*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
575*5fd0122aSMatthias Ringwald //!
576*5fd0122aSMatthias Ringwald //! This returns the interrupt status for the Comparator module based on which
577*5fd0122aSMatthias Ringwald //! flag is passed.
578*5fd0122aSMatthias Ringwald //!
579*5fd0122aSMatthias Ringwald //! \return The current interrupt flag status for the corresponding mask.
580*5fd0122aSMatthias Ringwald //
581*5fd0122aSMatthias Ringwald //*****************************************************************************
582*5fd0122aSMatthias Ringwald extern uint_fast16_t COMP_E_getInterruptStatus(uint32_t comparator);
583*5fd0122aSMatthias Ringwald 
584*5fd0122aSMatthias Ringwald //*****************************************************************************
585*5fd0122aSMatthias Ringwald //
586*5fd0122aSMatthias Ringwald //! Enables selected Comparator interrupt sources masked with the enabled
587*5fd0122aSMatthias Ringwald //! interrupts. This function is useful to call in ISRs to get a list
588*5fd0122aSMatthias Ringwald //! of pending interrupts that are actually enabled and could have caused the
589*5fd0122aSMatthias Ringwald //! ISR.
590*5fd0122aSMatthias Ringwald //!
591*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
592*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
593*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
594*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
595*5fd0122aSMatthias Ringwald //!
596*5fd0122aSMatthias Ringwald //! Enables the indicated Comparator interrupt sources.  Only the sources that
597*5fd0122aSMatthias Ringwald //! are enabled can be reflected to the processor interrupt; disabled sources
598*5fd0122aSMatthias Ringwald //! have no effect on the processor. The default trigger for the non-inverted
599*5fd0122aSMatthias Ringwald //! interrupt is a rising edge of the output, this can be changed with the
600*5fd0122aSMatthias Ringwald //! COMP_E_setInterruptEdgeDirection() function.
601*5fd0122aSMatthias Ringwald //!
602*5fd0122aSMatthias Ringwald //! \return NONE
603*5fd0122aSMatthias Ringwald //
604*5fd0122aSMatthias Ringwald //*****************************************************************************
605*5fd0122aSMatthias Ringwald extern uint_fast16_t COMP_E_getEnabledInterruptStatus(uint32_t comparator);
606*5fd0122aSMatthias Ringwald 
607*5fd0122aSMatthias Ringwald //*****************************************************************************
608*5fd0122aSMatthias Ringwald //
609*5fd0122aSMatthias Ringwald //! Explicitly sets the edge direction that would trigger an interrupt.
610*5fd0122aSMatthias Ringwald //!
611*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
612*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
613*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
614*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
615*5fd0122aSMatthias Ringwald //! \param edgeDirection determines which direction the edge would have to go
616*5fd0122aSMatthias Ringwald //!       to generate an interrupt based on the non-inverted interrupt flag.
617*5fd0122aSMatthias Ringwald //!        Valid values are
618*5fd0122aSMatthias Ringwald //!        - \b COMP_E_FALLINGEDGE - sets the bit to generate an interrupt when
619*5fd0122aSMatthias Ringwald //!             the output of the comparator falls from HIGH to LOW if the
620*5fd0122aSMatthias Ringwald //!             normal interrupt bit is set(and LOW to HIGH if the inverted
621*5fd0122aSMatthias Ringwald //!             interrupt enable bit is set). [Default]
622*5fd0122aSMatthias Ringwald //!        - \b COMP_E_RISINGEDGE - sets the bit to generate an interrupt when the
623*5fd0122aSMatthias Ringwald //!             output of the comparator rises from LOW to HIGH if the normal
624*5fd0122aSMatthias Ringwald //!             interrupt bit is set(and HIGH to LOW if the inverted interrupt
625*5fd0122aSMatthias Ringwald //!             enable bit is set).
626*5fd0122aSMatthias Ringwald //!        <br>Modified bits are \b CEIES of \b CECTL1 register.
627*5fd0122aSMatthias Ringwald //!
628*5fd0122aSMatthias Ringwald //! This function will set which direction the output will have to go, whether
629*5fd0122aSMatthias Ringwald //! rising or falling, to generate an interrupt based on a non-inverted
630*5fd0122aSMatthias Ringwald //! interrupt.
631*5fd0122aSMatthias Ringwald //!
632*5fd0122aSMatthias Ringwald //! \return NONE
633*5fd0122aSMatthias Ringwald //
634*5fd0122aSMatthias Ringwald //*****************************************************************************
635*5fd0122aSMatthias Ringwald extern void COMP_E_setInterruptEdgeDirection(uint32_t comparator,
636*5fd0122aSMatthias Ringwald         uint_fast8_t edgeDirection);
637*5fd0122aSMatthias Ringwald 
638*5fd0122aSMatthias Ringwald //*****************************************************************************
639*5fd0122aSMatthias Ringwald //
640*5fd0122aSMatthias Ringwald //! Toggles the edge direction that would trigger an interrupt.
641*5fd0122aSMatthias Ringwald //!
642*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
643*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
644*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
645*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
646*5fd0122aSMatthias Ringwald //!
647*5fd0122aSMatthias Ringwald //! This function will toggle which direction the output will have to go,
648*5fd0122aSMatthias Ringwald //! whether rising or falling, to generate an interrupt based on a non-inverted
649*5fd0122aSMatthias Ringwald //! interrupt. If the direction was rising, it is now falling, if it was
650*5fd0122aSMatthias Ringwald //! falling, it is now rising.
651*5fd0122aSMatthias Ringwald //!
652*5fd0122aSMatthias Ringwald //! Modified bits are \b CEIES of \b CECTL1 register.
653*5fd0122aSMatthias Ringwald //!
654*5fd0122aSMatthias Ringwald //! \return NONE
655*5fd0122aSMatthias Ringwald //
656*5fd0122aSMatthias Ringwald //*****************************************************************************
657*5fd0122aSMatthias Ringwald extern void COMP_E_toggleInterruptEdgeDirection(uint32_t comparator);
658*5fd0122aSMatthias Ringwald 
659*5fd0122aSMatthias Ringwald //*****************************************************************************
660*5fd0122aSMatthias Ringwald //
661*5fd0122aSMatthias Ringwald //! Registers an interrupt handler for the Comparator E interrupt.
662*5fd0122aSMatthias Ringwald //!
663*5fd0122aSMatthias Ringwald //! \param intHandler is a pointer to the function to be called when the
664*5fd0122aSMatthias Ringwald //! Comparator interrupt occurs.
665*5fd0122aSMatthias Ringwald //!
666*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
667*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
668*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
669*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
670*5fd0122aSMatthias Ringwald //!
671*5fd0122aSMatthias Ringwald //! This function registers the handler to be called when a Comparator
672*5fd0122aSMatthias Ringwald //! interrupt occurs. This function enables the global interrupt in the
673*5fd0122aSMatthias Ringwald //! interrupt controller; specific Comparator interrupts must be enabled
674*5fd0122aSMatthias Ringwald //! via COMP_E_enableInterrupt().  It is the interrupt handler's responsibility to
675*5fd0122aSMatthias Ringwald //! clear the interrupt source via COMP_E_clearInterruptFlag().
676*5fd0122aSMatthias Ringwald //!
677*5fd0122aSMatthias Ringwald //! \return None.
678*5fd0122aSMatthias Ringwald //
679*5fd0122aSMatthias Ringwald //*****************************************************************************
680*5fd0122aSMatthias Ringwald extern void COMP_E_registerInterrupt(uint32_t comparator,
681*5fd0122aSMatthias Ringwald         void (*intHandler)(void));
682*5fd0122aSMatthias Ringwald 
683*5fd0122aSMatthias Ringwald //*****************************************************************************
684*5fd0122aSMatthias Ringwald //
685*5fd0122aSMatthias Ringwald //! Unregisters the interrupt handler for the Comparator E interrupt
686*5fd0122aSMatthias Ringwald //!
687*5fd0122aSMatthias Ringwald //! \param comparator is the instance of the Comparator module. Valid
688*5fd0122aSMatthias Ringwald //! parameters vary from part to part, but can include:
689*5fd0122aSMatthias Ringwald //!         - \b COMP_E0_BASE
690*5fd0122aSMatthias Ringwald //!         - \b COMP_E1_BASE
691*5fd0122aSMatthias Ringwald //!
692*5fd0122aSMatthias Ringwald //! This function unregisters the handler to be called when Comparator E
693*5fd0122aSMatthias Ringwald //! interrupt occurs.  This function also masks off the interrupt in the
694*5fd0122aSMatthias Ringwald //! interrupt controller so that the interrupt handler no longer is called.
695*5fd0122aSMatthias Ringwald //!
696*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about
697*5fd0122aSMatthias Ringwald //! registering interrupt handlers.
698*5fd0122aSMatthias Ringwald //!
699*5fd0122aSMatthias Ringwald //! \return None.
700*5fd0122aSMatthias Ringwald //
701*5fd0122aSMatthias Ringwald //*****************************************************************************
702*5fd0122aSMatthias Ringwald extern void COMP_E_unregisterInterrupt(uint32_t comparator);
703*5fd0122aSMatthias Ringwald 
704*5fd0122aSMatthias Ringwald /* Backwards Compatibility Layer */
705*5fd0122aSMatthias Ringwald #define COMP_E_enable(a) COMP_E_enableModule(a)
706*5fd0122aSMatthias Ringwald #define COMP_E_disable(a) COMP_E_disableModule(a)
707*5fd0122aSMatthias Ringwald #define COMP_E_IOSwap(a) COMP_E_swapIO(a)
708*5fd0122aSMatthias Ringwald #define COMP_E_interruptToggleEdgeDirection(a) COMP_E_toggleInterruptEdgeDirection(a)
709*5fd0122aSMatthias Ringwald #define COMP_E_clearInterrupt(a,b) COMP_E_clearInterruptFlag(a,b)
710*5fd0122aSMatthias Ringwald 
711*5fd0122aSMatthias Ringwald //*****************************************************************************
712*5fd0122aSMatthias Ringwald //
713*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers.
714*5fd0122aSMatthias Ringwald //
715*5fd0122aSMatthias Ringwald //*****************************************************************************
716*5fd0122aSMatthias Ringwald #ifdef __cplusplus
717*5fd0122aSMatthias Ringwald }
718*5fd0122aSMatthias Ringwald #endif
719*5fd0122aSMatthias Ringwald 
720*5fd0122aSMatthias Ringwald //*****************************************************************************
721*5fd0122aSMatthias Ringwald //
722*5fd0122aSMatthias Ringwald // Close the Doxygen group.
723*5fd0122aSMatthias Ringwald //! @}
724*5fd0122aSMatthias Ringwald //
725*5fd0122aSMatthias Ringwald //*****************************************************************************
726*5fd0122aSMatthias Ringwald 
727*5fd0122aSMatthias Ringwald 
728*5fd0122aSMatthias Ringwald #endif /* COMP_E_H_ */
729