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.

TMS320F28027: Not able to Create Dead Band on Trip Zone Event

Part Number: TMS320F28027
Other Parts Discussed in Thread: C2000WARE, CONTROLSUITE

Hello E2E Experts,

Good day.

I am using 28027 for Synchronous buck operation PCMC.

PWM 1A is used for high side switch and PWM 1B is used for low side switch.

I am able to control the peak current however, at trip event I am not able to insert dead band when PWM 1A goes low and PWM 1B goes high. This creates shot through instance.

PWM configuration is as follows. Comments may not match since experiential. However PCMC is working.

EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE;          // set Immediate load
    EPwm1Regs.TBPRD = period;
    EPwm1Regs.CMPA.half.CMPA = 290;               // Fix duty at 50%
    EPwm1Regs.CMPB = 290;
    EPwm1Regs.TBPHS.half.TBPHS = 0;
    EPwm1Regs.TBCTR = 0;
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
    EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;        //used to sync EPWM(n+1) "down-stream"
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
    EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
    EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
    EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
    EPwm1Regs.DBCTL.bit.IN_MODE = 0;
    EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;          // Active Hi Complimentary
    EPwm1Regs.DBCTL.bit.OUT_MODE = 2;
    EPwm1Regs.DBRED = 20;                              // dummy value for now
    EPwm1Regs.DBFED = 20;                              // dummy value for now
   // Interrupt where we will change the Deadband
    EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;     // Select INT on Zero event
    EPwm1Regs.ETSEL.bit.INTEN = 1;                // Enable INT
    EPwm1Regs.ETPS.bit.INTPRD = ET_3RD;           // Generate INT on 3rd event
//Comparator configuration
    SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK = 1;
    //Enable Comparator & DAC
    Comp1Regs.COMPCTL.bit.COMPDACEN     = 1;       // Enable DAC / Power up Comparator 1 locally
    //-----------DAC configuration------------  //
    Comp1Regs.DACCTL.bit.FREE_SOFT      = 2;        // Free run
    Comp1Regs.DACCTL.bit.RAMPSOURCE     = 0;        // PWMSYNC1
    Comp1Regs.DACCTL.bit.DACSOURCE      = 1;        // 0- DAC, 1 - Ramp
    //-----------Comp configuration------------  //
    Comp1Regs.COMPCTL.bit.SYNCSEL       = 0;       // Asynchronous output for comparator
    Comp1Regs.COMPCTL.bit.QUALSEL       = 2;       // Qualification period for synchronized output of the comparator
    Comp1Regs.COMPCTL.bit.COMPSOURCE    = 0;       // Connect the inverting input to the internal DAC
    Comp1Regs.COMPCTL.bit.CMPINV        = 0;       // 0- direct, 1- Invert Comparator output is passed directly
    EPwm1Regs.HRPCTL.bit.PWMSYNCSEL     = 1;       // Ramp sync source :PWMSYNC3 at TBCTR = 0
    EPwm2Regs.HRPCTL.bit.PWMSYNCSEL     = 1;       // Ramp sync source :PWMSYNC3 at TBCTR = 0
    EPwm3Regs.HRPCTL.bit.PWMSYNCSEL     = 1;       // Ramp sync source :PWMSYNC3 at TBCTR = 0
    EPwm4Regs.HRPCTL.bit.PWMSYNCSEL     = 1;       // Ramp sync source :PWMSYNC3 at TBCTR = 0
    //-----------Digital Compare Configuration-------//
    EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 8;        // COMP1 Output as input
    EPwm1Regs.DCACTL.bit.EVT2SRCSEL     = 0;        // DCAEVT2 is Source signal select
    EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = 1;        // ASync signal
    //-----------PWM TRIPZONE Configuration-------//
    EPwm1Regs.TZSEL.bit.DCAEVT2 = 1;                // CBC source to ePWM
    EPwm1Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAH_HI;                 //4
    EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;
    EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_HI;
Thank you in advance for your suggestions.
Regards,
CSC