[AVR单片机] ATMEGA169P的匹配中断与溢出中断问题

[复制链接]
1397|2
 楼主| sfesdm 发表于 2013-12-14 15:06 | 显示全部楼层 |阅读模式
在使用AVR的定时器0的时候,如果工作模式是普通模式,比较匹配也会产生中断?

使用定时器0,初始化的代码如下(程序其它地方没有再对TCCR0A 进行改动过):
TCCR0A &= 0xb7;     //默认普通模式 WGM01  WGM00 :00
TCCR0A  |= 0X10;     //匹配时位取反 COM0A1 COM0A0:01
TCCR0A  |= 0X02;     //1/8系统时钟分频
TIMSK0   |= 0X03;     //使能溢出中断和匹配中断
OCR0A = 10; //
这里目的是为了观察具体猜测结果

在溢出中断函数和匹配中断函数里面,分别进行把端口管脚取反的操作。具体代码如下:
#pragma vector = TIMER0_COMP_vect
__interrupt void Timer0_comp(void)
{
  PORTD ^= 0xff;
}


#pragma vector = TIMER0_OVF_vect
__interrupt void Timer0_ovf(void)
{
  PORTE ^= 0xff;
}

      最后观察到的结果就是PORTD和PORTE的波形和周期一样,不管把OCR0A的值改为多少。也就是说,程序即会产生溢出中断,也会产生中断。但从两个端口波形比较来看,两个中断基本上是同时发生的。而匹配中断 并不是TCNT0 累加到与OCR0A相等时产生的,但除此之外,还有哪里能产生匹配中断呢?
qin552011373 发表于 2013-12-15 12:43 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
qin552011373 发表于 2013-12-15 12:44 | 显示全部楼层
普通模式下也是会产生的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

346

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部