工具与软件:
尊敬的专家:
我正在尝试使用 PWM 模块生成 PWM、而计数器与外部触发器同步。 为了实现这一点、我将 在 GPIO10上触发一个 与 INPUT5SELECT 相关联的脉冲。 此外、我还将 TBCTL 的位 PHSEN 初始化为1、以便在外部触发 CTR 时将其设为零。
这是代码初始化部分的片段。
void PWM0_Init(void)
{
EALLOW;
EPwm1Regs.TBCTL.bit.CTRMODE = 0; // Count up
EPwm1Regs.TBPRD = 10000; // Set timer period
EPwm1Regs.TBCTL.bit.PHSEN = 1; // Enable phase loading
EPwm1Regs.TBPHS.bit.TBPHS = 0x0000; // Phase is 0
EPwm1Regs.TBCTR = 0x0000; // Clear counter
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0; // Clock ratio to SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = 0;
EPwm1Regs.TBCTL.bit.SYNCOSEL = 1; // SYNC output on CTR = 0
// Setup shadow register load on ZERO
EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADBMODE = 0;
// Set Compare values
// Set compare A value
// Set actions
EPwm1Regs.AQCTLA.bit.ZRO = 2; // Set PWM1A on Zero
EPwm1Regs.AQCTLA.bit.CAU = 1; // Clear PWM1A on event A, up count
//SOCA to ADC
EPwm1Regs.ETSEL.bit.SOCAEN=1;
EPwm1Regs.ETSEL.bit.SOCASEL=1;
EPwm1Regs.ETPS.bit.SOCAPRD = 1;
EPwm1Regs.ETCLR.bit.SOCA = 1;
EDIS;
}
void X_bar(void)
{
EALLOW;
InputXbarRegs.INPUT5SELECT = 10;
EDIS;
}
尽管进行了这些初始化、但在我不断改变外部触发频率的同时、我没有看到 PWM 频率有任何变化。
提前感谢。
此致、
Rajesh

