此帖出自微控制器 MCU论坛
最新回复
ePWM模块自带相移寄存器啊,比如:
EPwm1Regs.TBPRD = 199U; //PWM周期是200个时钟(TBCLK)
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; //PWM计数模式是非对称,累加
EPwm1Regs.TBPHS.half.TBPHS = 50U; //PWM相移(phase shift)50个TBCLK,相移为负,即提前PI/2
ePWM3上面的相移设置为0U。
使用软件SYNC两个ePWM模块,即两个模块同时开始计数。
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
/* Trigger phase shift before trigger ePWM output to avoid instruction delay */
EPwm1Regs.TBCTL.bit.SWFSYNC = 1; // Trigger phase difference by SWSYNC bit
EPwm3Regs.TBCTL.bit.SWFSYNC = 1; // Trigger phase difference by SWSYNC bit
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK within the ePWM
两个PWM的相位差1/4。
详情
回复
发表于 2013-1-10 09:28
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
个人签名工程 = 数学+物理+经济
|
||
| |
|
|
此帖出自微控制器 MCU论坛
| ||
|
||
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
EEWorld Datasheet 技术支持