想利用epwm3作为epwm3、4、5、6的同步信号源,配置如下,但是同步不了。
同步的配置方式:
EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading
EPwm3Regs.TBCTL.bit.SYNCOSEL=TB_CTR_ZERO;//选择CTR=Zero产生同步信号
EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE; // enable phase loading
EPwm4Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;//选择EPWMxSYNCI产生同步信号
EPwm5Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
EPwm5Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;//选择EPWMxSYNCI产生同步信号
EPwm6Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
EPwm6Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;//选择EPWMxSYNCI产生同步信号
然后在EPwm3的CTR=Zero时产生中断,并在中断中配置
EPwm5Regs.TBPHS.half.TBPHS = 400;
EPwm6Regs.TBPHS.half.TBPHS = 400;
不过无法产生相位差。(若在中断最后加入EPwm4Regs.TBCTL.bit.SWFSYNC=1;也即是软件强制同步则能产生相位差)
还有EPwm4Regs.TBCTL.bit.SWFSYNC=1软件强制同步信号要一直给吗?意思是这条语句的后面还要写入EPwm4Regs.TBCTL.bit.SWFSYNC=0吗?
不知道为什么?谢谢
Johnson Chen1:
有没有检查过PWM寄存器是否配置成功?另外EPWM3的CTR=Zero中断是否能正常进入?有试过在初始化时配置TBPHS.half.TBPHS= 400能产生相位差吗?
想利用epwm3作为epwm3、4、5、6的同步信号源,配置如下,但是同步不了。
同步的配置方式:
EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading
EPwm3Regs.TBCTL.bit.SYNCOSEL=TB_CTR_ZERO;//选择CTR=Zero产生同步信号
EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE; // enable phase loading
EPwm4Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;//选择EPWMxSYNCI产生同步信号
EPwm5Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
EPwm5Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;//选择EPWMxSYNCI产生同步信号
EPwm6Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
EPwm6Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;//选择EPWMxSYNCI产生同步信号
然后在EPwm3的CTR=Zero时产生中断,并在中断中配置
EPwm5Regs.TBPHS.half.TBPHS = 400;
EPwm6Regs.TBPHS.half.TBPHS = 400;
不过无法产生相位差。(若在中断最后加入EPwm4Regs.TBCTL.bit.SWFSYNC=1;也即是软件强制同步则能产生相位差)
还有EPwm4Regs.TBCTL.bit.SWFSYNC=1软件强制同步信号要一直给吗?意思是这条语句的后面还要写入EPwm4Regs.TBCTL.bit.SWFSYNC=0吗?
不知道为什么?谢谢
feng shi:
回复 Johnson Chen1:
谢谢您的回答,您说的这几点我都已经试过了,都是可以的。我现在把EPWM模块换成EPWM1,2,3,4就可以了。不知EPWM3,4,5,6这样的组合为什么不可以。