搜索
bottom↓
回复: 8

请教:使用ATMEG128生成正交脉冲,如何保证A一直超前B90度?

[复制链接]

出0入0汤圆

发表于 2021-5-17 23:58:19 | 显示全部楼层 |阅读模式
需求:使用AVR生成正交脉冲,脉冲频率变化。
思路:1、A脉冲由定时器1生成,B脉冲由定时器3生成。定时器1和定时器3工作在CTC模式下。
         2、频率变化时,计算出定时器1的TCCR1B和OCR1A,如果计算出的OCR1A或者TCCR1B和上一次有变化,则开启定时器1的匹配中断A;TIMSK|=BIT(4)
         3、开启定时器1的匹配中断A,在中断程序中运行以下指令:
      TIMSK&=~BIT(4);
      TCNT1=ocr1atemp>>1;
      TCCR1A=tccr1atemp;
      TCCR1B=tccr1btemp;
      OCR1A=ocr1atemp;
      
      TCNT3=0;
      TCCR3A=tccr1atemp;
      TCCR3B=tccr1btemp;
      OCR3A=ocr1atemp;

      先关闭中断;
      将定时器1的TCNT1设置为计算出的OCR1A的一半,定时器3的TCNT3设置为0,然后定时器1和定时器3的OCR1A和OCR3A相同。
        此时定时器1将会先遭遇匹配中断,自动改变输出引脚电平;定时器3后遭遇匹配中断,自动改变电平;


问题:按以上方式,发现频率变化时有时候A超前B,有时候B超前A,但我需要A一直超前B,请教解决方法。

总结:需要A一直超前B,请教解决方法。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出10入18汤圆

发表于 2021-5-18 03:35:55 来自手机 | 显示全部楼层
只需要一个定时器,4倍于信号频率,在AB信号的4个边沿都有中断控制。

出0入0汤圆

 楼主| 发表于 2021-5-18 06:31:24 来自手机 | 显示全部楼层
qtechzdh 发表于 2021-5-18 03:35
只需要一个定时器,4倍于信号频率,在AB信号的4个边沿都有中断控制。

我也这样想过,这个单片机还有其他工作,想找个不怎么占用资源的方法,确实不行也只能这么做,不过还得测试看下情况,谢谢。

出0入362汤圆

发表于 2021-5-18 10:38:29 | 显示全部楼层
huangxiaolpbany 发表于 2021-5-18 06:31
我也这样想过,这个单片机还有其他工作,想找个不怎么占用资源的方法,确实不行也只能这么做,不过还得测 ...

外加一片74HC74呗...

出0入93汤圆

发表于 2021-5-18 10:56:30 | 显示全部楼层
不要工作在CTC模式下嘛,一个工作在快速PWM模式下,另一个工作在相位修正 PWM 模式,同时启动,选择合适的匹配值正好是正交的,并且能够保证相位。

出0入0汤圆

 楼主| 发表于 2021-5-18 11:09:11 来自手机 | 显示全部楼层
在车上想了下,画了个图。
最上面是正常模式,

第二是定时器1匹配中断中判断是上升沿处理,
第三种定时器1匹配中断中判断是下降沿处理,但结果一样,一旦在定时器1匹配中断后会造成脉冲b超前A。

第四是定时器1匹配中断中判断是上升沿处理,但首先将定时器3控制的脉冲b强制为高电平,
第五种定时器1匹配中断中判断是下降沿处理,
但首先将定时器3控制的脉冲b强制为低电平
结果看来是可以的。

实际是不是可行,要试下才知道。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2021-5-18 11:10:13 来自手机 | 显示全部楼层
takashiki 发表于 2021-5-18 10:56
不要工作在CTC模式下嘛,一个工作在快速PWM模式下,另一个工作在相位修正 PWM 模式,同时启动,选择合适的 ...

谢谢,我也是猜相位修正应该可行,但没想明白,准备按您的说法再试试,谢谢

出0入0汤圆

 楼主| 发表于 2021-5-18 21:29:41 来自手机 | 显示全部楼层
找出解决办法了,进T1中断后,判断PB5和PE3状态,如果为高,就是要TCCR1C的强制指令,将AB脉冲均设置为0,然后重新设定计时器就可以了。

出0入0汤圆

发表于 2021-9-14 11:16:36 | 显示全部楼层
huangxiaolpbany 发表于 2021-5-18 21:29
找出解决办法了,进T1中断后,判断PB5和PE3状态,如果为高,就是要TCCR1C的强制指令,将AB脉冲均设置为0, ...

貌似你们研究的比较透彻哟,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 05:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表