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