35 #if defined(ACMP_COUNT) && (ACMP_COUNT > 0)
62 #define ACMP_REF_VALID(ref) ((ref) == ACMP0)
63 #elif (ACMP_COUNT == 2)
64 #define ACMP_REF_VALID(ref) (((ref) == ACMP0) || ((ref) == ACMP1))
66 #error Undefined number of analog comparators (ACMP).
71 #if defined(_ACMP_ROUTE_LOCATION_LOC3)
72 #define _ACMP_ROUTE_LOCATION_MAX _ACMP_ROUTE_LOCATION_LOC3
73 #elif defined(_ACMP_ROUTE_LOCATION_LOC2)
74 #define _ACMP_ROUTE_LOCATION_MAX _ACMP_ROUTE_LOCATION_LOC2
75 #elif defined(_ACMP_ROUTE_LOCATION_LOC1)
76 #define _ACMP_ROUTE_LOCATION_MAX _ACMP_ROUTE_LOCATION_LOC1
77 #elif defined(_ACMP_ROUTELOC0_OUTLOC_LOC31)
78 #define _ACMP_ROUTE_LOCATION_MAX _ACMP_ROUTELOC0_OUTLOC_LOC31
80 #error Undefined max route locations
113 EFM_ASSERT(ACMP_REF_VALID(acmp));
116 #if defined(_ACMP_INPUTSEL_VDDLEVEL_MASK)
117 EFM_ASSERT(init->vddLevel < 64);
129 #
if defined(_ACMP_CTRL_HALFBIAS_MASK)
130 | (init->halfBias << _ACMP_CTRL_HALFBIAS_SHIFT)
133 #if defined(_ACMP_CTRL_WARMTIME_MASK)
134 | (init->warmTime << _ACMP_CTRL_WARMTIME_SHIFT)
136 #
if defined(_ACMP_CTRL_HYSTSEL_MASK)
137 | (init->hysteresisLevel << _ACMP_CTRL_HYSTSEL_SHIFT)
144 #if defined(_ACMP_HYSTERESIS0_MASK)
154 #
if defined(_ACMP_INPUTSEL_LPREF_MASK)
155 | (init->lowPowerReferenceEnabled << _ACMP_INPUTSEL_LPREF_SHIFT)
157 #
if defined(_ACMP_INPUTSEL_VDDLEVEL_MASK)
158 | (init->vddLevel << _ACMP_INPUTSEL_VDDLEVEL_SHIFT)
160 #
if defined(ACMP_INPUTSEL_NEGSEL_CAPSENSE)
161 | ACMP_INPUTSEL_NEGSEL_CAPSENSE
189 EFM_ASSERT(ACMP_REF_VALID(acmp));
191 #if defined(_ACMP_INPUTSEL_POSSEL_CH7)
193 EFM_ASSERT(channel <= _ACMP_INPUTSEL_POSSEL_CH7);
194 #elif defined(_ACMP_INPUTSEL_POSSEL_BUS4XCH31)
196 EFM_ASSERT(channel <= _ACMP_INPUTSEL_POSSEL_BUS4XCH31);
214 EFM_ASSERT(ACMP_REF_VALID(acmp));
229 EFM_ASSERT(ACMP_REF_VALID(acmp));
248 EFM_ASSERT(ACMP_REF_VALID(acmp));
252 #if defined(_ACMP_HYSTERESIS0_HYST_MASK)
283 EFM_ASSERT(ACMP_REF_VALID(acmp));
286 EFM_ASSERT(location <= _ACMP_ROUTE_LOCATION_MAX);
292 #if defined(_ACMP_ROUTE_MASK)
293 acmp->ROUTE = (location << _ACMP_ROUTE_LOCATION_SHIFT)
294 | (enable << _ACMP_ROUTE_ACMPPEN_SHIFT);
296 #if defined(_ACMP_ROUTELOC0_MASK)
319 EFM_ASSERT(ACMP_REF_VALID(acmp));
322 #if defined(_ACMP_INPUTSEL_NEGSEL_DAC0CH1)
323 EFM_ASSERT(negSel <= _ACMP_INPUTSEL_NEGSEL_DAC0CH1);
324 #elif defined(_ACMP_INPUTSEL_NEGSEL_CAPSENSE)
325 EFM_ASSERT(negSel <= _ACMP_INPUTSEL_NEGSEL_CAPSENSE);
328 #if defined(_ACMP_INPUTSEL_POSSEL_CH7)
329 EFM_ASSERT(posSel <= _ACMP_INPUTSEL_POSSEL_CH7);
352 EFM_ASSERT(ACMP_REF_VALID(acmp));
363 #
if defined(_ACMP_CTRL_HALFBIAS_MASK)
364 | (init->halfBias << _ACMP_CTRL_HALFBIAS_SHIFT)
369 #if defined(_ACMP_CTRL_INPUTRANGE_MASK)
378 #
if defined(_ACMP_CTRL_WARMTIME_MASK)
379 | (init->warmTime << _ACMP_CTRL_WARMTIME_SHIFT)
381 #
if defined(_ACMP_CTRL_HYSTSEL_MASK)
382 | (init->hysteresisLevel << _ACMP_CTRL_HYSTSEL_SHIFT)
390 #
if defined(_ACMP_INPUTSEL_LPREF_MASK)
391 | (init->lowPowerReferenceEnabled << _ACMP_INPUTSEL_LPREF_SHIFT)
393 #
if defined(_ACMP_INPUTSEL_VDDLEVEL_MASK)
394 | (init->vddLevel << _ACMP_INPUTSEL_VDDLEVEL_SHIFT)
402 #if defined(_ACMP_INPUTSEL_VASEL_MASK)
416 EFM_ASSERT(vaconfig->
div0 < 64);
417 EFM_ASSERT(vaconfig->
div1 < 64);
428 #if defined(_ACMP_INPUTSEL_VBSEL_MASK)
442 EFM_ASSERT(vbconfig->
div0 < 64);
443 EFM_ASSERT(vbconfig->
div1 < 64);
#define _ACMP_INPUTSEL_VASEL_MASK
ACMP_HysteresisLevel_TypeDef hysteresisLevel_1
void ACMP_VASetup(ACMP_TypeDef *acmp, const ACMP_VAConfig_TypeDef *vaconfig)
Setup the VA Source.
#define ACMP_INPUTSEL_VASEL_VDD
ACMP_CapsenseResistor_TypeDef resistor
void ACMP_Disable(ACMP_TypeDef *acmp)
Disables the ACMP.
#define ACMP_ROUTEPEN_OUTPEN
#define _ACMP_CTRL_BIASPROG_MASK
#define _ACMP_INPUTSEL_VLPSEL_MASK
Emlib peripheral API "assert" implementation.
#define _ACMP_CTRL_GPIOINV_SHIFT
void ACMP_VBSetup(ACMP_TypeDef *acmp, const ACMP_VBConfig_TypeDef *vbconfig)
Setup the VB Source.
__IO uint32_t HYSTERESIS0
#define _ACMP_CTRL_RESETVALUE
RAM and peripheral bit-field set and clear API.
#define _ACMP_CTRL_GPIOINV_MASK
ACMP_InputRange_TypeDef inputRange
#define _ACMP_CTRL_BIASPROG_SHIFT
void ACMP_CapsenseChannelSet(ACMP_TypeDef *acmp, ACMP_Channel_TypeDef channel)
Sets the ACMP channel used for capacative sensing.
ACMP_VLPInput_Typedef vlpInput
#define _ACMP_INPUTSEL_NEGSEL_SHIFT
bool interruptOnRisingEdge
ACMP_PowerSource_TypeDef powerSource
#define _ACMP_HYSTERESIS1_DIVVA_MASK
#define _ACMP_HYSTERESIS0_DIVVB_SHIFT
#define _ACMP_HYSTERESIS1_DIVVB_SHIFT
#define _ACMP_CTRL_PWRSEL_MASK
#define _ACMP_CTRL_INPUTRANGE_SHIFT
#define _ACMP_ROUTELOC0_OUTLOC_SHIFT
void ACMP_Enable(ACMP_TypeDef *acmp)
Enables the ACMP.
#define _ACMP_INPUTSEL_VBSEL_SHIFT
#define _ACMP_CTRL_IRISE_SHIFT
ACMP_VBInput_TypeDef input
#define _ACMP_CTRL_EN_SHIFT
#define _ACMP_CTRL_ACCURACY_SHIFT
#define _ACMP_HYSTERESIS1_DIVVA_SHIFT
#define _ACMP_INPUTSEL_POSSEL_MASK
#define _ACMP_HYSTERESIS0_DIVVA_SHIFT
#define _ACMP_HYSTERESIS1_HYST_SHIFT
#define _ACMP_CTRL_INACTVAL_SHIFT
#define _ACMP_INPUTSEL_CSRESSEL_SHIFT
#define _ACMP_CTRL_FULLBIAS_SHIFT
ACMP_VAInput_TypeDef input
#define _ACMP_IEN_RESETVALUE
#define _ACMP_CTRL_PWRSEL_SHIFT
void ACMP_ChannelSet(ACMP_TypeDef *acmp, ACMP_Channel_TypeDef negSel, ACMP_Channel_TypeDef posSel)
Sets which channels should be used in ACMP comparisons.
void ACMP_CapsenseInit(ACMP_TypeDef *acmp, const ACMP_CapsenseInit_TypeDef *init)
Sets up the ACMP for use in capacative sense applications.
void ACMP_Reset(ACMP_TypeDef *acmp)
Reset ACMP to same state as after a HW reset.
#define _ACMP_INPUTSEL_VLPSEL_SHIFT
ACMP_Accuracy_TypeDef accuracy
#define _ACMP_HYSTERESIS1_DIVVB_MASK
#define _ACMP_INPUTSEL_POSSEL_SHIFT
#define _ACMP_INPUTSEL_VASEL_SHIFT
#define _ACMP_INPUTSEL_NEGSEL_MASK
#define _ACMP_INPUTSEL_RESETVALUE
Analog Comparator (ACMP) peripheral API.
__STATIC_INLINE void BUS_RegMaskedWrite(volatile uint32_t *addr, uint32_t mask, uint32_t val)
Perform peripheral register masked clear and value write.
bool interruptOnFallingEdge
ACMP_HysteresisLevel_TypeDef hysteresisLevel_0
#define _ACMP_HYSTERESIS0_HYST_SHIFT
#define _ACMP_HYSTERESIS0_DIVVA_MASK
__IO uint32_t HYSTERESIS1
#define _ACMP_HYSTERESIS0_DIVVB_MASK
#define _ACMP_CTRL_IFALL_SHIFT
#define _ACMP_HYSTERESIS0_RESETVALUE
__STATIC_INLINE void BUS_RegBitWrite(volatile uint32_t *addr, unsigned int bit, unsigned int val)
Perform a single-bit write operation on a peripheral register.
void ACMP_Init(ACMP_TypeDef *acmp, const ACMP_Init_TypeDef *init)
Initialize ACMP.
void ACMP_GPIOSetup(ACMP_TypeDef *acmp, uint32_t location, bool enable, bool invert)
Sets up GPIO output from the ACMP.
#define _ACMP_HYSTERESIS1_RESETVALUE
#define _ACMP_INPUTSEL_VBSEL_MASK
#define ACMP_CTRL_ACCURACY_HIGH
#define ACMP_INPUTSEL_CSRESEN
#define _ACMP_CTRL_ACCURACY_MASK
#define ACMP_INPUTSEL_NEGSEL_VADIV