Had an interresting issue that we have resolved, but we're trying to understand...
We had a timer (TIMER2) running and matching towards CC[3] every 500us. This match results in the ISR being called. In the sISR we updated CC[2] to generate another match to use a GPIOTE to create a pulse.
When we used it this way - we only got very sporadic matches from CC[2]. However, when we do not update CC[2] we get matches every time.
Is there some sort of "protection" that makes so that the match does not happen within a certain amount of time after writing a CC register?