Part Number: TMS320F28027
Hi, with code below, I configured PWM frequency 40kHz, up-down count mode, TBPRD=750. CMPA=0, CMPB=750. TBCLK=SYSCLK=60MHz.
void InitEPwm2()
{
EPwm2Regs.TBPRD = 750; //40kHz
EPwm2Regs.TBPHS.half.TBPHS = 0x0000;
EPwm2Regs.TBCTR = 0x0000;
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm2Regs.CMPA.half.CMPA = 0;
EPwm2Regs.CMPB = 750;
EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.PRD = AQ_SET;
EPwm2Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
EPwm2Regs.ETSEL.bit.INTEN = 1;
EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;
}
with such code, I should get always low on both PWMA and PWMB outputs.
But the fact is that I will always get 12.5us(=750TBCLK which is half of the PWM period) pulse high on PWMB for once only. PWMA is always low.
Then I changed CMPA=50, the waveform is as below. It can be seen that PWMB output turns high at the very beginning that TBCTR=0 and started to increment, and it turns low when TBCTR=TBPRD
I've checked EPwm2Regs.AQCTLB.bit.ZRO=00, which means that there should be no action on PWMB when TBCTR=0.
yellow-PWMA,
blue-PWMB.
So why is there a pulse on PWMB and only once?


