Hello!
I have a problem with ePWM on TMS320F28335 DSC.
In my application I have a two MOSFET and I need to operate this with ePWM. Somtimes I need to Enable/Disable of ePWM (set both PWM signal to HI level).
My code for Enable and Disable of PWM is:
void EPWM1_Disable(void)
{
EPwm1Regs.AQSFRC.bit.RLDCSF = 3;
EPwm1Regs.AQSFRC.bit.ACTSFA = 2;
EPwm1Regs.AQSFRC.bit.ACTSFB = 2;
EPwm1Regs.AQSFRC.bit.OTSFA = 1;
EPwm1Regs.AQSFRC.bit.OTSFB = 1;
EPwm1Regs.AQCSFRC.bit.CSFA = 2;
EPwm1Regs.AQCSFRC.bit.CSFB = 2;
EPwm1Regs.DBCTL.bit.OUT_MODE = 0;
}
void EPWM1_Enable(void)
{
EPwm1Regs.AQSFRC.bit.RLDCSF = 0;
EPwm1Regs.AQSFRC.bit.ACTSFA = 0;
EPwm1Regs.AQSFRC.bit.ACTSFB = 0;
EPwm1Regs.AQSFRC.bit.OTSFA = 0;
EPwm1Regs.AQSFRC.bit.OTSFB = 0;
EPwm1Regs.AQCSFRC.bit.CSFA = 3;
EPwm1Regs.AQCSFRC.bit.CSFB = 3;
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;
}
My source code for configurate ePWM:
void EPWM1_Config(unsigned short int period, unsigned short int duty)
{
EPwm1Regs.TBPRD = period;
EPwm1Regs.TBPHS.half.TBPHS = 0;
EPwm1Regs.TBCTL.bit.CLKDIV = 0;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.AQSFRC.bit.RLDCSF = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_LOC;
EPwm1Regs.DBFED = MY_DEAD_TIME_DBFED;
EPwm1Regs.DBRED = MY_DEAD_TIME_DBRED;
EPwm1Regs.CMPA.half.CMPA = duty;
EPwm1Regs.ETSEL.all = 0;
EPwm1Regs.ETSEL.bit.INTEN = 1;
EPwm1Regs.ETSEL.bit.INTSEL = 2;
EPwm1Regs.ETPS.bit.INTPRD = 1;
}
This code is working but there there is a problem when I use EPWM1_Enable(void) function. Please see Image below:
Active level - LOW, green signal - EPWM1A, Yellow - EPWM1B
When I start ePWM signal EPWM1A go to ACTIVE level and the next go to NOT active level. The length of this process = one period of ePWM counter.
Here:
- The ePWM is Disable
- Start ePWM. This pulse - is my problem. This should not occur.
- Normal operate.
- Change level. No death band here (in my program I use death band about 400 ns)
How can I fix it? I have to get rid of this pulse during the enable ePWM.
Best regards,
Alex


