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