|
Hi! I have some problem starting the TC0 on my AT91 SAM7S. The timer doesn't work and there is no interrupt and I don't know what is wrong. UART and RTT are working with interrupts on same interrupt_init code. I hope you can help me.
Here my code:
void init_timer0(void){ unsigned int dummy; TC0_CCR = (1<<1); //disable timer TC_BMR = (1<<0); // set no external clock TC0_IDR = 0xFFFFFFFF; // Disable interrupts dummy = TC0_SR; // Clear status register dummy = dummy; // do something -> no warning TC0_CMR = ((1<<0)|(0<<1)|(0<<4)|(0<<5)|(0<<8)|(0<<9)|(1<<14)); TC0_RC = (0x3E8); // run to TC0_CCR = ((1<<0) | (1<<2)); //enable timer TC0_IER = (1<<TC0_IER_CPCS_BIT); //interrupt enable }
void ISR_TC0(void){ unsigned int dummy; dummy = TC0_SR; dummy = dummy; time2++; }
int main(void){ init_clock(); init_periphery (); init_timer0(); enable_periphery_clock(TC0_ID); config_AIC(TC0_ID, 4, 0, ISR_TC0); while(1){ //blink LED with timer0 } }
void config_AIC(unsigned int source, unsigned int mode, unsigned char trigger, void(*handler)(void)){ AIC_IDCR = 1 << source; // Configure mode and handler AIC_SVR(source) = ((unsigned int) handler); AIC_SMR(source) = (mode | (trigger<<5)); // Clear interrupt AIC_ICCR = (1 << source); AIC_IECR = (1 << source); //enable interrupt }
|