[AVR单片机] AVR Atmega88 timer1计数器问题。

[复制链接]
2567|4
 楼主| 一屡星辰 发表于 2013-5-3 10:24 | 显示全部楼层 |阅读模式
AVR Atmega 88 timer1 普通计数模式下 如何去抖动?在ctc模式下如何设置才能进中断,ctc模式下是进捕捉中断吗?


timer1 CTC模式初始化:

{
      TCCR1A=0x00; //设置为CTC ICR1模式
        TCCR1B |= (1<<WGM12)|(1<<WGM13)|(1<<CS10)|(1<<CS11)|(1<<CS12); //开启外部T1时钟,开启输入捕捉口的噪声抑制器 外部计数
        TIMSK1 |= (1 << ICIE1); //输入捕捉使能                          
        TCNT1=0; //计数初值
        ICR1=10;//TOP值为10
        SREG_Bit7=0x01; //I 全局中断使能
}
中断服务为:
#pragma vector=TIMER1_CAPT_vect//
__interrupt void InterruptTimer1A(void)

{

}

这样设置当计数值达到top值时ICF1会置位吗?能进中断吗?求高手指点。
huangxz 发表于 2013-5-3 11:40 | 显示全部楼层
没试过,不过我觉的既然用于CTC模式,那应该是overflow,和match中断,不应该是capture中断
tanmilaoshu 发表于 2013-5-17 14:51 | 显示全部楼层
捕获中断一般是对外部事件进行捕获吧,也就是对外部上升沿或者下降沿发生时,将计数器中的值存入捕获寄存器,要想CTC模式进入捕获中断,可以在外部引线,对比较输出波形进行捕获……
qin552011373 发表于 2013-5-19 09:06 | 显示全部楼层
在CTC模式(WGM22:0 = 2)下OCR2A寄存器用于调节计数器的分辨率。当计数器的数
值TCNT2等于OCR2A时计数器清零。OCR2A定义了计数器的TOP值,亦即计数器的
分辨率。这个模式使得用户可以很容易地控制比较匹配输出的频率,也简化了外部事件计
数的操作。利用OCF2A标志可以在计数器数值达到TOP即产生中断。在中断服务程序里可以更新
TOP的数值。由于CTC模式没有双缓冲功能,在计数器以无预分频器或很低的预分频器工
作的时候将TOP更改为接近BOTTOM的数值时要小心。如果写入OCR2A的数值小于
当前TCNT2的数值,计数器将丢失一次比较匹配。在下一次比较匹配发生之前,计数器
不得不先计数到最大值0xFF,然后再从0x00开始计数到OCR2A。
qin552011373 发表于 2013-5-19 09:07 | 显示全部楼层
你指的是外部输入的抖动?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

0

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