ATmega4809 的定时器与普通的AVR类似,但是功能增加了许多,用法也更加复杂了。
下面的程序使用TCA的普通模式,当定时器溢出后产生中断,在中断里翻转LED。
#define F_CPU 20000000L/6
#include <xc.h>
#include <avr/interrupt.h>
SIGNAL(TCA0_OVF_vect)
{
TCA0.SINGLE.INTFLAGS |= (1<<0);
PORTF.OUTTGL |= (1<<5);
}
int main(void) {
// PF5 as LED
PORTF.DIR |= (1<<5);
//TCC0
// NORMAL mode
TCA0.SINGLE.CTRLB = 0;
// DIV1024
TCA0.SINGLE.CTRLA |= (7<<1) | (1<<0);
// OVF interrupt
TCA0.SINGLE.INTCTRL = (1<<0);
TCA0.SINGLE.PER = F_CPU/1024;
// enable interrupt
sei();
while(1)
{
}
return 0;
}
此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处