打印
[AVR单片机]

AVR Atmega88 timer1计数器问题。

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

使用特权

评论回复
5
qin552011373| | 2013-5-19 09:07 | 只看该作者
你指的是外部输入的抖动?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

0

粉丝