EPWM同频率输出的问题

[复制链接]
3821|4
 楼主| lijinpeng90 发表于 2013-7-12 10:46 | 显示全部楼层 |阅读模式
让EPWM1和EPWM2以相同的频率输出,只是前后相位不同,EPWM1主要设置如下(频率为100Hz)
        EPwm1Regs.TBPRD = 18750;
        EPwm1Regs.TBPHS.half.TBPHS = 0;
        EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
        EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
        EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
        EPwm1Regs.TBCTL.bit.SYNCOSEL =TB_CTR_ZERO;

        EPwm1Regs.TBCTL.bit.HSPCLKDIV = 2;
        EPwm1Regs.TBCTL.bit.CLKDIV = 2;   

        EPwm1Regs.CMPA.half.CMPA = 12500;
        EPwm1Regs.CMPB = 6250;
EPWM2的主要设置如下:
        EPwm2Regs.TBPRD = 18750;
        EPwm2Regs.TBPHS.half.TBPHS = 12500;                 
        EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
        EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;               //使能PHASE寄存器
        EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
        EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;

        EPwm2Regs.CMPA.half.CMPA = 12500;
        EPwm2Regs.CMPB = 6250;
为什么EPWM2的输出频率是800Hz,为什么不是同频率呢?例程上的例子是这么设置的,只不过相位相同?求教导!!!
 楼主| lijinpeng90 发表于 2013-7-12 10:59 | 显示全部楼层
明白了,自问自答哦吧,在EPWM2中同样需要设置分频,加上这两句就好了
EPwm2Regs.TBCTL.bit.HSPCLKDIV = 2;
EPwm2Regs.TBCTL.bit.CLKDIV = 2;
zhangmangui 发表于 2013-7-12 12:16 | 显示全部楼层
lijinpeng90 发表于 2013-7-12 10:59
明白了,自问自答哦吧,在EPWM2中同样需要设置分频,加上这两句就好了
EPwm2Regs.TBCTL.bit.HSPCLKDIV = 2; ...

好  问题解决了  那就感谢分享
支持你原创精华贴   赢大奖
独孤求败2030 发表于 2013-7-12 15:54 | 显示全部楼层
是啊,毕竟EPwm1Regs.TBCTL.bit.HSPCLKDIV 、EPwm1Regs.TBCTL.bit.CLKDIV    两个位都是属于EPWM1的,挺容易忘记。2000的EPWM多路之间真的蛮独立的。

shanhaijing 发表于 2013-7-29 21:25 | 显示全部楼层
好贴,我也正在写这方面的程序。但是想问一下楼主,楼主在实现的时候,是不是在epwm中断程序中加了EPwm2Regs.TBCTL.bit.SWFSYNC=1这样一句话,强制有一次同步信号,使相位寄存器能够加载。因为我也是按照楼主这样写的,但相位还是一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

65

帖子

1

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