Hi,
i use a timing interrupt with the SAMD21, it works pretty well, but i need a second one simultaneously (TC1 with TCC1).
my working TCC0 code:
Tcc* TC0 = (Tcc*) TCC0;
void initIntTimer()
{
REG_GCLK_CLKCTRL = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID_TCC0_TCC1);
while (GCLK->STATUS.bit.SYNCBUSY);
TC0->CTRLA.reg &= ~TCC_CTRLA_ENABLE;
while (TC0->SYNCBUSY.bit.ENABLE);
TC0->CTRLA.reg |= TCC_CTRLA_PRESCALER_DIV16;
TC0->WAVE.reg |= TCC_WAVE_WAVEGEN_NFRQ;
while (TC0->SYNCBUSY.bit.WAVE);
TC0->PER.reg = 2999;
while (TC0->SYNCBUSY.bit.PER);
TC0->INTENSET.reg = 0;
TC0->INTENSET.bit.OVF = 1;
NVIC_EnableIRQ(TCC0_IRQn);
TC0->CTRLA.reg |= TCC_CTRLA_ENABLE;
while (TC0->SYNCBUSY.bit.ENABLE);
}
void TCC0_Handler() //T=1ms ~67us
{
if (TC0->INTFLAG.bit.OVF)
{
TC0->INTFLAG.bit.OVF = 1;
//my code
}
}