[AVR单片机] 请教ATMEGA169的PWM模式的问题,请高手指点!

[复制链接]
3252|5
 楼主| yaguifang 发表于 2008-12-29 10:33 | 显示全部楼层 |阅读模式
我用ATMEGA169做一个控制,其中一个功能是完成交流调速,用INT0检测过零,定时器1调速,时钟14.7456M,怎么定时器1的定时误差达到2ms?比定时器1高的中断就只使用了PCINT和INT0来做过零同步,PCINT只是按键输入,平常根本不按动,INT0用的是边沿触发,同样的算法和功能在ATMEGA16上多启用一个INT1都非常正常,在ATMEGA169上就老是不对,时正常时不正常,而且时钟频率倒是很稳,可幅度只有1.2-1.4V,请用过atmega169的朋友指点指点,我快被他搞死了,为啥子同样一串脉冲,M16定时就很准,M169误差就那么大?我以前用过很多AVR做项目,第一次遇到这个问题,从M16改为M169只是因为引脚不够,没想到改成M169改出这么多问题,真是郁闷,请高手指点!
ntzwq 发表于 2008-12-29 11:03 | 显示全部楼层

这么大的误差,是否你的分频比等设置不正确.

 楼主| yaguifang 发表于 2008-12-29 11:26 | 显示全部楼层

RE:

谢谢,这个我已经尝试过了,系统有一个1/8分频和全速的熔丝,我用的是全速,外部晶体,定时器1我选择的是系统时钟8分频,如果是误差应该都是一样的,每个脉冲都是误差那么多,问题是我定时10Ms,第一个脉冲是10MS,第二个脉冲可能是8ms,第三个脉冲可能是9MS,低四个有可能正常,反正就是随机的,你不知道是那个脉冲他发出来不是10MS,我以为是时钟问题,用外部直接加时钟也一样,我甚至关闭了串口发送,运行后没有任何一个地方会关系统中断,还是那样,除非不加任何东西,只让他跑INT0和定时器1的程序,他就正常,而同样的代码在M16上很正常。
aweyfan 发表于 2008-12-29 11:34 | 显示全部楼层

用ctc模式

xwj 发表于 2008-12-29 11:38 | 显示全部楼层

肯定有什么地方不对,比如比较门限

avr 发表于 2008-12-30 22:47 | 显示全部楼层

对于定时器的精度是可以计算出误差范围来的

对于定时器的精度是可以计算出误差范围来的,如果实际中误差远越超计算精度,一般是设置中有什么问题(如FUSE、时钟分频等),另外应该好好检查一下初始化代码,最后要检查有没有地方关中断或中断服务程序执行占机时过长。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

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