打印
[AVR单片机]

ATMEGA169P的匹配中断与溢出中断问题

[复制链接]
988|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

粉丝