Lines Matching refs:pcnt

94 __STATIC_INLINE unsigned int PCNT_Map(PCNT_TypeDef *pcnt)  in PCNT_Map()  argument
96 return ((uint32_t)pcnt - PCNT0_BASE) / 0x400; in PCNT_Map()
119 void PCNT_CounterReset(PCNT_TypeDef *pcnt) in PCNT_CounterReset() argument
121 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_CounterReset()
125 BUS_RegBitWrite(&(pcnt->CTRL), _PCNT_CTRL_RSTEN_SHIFT, 1); in PCNT_CounterReset()
128 BUS_RegBitWrite(&(pcnt->CTRL), _PCNT_CTRL_RSTEN_SHIFT, 0); in PCNT_CounterReset()
131 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CMD); in PCNT_CounterReset()
132 pcnt->CMD_SET = PCNT_CMD_CNTRST | PCNT_CMD_AUXCNTRST; in PCNT_CounterReset()
133 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOP); in PCNT_CounterReset()
134 pcnt->TOP = _PCNT_TOP_RESETVALUE; in PCNT_CounterReset()
160 void PCNT_Enable(PCNT_TypeDef *pcnt, PCNT_Mode_TypeDef mode) in PCNT_Enable() argument
164 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_Enable()
168 tmp = pcnt->CTRL & ~_PCNT_CTRL_MODE_MASK; in PCNT_Enable()
172 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_Enable()
173 pcnt->CTRL = tmp; in PCNT_Enable()
177 PCNT_Sync(pcnt, _PCNT_SYNCBUSY_MASK); in PCNT_Enable()
178 pcnt->EN_CLR = PCNT_EN_EN; in PCNT_Enable()
180 while (pcnt->EN & _PCNT_EN_DISABLING_MASK) { in PCNT_Enable()
186 tmp = (pcnt->CFG & _PCNT_CFG_MODE_MASK) >> _PCNT_CFG_MODE_SHIFT; in PCNT_Enable()
188 PCNT_Sync(pcnt, _PCNT_SYNCBUSY_MASK); in PCNT_Enable()
189 pcnt->EN_CLR = PCNT_EN_EN; in PCNT_Enable()
191 while (pcnt->EN & _PCNT_EN_DISABLING_MASK) { in PCNT_Enable()
194 pcnt->CFG_SET = (uint32_t)mode << _PCNT_CFG_MODE_SHIFT; in PCNT_Enable()
197 pcnt->EN_SET = PCNT_EN_EN; in PCNT_Enable()
200 PCNT_StartMainCnt(pcnt); in PCNT_Enable()
203 PCNT_StartAuxCnt(pcnt); in PCNT_Enable()
221 bool PCNT_IsEnabled(PCNT_TypeDef *pcnt) in PCNT_IsEnabled() argument
223 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_IsEnabled()
226 return ((pcnt->CTRL & _PCNT_CTRL_MODE_MASK) != PCNT_CTRL_MODE_DISABLE); in PCNT_IsEnabled()
228 return (pcnt->EN & _PCNT_EN_EN_MASK); in PCNT_IsEnabled()
256 void PCNT_CounterTopSet(PCNT_TypeDef *pcnt, uint32_t count, uint32_t top) in PCNT_CounterTopSet() argument
262 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_CounterTopSet()
265 if (PCNT0 == pcnt) { in PCNT_CounterTopSet()
272 if (PCNT1 == pcnt) { in PCNT_CounterTopSet()
279 if (PCNT2 == pcnt) { in PCNT_CounterTopSet()
287 ctrl = pcnt->CTRL; in PCNT_CounterTopSet()
291 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_CounterTopSet()
292 pcnt->CTRL = (ctrl & ~_PCNT_CTRL_MODE_MASK) | PCNT_CTRL_MODE_DISABLE; in PCNT_CounterTopSet()
296 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOPB); in PCNT_CounterTopSet()
297 pcnt->TOPB = count; in PCNT_CounterTopSet()
300 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOPB | PCNT_SYNCBUSY_CMD); in PCNT_CounterTopSet()
303 pcnt->CMD = PCNT_CMD_LTOPBIM; in PCNT_CounterTopSet()
304 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CMD); in PCNT_CounterTopSet()
307 pcnt->CMD = PCNT_CMD_LCNTIM; in PCNT_CounterTopSet()
314 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CMD); in PCNT_CounterTopSet()
318 pcnt->TOPB = top; in PCNT_CounterTopSet()
321 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOPB | PCNT_SYNCBUSY_CMD); in PCNT_CounterTopSet()
322 pcnt->CMD = PCNT_CMD_LTOPBIM; in PCNT_CounterTopSet()
326 PCNT_Enable(pcnt, (PCNT_Mode_TypeDef)(ctrl & _PCNT_CTRL_MODE_MASK)); in PCNT_CounterTopSet()
328 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL | PCNT_SYNCBUSY_CMD); in PCNT_CounterTopSet()
329 pcnt->CTRL = ctrl; in PCNT_CounterTopSet()
333 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOP); in PCNT_CounterTopSet()
334 pcnt->TOP = count; in PCNT_CounterTopSet()
335 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOP); in PCNT_CounterTopSet()
338 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CMD); in PCNT_CounterTopSet()
339 pcnt->CMD = PCNT_CMD_LCNTIM; in PCNT_CounterTopSet()
343 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CMD); in PCNT_CounterTopSet()
345 pcnt->TOP = top; in PCNT_CounterTopSet()
367 void PCNT_PRSInputEnable(PCNT_TypeDef *pcnt, in PCNT_PRSInputEnable() argument
371 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_PRSInputEnable()
374 bool module_enable = PCNT_IsEnabled(pcnt); in PCNT_PRSInputEnable()
378 PCNT_Sync(pcnt, _PCNT_SYNCBUSY_MASK); in PCNT_PRSInputEnable()
381 pcnt->EN_CLR = PCNT_EN_EN; in PCNT_PRSInputEnable()
383 while (pcnt->EN & _PCNT_EN_DISABLING_MASK) { in PCNT_PRSInputEnable()
393 BUS_RegBitWrite(&(pcnt->INPUT), _PCNT_INPUT_S0PRSEN_SHIFT, enable); in PCNT_PRSInputEnable()
395 BUS_RegBitWrite(&(pcnt->CFG), _PCNT_CFG_S0PRSEN_SHIFT, enable); in PCNT_PRSInputEnable()
402 BUS_RegBitWrite(&(pcnt->INPUT), _PCNT_INPUT_S1PRSEN_SHIFT, enable); in PCNT_PRSInputEnable()
404 BUS_RegBitWrite(&(pcnt->CFG), _PCNT_CFG_S1PRSEN_SHIFT, enable); in PCNT_PRSInputEnable()
417 pcnt->EN_SET = PCNT_EN_EN; in PCNT_PRSInputEnable()
451 void PCNT_FreezeEnable(PCNT_TypeDef *pcnt, bool enable) in PCNT_FreezeEnable() argument
453 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_FreezeEnable()
463 while (pcnt->SYNCBUSY) { in PCNT_FreezeEnable()
466 pcnt->FREEZE = PCNT_FREEZE_REGFREEZE; in PCNT_FreezeEnable()
468 pcnt->FREEZE = 0; in PCNT_FreezeEnable()
512 void PCNT_Init(PCNT_TypeDef *pcnt, const PCNT_Init_TypeDef *init) in PCNT_Init() argument
519 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_Init()
522 if (PCNT0 == pcnt) { in PCNT_Init()
529 if (PCNT1 == pcnt) { in PCNT_Init()
536 if (PCNT2 == pcnt) { in PCNT_Init()
544 inst = PCNT_Map(pcnt); in PCNT_Init()
551 tmp = pcnt->INPUT & ~(_PCNT_INPUT_S0PRSSEL_MASK | _PCNT_INPUT_S1PRSSEL_MASK); in PCNT_Init()
554 pcnt->INPUT = tmp; in PCNT_Init()
626 BUS_RegBitWrite(&(pcnt->CTRL), _PCNT_CTRL_RSTEN_SHIFT, 1); in PCNT_Init()
641 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_Init()
645 pcnt->CTRL = PCNT_CTRL_RSTEN; in PCNT_Init()
648 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_Init()
657 pcnt->TOPB = init->top; in PCNT_Init()
660 pcnt->CMD = PCNT_CMD_LTOPBIM; in PCNT_Init()
666 pcnt->CTRL = tmp; in PCNT_Init()
679 if ((pcnt->CTRL & _PCNT_CTRL_MODE_MASK) != PCNT_CTRL_MODE_DISABLE) { in PCNT_Init()
683 pcnt->CTRL = tmp | PCNT_CTRL_MODE_DISABLE | PCNT_CTRL_RSTEN; in PCNT_Init()
687 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_Init()
691 BUS_RegBitWrite(&(pcnt->CTRL), _PCNT_CTRL_RSTEN_SHIFT, 0); in PCNT_Init()
694 PCNT_CounterTopSet(pcnt, init->counter, init->top); in PCNT_Init()
698 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_Init()
699 pcnt->CTRL = tmp | (init->mode << _PCNT_CTRL_MODE_SHIFT); in PCNT_Init()
706 if (pcnt->EN == 1U) { in PCNT_Init()
707 PCNT_Sync(pcnt, _PCNT_SYNCBUSY_MASK); in PCNT_Init()
711 pcnt->EN_CLR = PCNT_EN_EN; in PCNT_Init()
713 while (pcnt->EN & _PCNT_EN_DISABLING_MASK) { in PCNT_Init()
717 pcnt->CFG &= ~(_PCNT_CFG_DEBUGHALT_MASK | _PCNT_CFG_FILTEN_MASK | _PCNT_CFG_HYST_MASK); in PCNT_Init()
718 pcnt->CFG |= (((uint32_t)init->filter) << _PCNT_CFG_FILTEN_SHIFT) in PCNT_Init()
725pcnt->CFG = ((pcnt->CFG & (~_PCNT_CFG_MODE_MASK)) | (((uint32_t)init->mode) << _PCNT_CFG_MODE_SHIF… in PCNT_Init()
728 pcnt->EN_SET = PCNT_EN_EN; in PCNT_Init()
729 PCNT_Sync(pcnt, _PCNT_SYNCBUSY_MASK); in PCNT_Init()
744 pcnt->CTRL = tmp; in PCNT_Init()
755 pcnt->CMD_SET = PCNT_CMD_CORERST; in PCNT_Init()
765 PCNT_StartMainCnt(pcnt); in PCNT_Init()
768 PCNT_StartAuxCnt(pcnt); in PCNT_Init()
771 PCNT_CounterTopSet(pcnt, init->counter, init->top); in PCNT_Init()
772 PCNT_TopBufferSet(pcnt, init->top); in PCNT_Init()
780 pcnt->EN_CLR = PCNT_EN_EN; in PCNT_Init()
782 while (pcnt->EN & _PCNT_EN_DISABLING_MASK) { in PCNT_Init()
805 void PCNT_Reset(PCNT_TypeDef *pcnt) in PCNT_Reset() argument
808 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_Reset()
812 inst = PCNT_Map(pcnt); in PCNT_Reset()
813 pcnt->IEN = _PCNT_IEN_RESETVALUE; in PCNT_Reset()
820 BUS_RegBitWrite(&(pcnt->CTRL), _PCNT_CTRL_RSTEN_SHIFT, 1); in PCNT_Reset()
825 PCNT_TopBufferSet(pcnt, _PCNT_TOPB_RESETVALUE); in PCNT_Reset()
828 pcnt->CTRL = _PCNT_CTRL_RESETVALUE | PCNT_CTRL_RSTEN; in PCNT_Reset()
831 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_Reset()
832 BUS_RegBitWrite(&(pcnt->CTRL), _PCNT_CTRL_RSTEN_SHIFT, 0); in PCNT_Reset()
835 pcnt->IFC = _PCNT_IFC_MASK; in PCNT_Reset()
840 PCNT_Sync(pcnt, _PCNT_SYNCBUSY_MASK); in PCNT_Reset()
841 pcnt->EN_CLR = PCNT_EN_EN; in PCNT_Reset()
847 while (pcnt->EN & _PCNT_EN_DISABLING_MASK) { in PCNT_Reset()
851 pcnt->SWRST_SET = PCNT_SWRST_SWRST; in PCNT_Reset()
853 while (pcnt->SWRST & PCNT_SWRST_RESETTING) { in PCNT_Reset()
877 void PCNT_FilterConfiguration(PCNT_TypeDef *pcnt, const PCNT_Filter_TypeDef *config, bool enable) in PCNT_FilterConfiguration() argument
884 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_FilterConfiguration()
892 PCNT_Sync(pcnt, PCNT_SYNCBUSY_OVSCFG); in PCNT_FilterConfiguration()
893 pcnt->OVSCFG = ovscfg; in PCNT_FilterConfiguration()
896 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_FilterConfiguration()
898 pcnt->CTRL |= PCNT_CTRL_FILT; in PCNT_FilterConfiguration()
900 pcnt->CTRL &= ~PCNT_CTRL_FILT; in PCNT_FilterConfiguration()
905 module_enable = PCNT_IsEnabled(pcnt); in PCNT_FilterConfiguration()
907 PCNT_Sync(pcnt, _PCNT_SYNCBUSY_MASK); in PCNT_FilterConfiguration()
909 pcnt->EN_CLR = PCNT_EN_EN; in PCNT_FilterConfiguration()
911 while (pcnt->EN & _PCNT_EN_DISABLING_MASK) { in PCNT_FilterConfiguration()
919 PCNT_Sync(pcnt, PCNT_SYNCBUSY_OVSCTRL); in PCNT_FilterConfiguration()
920 pcnt->OVSCTRL = ovscfg; in PCNT_FilterConfiguration()
924 pcnt->CFG |= PCNT_CFG_FILTEN; in PCNT_FilterConfiguration()
926 pcnt->CFG &= ~PCNT_CFG_FILTEN; in PCNT_FilterConfiguration()
931 pcnt->EN_SET = PCNT_EN_EN; in PCNT_FilterConfiguration()
959 void PCNT_TCCConfiguration(PCNT_TypeDef *pcnt, const PCNT_TCC_TypeDef *config) in PCNT_TCCConfiguration() argument
969 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_TCCConfiguration()
980 PCNT_Sync(pcnt, PCNT_SYNCBUSY_CTRL); in PCNT_TCCConfiguration()
981 pcnt->CTRL = (pcnt->CTRL & (~mask)) | ctrl; in PCNT_TCCConfiguration()
1001 void PCNT_TopBufferSet(PCNT_TypeDef *pcnt, uint32_t val) in PCNT_TopBufferSet() argument
1003 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_TopBufferSet()
1006 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOPB); in PCNT_TopBufferSet()
1007 pcnt->TOPB = val; in PCNT_TopBufferSet()
1026 void PCNT_TopSet(PCNT_TypeDef *pcnt, uint32_t val) in PCNT_TopSet() argument
1028 EFM_ASSERT(PCNT_REF_VALID(pcnt)); in PCNT_TopSet()
1031 if (PCNT0 == pcnt) { in PCNT_TopSet()
1037 if (PCNT1 == pcnt) { in PCNT_TopSet()
1043 if (PCNT2 == pcnt) { in PCNT_TopSet()
1052 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOPB); in PCNT_TopSet()
1053 pcnt->TOPB = val; in PCNT_TopSet()
1056 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOPB | PCNT_SYNCBUSY_CMD); in PCNT_TopSet()
1057 pcnt->CMD = PCNT_CMD_LTOPBIM; in PCNT_TopSet()
1060 PCNT_Sync(pcnt, PCNT_SYNCBUSY_TOP); in PCNT_TopSet()
1062 pcnt->TOP = val; in PCNT_TopSet()