34 #if defined(VCMP_COUNT) && (VCMP_COUNT > 0)
56 void VCMP_Init(
const VCMP_Init_TypeDef *vcmpInit)
59 EFM_ASSERT((vcmpInit->inactive == 0) || (vcmpInit->inactive == 1));
60 EFM_ASSERT((vcmpInit->biasProg >= 0) && (vcmpInit->biasProg < 16));
63 if (vcmpInit->halfBias)
65 VCMP->CTRL |= VCMP_CTRL_HALFBIAS;
69 VCMP->CTRL &= ~(VCMP_CTRL_HALFBIAS);
73 VCMP->CTRL &= ~(_VCMP_CTRL_BIASPROG_MASK);
74 VCMP->CTRL |= (vcmpInit->biasProg << _VCMP_CTRL_BIASPROG_SHIFT);
77 if (vcmpInit->irqFalling)
79 VCMP->CTRL |= VCMP_CTRL_IFALL;
83 VCMP->CTRL &= ~(VCMP_CTRL_IFALL);
87 if (vcmpInit->irqRising)
89 VCMP->CTRL |= VCMP_CTRL_IRISE;
93 VCMP->CTRL &= ~(VCMP_CTRL_IRISE);
97 VCMP->CTRL &= ~(_VCMP_CTRL_WARMTIME_MASK);
98 VCMP->CTRL |= (vcmpInit->warmup << _VCMP_CTRL_WARMTIME_SHIFT);
101 switch (vcmpInit->hyst)
104 VCMP->CTRL |= VCMP_CTRL_HYSTEN;
107 VCMP->CTRL &= ~(VCMP_CTRL_HYSTEN);
114 VCMP->CTRL |= (vcmpInit->inactive << _VCMP_CTRL_INACTVAL_SHIFT);
117 VCMP_TriggerSet(vcmpInit->triggerLevel);
120 if (vcmpInit->enable)
122 VCMP->CTRL |= VCMP_CTRL_EN;
126 VCMP->CTRL &= ~(VCMP_CTRL_EN);
132 if(vcmpInit->lowPowerRef && vcmpInit->enable)
135 while(!VCMP_Ready());
136 VCMP_LowPowerRefSet(vcmpInit->lowPowerRef);
140 VCMP_IntClear(VCMP_IF_EDGE);
151 void VCMP_LowPowerRefSet(
bool enable)
155 VCMP->INPUTSEL |= VCMP_INPUTSEL_LPREF;
159 VCMP->INPUTSEL &= ~VCMP_INPUTSEL_LPREF;
171 void VCMP_TriggerSet(
int level)
174 EFM_ASSERT((level > 0) && (level < 64));
177 VCMP->INPUTSEL = (VCMP->INPUTSEL & ~(_VCMP_INPUTSEL_TRIGLEVEL_MASK))
178 | (level << _VCMP_INPUTSEL_TRIGLEVEL_SHIFT);
Emlib peripheral API "assert" implementation.
Voltage Comparator (VCMP) peripheral API.