打印
[AVR单片机]

三路余弦波

[复制链接]
1857|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Ascarikz1|  楼主 | 2007-6-27 10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在在用atmega16(mega8也可以)产生三路频率和振幅相同的余弦波,且此3路的余弦波要求相互之间的相位差可调. 

单片机的T/C1,T/C2全部投入使用,选用快速PWM模式,计数器的TOP值选择固定的8位.程序的设计思路很简单,在此就不多废话:就是当计数器计数值和OCR1A(OCR1B/OCR2)比较匹配时发生中断. 

问题来了: 
     1.当OCR1A(OCR1B/OCR2)三者的值相等或者非常接近时,三个比较匹配中断几乎同时发生.此时就有先后处理的问题,程序第一时间仅能处理其中的一个,其结果就会使另外两个中断处理得不及时,从而导致另外两个相应的匹配寄存器得不到及时的更新,换句话说,可能丢失了>=1次以上的匹配. 
     例如,我的本意是让三路输出相位差为0的余弦波,结果却不是这样,如附件中的图1,产生了相位差.且波形也稍稍的被干扰.图2是相互相位差要求为120度,但是还是因为有同时中断的存在,所以还是有偏差.而且随着时间的推移,这样产生的误差是越来越大. 
    2.所以请教高手帮忙解决,欢迎提建议.

<a href=./bbs_upload/files_7/**01159521.rar>点击此处下载**01159521.rar</a>

相关帖子

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

本版积分规则

7

主题

23

帖子

0

粉丝