This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Eric,
你好!
我按照你上面说的方法还是有点问题,还是会出现PWM波启动时不可控的情况。
初始化如下:
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;
//Time Base SubModule Register
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW; // set Immediate load,0x0-有阴影寄存器
EPwm2Regs.TBPRD= 1000;
EPwm2Regs.TBPHS.half.TBPHS =0;
EPwm2Regs.TBCTR = 0;//时基计数器
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//0x0-1分频
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;//0x0-1分频,TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)
EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;//与相位相关,没使用
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; //
// Counter compare submodule registers
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//CC_CTR_PRD;//0x1-当CTR=PRD时,影像寄存器里面的值装载到工作寄存器
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;//CC_CTR_PRD;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;//0x0
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
// Action Qualifier SubModule Registers
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;//AQ_CLEAR;
EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;//AQ_SET;
EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.CBD = AQ_SET;
EALLOW;
EPwm2Regs.TZFRC.bit.OST = 1; // Turn off the PWM
EDIS;
EPwm2Regs.CMPB =400;
EPwm2Regs.CMPA.half.CMPA = 600; //Initialize the CMP register
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
使用时通过两个按键来切换:
按A键执行下面代码:
EALLOW;
EPwm2Regs.TZFRC.bit.OST = 1;
EDIS;
按B键执行下面代码:
EPwm2Regs.CMPB =400;//(Uint16)((Uint32)uiFswRegu*uiDutyRatio/100);
EPwm2Regs.CMPA.half.CMPA =600;// (uiFswRegu-EPwm2Regs.CMPB); //Initialize the CMP register
EPwm2Regs.TBCTR =0;//400
EALLOW;
EPwm2Regs.TZCLR.bit.OST = 1;
EDIS;
从A键向B键切换时,还是会出现问题所描述的情况,请问是什么原因?