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