大家好、我正在尝试使用 SWFSYNC (软件强制同步脉冲)在 ePWM1、ePWM2、ePWM3之间进行同步。
数据表中显示了这一点
只有当 SYNCOSEL = 00选择 EPWMxSYNCI 时、SWFSYNC 才有效(运行)。
如果我使用"EPwm2Regs.TBCTL.bit.SWFSYNC=1;"来强制 EPwm2Regs.TBCTR=EPwm2Regs.TBPHS.half.TBPHS、我必须将 ePWM1或 ePWM2的 SYNCOSEL 配置为00? 将 EPwm2Regs.TBCTL.bit.SYNCOSEL 配置为00毫无意义、因为 epwm2的同步源由 epwm1决定。
此外、不论为 ePWM1和 ePWM2配置什么 SYNCOSEL、 SWFSYNC 都可以 始终强制 EPwm2Regs.TBCTR=EPwm2Regs.TBPHS.Half.TBPHS。
_asm (" NOP"); //EPwm1Regs.TBCTR 和 EPwm2Regs.TBCTR 都为0x20;
EPwm2Regs.TBCTL.bit.SWFSYNC=1;
_asm (" NOP");
_asm (" NOP");
_asm (" NOP");
_asm (" NOP");
_asm (" NOP");
_asm (" NOP");
_asm (" NOP");
_asm (" NOP"); //EPwm1Regs.TBCTR=0x53、 EPwm2Regs.TBCTR=0x02、这意味 着 EPwm2Regs.TBCTL.bit.SWFSYNC 采用 影响
3.我添加 __asm (" NOP"); 因为 如果我单步执行 EPwm2Regs.TBCTL.bit.SWFSYNC=1; EPwm1Regs.TBCTR 和 EPwm2Regs.TBCTR 是相同的、这意味 着 EPwm2Regs.TBCTL.bit.SWFSYNC 不会生效、为什么不会生效?