打印
[AVR单片机]

Mega16 定时器与捕捉功能并用

[复制链接]
4299|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxa|  楼主 | 2008-12-13 23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠:
   Mega16 的Timer1 里的16位定时器能否将 PWM脉冲输出和ICP1的捕捉功能同时启用? 即:利用16为定时器产生PWM控制相关设备的同时启用ICP的捕捉功能,利用ICP 的捕捉功能来检测另一种设备的脉冲宽度。
有没有做过类似的功能?小弟不胜感激。

相关帖子

沙发
tiankai001| | 2008-12-13 23:51 | 只看该作者

Mega16 定时器与捕捉功能并用

我想应该可以,在设置寄存器的时候,把TCI的寄存器TIMSK的输入捕捉和比较匹配全部使能了,应该能行

使用特权

评论回复
板凳
zxa|  楼主 | 2008-12-14 10:45 | 只看该作者

Mega16 定时器与捕捉功能并用

 tiankai001:
  您好,输入捕捉和比较匹配全部使能没问题,只是如果计算捕捉到的脉冲间隔和时间就不能确定了,如果想精确计算捕捉到的脉冲宽度的话要只有在捕捉中断服务程序里将计数器TCNT1清零,但是清零后PWM输出的脉冲又会受到影响。
  
各位大侠:
有了新的想法,能否用定时器0来实现计数,当输入捕捉中断时将定时器0的计数值读取后再清零,这样是否可行?

使用特权

评论回复
地板
tiankai001| | 2008-12-14 11:14 | 只看该作者

Mega16 定时器与捕捉功能并用

不用清零吧,在下一次捕捉中断里面判断一下TCNT1的值,如果小于上一次的值,那么是计数器已经积满一次了,那讲两次的值用65535相减应该可以

好像马潮的那本书里有个频率计的例子就是这样子实现的

如果加上定时器0,那么用定时器0来捕捉外部事件,,用定时器1来实现PWM,两个定时器干不同的活,那会简单一些

使用特权

评论回复
5
zxa|  楼主 | 2008-12-14 22:42 | 只看该作者

Mega16 定时器与捕捉功能并用

 tiankai001:
    非常感谢耐心讲解,如果用定时器1来定时的话,定时器1为8位定时器,最大计数也就是256,晶振1M的话,实现大于9MS的脉冲检测(红外头码)的话还是不能满足。只能用调用延时程序来实现了。您有什么好的建议?

使用特权

评论回复
6
tiankai001| | 2008-12-15 14:08 | 只看该作者

Mega16 定时器与捕捉功能并用

若果脉冲宽度比较大的话,可以考虑把定时器0的时钟分频,1M时钟1024分频后相当于1KHz,那一个时钟周期就是1ms,最大就可以记256ms。
当然也可以让计数器多溢出几次,记住溢出次数也可以计算出来总的时间

使用特权

评论回复
7
zxa|  楼主 | 2008-12-16 21:45 | 只看该作者

Mega16 定时器与捕捉功能并用

tiankai001 :
       非常感谢,现采用分频的方式已解决,起先忽略了定时器0分频的功能。多谢。 我的EMAIL:zxaly@163.com

使用特权

评论回复
8
tiankai001| | 2008-12-17 08:14 | 只看该作者

Mega16 定时器与捕捉功能并用

呵呵,解决了就好

使用特权

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

本版积分规则

zxa

6

主题

21

帖子

0

粉丝