这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » atmega128,timer1,timer3 atmega128的timer1

共3条 1/1 1 跳转至

atmega128,timer1,timer3 atmega128的timer1和timer3可以同时设为溢出中断吗?

院士
2006-09-17 18:14:16     打赏
atmega128,timer1,timer3 atmega128的timer1和timer3可以同时设为溢出中断吗?



关键词: atmega128     timer1     timer3         

院士
2006-12-22 22:43:00     打赏
2楼
问 我在程序中,使用timer1来完成数据采集(64分频),使用timer3(256分频)产生1秒的时间中断,我使用ICCAVR的代码向导来编写两个定时器的初始化代码。现在的问题是使用定时器1可以进入其中断程序,但是定时器3的中断允许打印后,延时1S,应该进入timer3的中断程序时,却产生问题,系统复位从头开始。。。。
也就是timer3根本进入不了中断程序
//TIMER3 initialisation - prescale:256
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 1Hz
// actual value:  1.000Hz (0.0%)
void timer3_init(void)
{
TCCR3B = 0x00; //stop
TCNT3H = 0x1F; //setup
TCNT3L = 0x00;
OCR3AH = 0xE1;
OCR3AL = 0x00;
OCR3BH = 0xE1;
OCR3BL = 0x00;
OCR3CH = 0xE1;
OCR3CL = 0x00;
ICR3H  = 0xE1;
ICR3L  = 0x00;
TCCR3A = 0x00;
TCCR3B = 0x04;
ETIMSK = 0x04;
}

#pragma interrupt_handler timer3_ovf_isr:30
void timer3_ovf_isr(void)
{
//TIMER3 has overflowed
TCNT3H = 0x1F; //reload counter high value
TCNT3L = 0x00; //reload counter low value
putchar0('g');
} 1: 后期的处理我在英文PDF中,发现说使用兼容M103模式时,只有一个16位的定时器,并且没有中断矢量号30!!!可我在烧熔丝时,却没有选兼容模式!!

后来,我将原来的程序做了处理。使用了一个8位的timer0和16位的timer1,这次两个全都可以中断工作了。以后使用还真要注意一下了,我在想,atmega 128在正式的中文资料出现之前,不知有多少位同仁在吃亏!!!


专家
2022-08-27 15:48:13     打赏
3楼

学习了解一下


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]