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.

TMS320F28386S: EX-3 UPDOWN SFO

Part Number: TMS320F28386S
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

ACTUAL CODE_EX_3

for(j = 1;j < PWM_CH;j++)
    {
        (*ePWM[j]).TBCTL.bit.PRDLD = TB_SHADOW;  // set Shadow load
        (*ePWM[j]).TBPRD = 20;               // PWM frequency = 1/(2*TBPRD)
        (*ePWM[j]).CMPA.bit.CMPA =20 / 2;   // set duty 50% initially
        (*ePWM[j]).CMPA.bit.CMPAHR = 255;   // initialize HRPWM extension
        (*ePWM[j]).CMPB.bit.CMPB = 20/ 2;   // set duty 50% initially
        (*ePWM[j]).CMPB.all |= 1 ;
        (*ePWM[j]).TBPHS.all = 0;
        (*ePWM[j]).TBCTR = 1;

 

        (*ePWM[j]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Select up-down
                                                        // count mode
        (*ePWM[j]).EPWMSYNCINSEL.all = SYNC_IN_SRC_DISABLE_ALL;
        (*ePWM[j]).EPWMSYNCOUTEN.all = SYNC_OUT_SRC_DISABLE_ALL;
        (*ePWM[j]).TBCTL.bit.HSPCLKDIV = TB_DIV1;
        (*ePWM[j]).TBCTL.bit.CLKDIV = TB_DIV1;          // TBCLK = SYSCLKOUT
        (*ePWM[j]).TBCTL.bit.FREE_SOFT = 11;

 

        (*ePWM[j]).CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;  // LOAD CMPA on CTR = 0
        (*ePWM[j]).CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
        (*ePWM[j]).CMPCTL.bit.SHDWAMODE = CC_SHADOW;
        (*ePWM[j]).CMPCTL.bit.SHDWBMODE = CC_SHADOW;

 

        (*ePWM[j]).AQCTLA.bit.CAU = AQ_SET;             // PWM toggle high/low
        (*ePWM[j]).AQCTLA.bit.CAD = AQ_CLEAR;
        (*ePWM[j]).AQCTLB.bit.CBU = AQ_SET;             // PWM toggle high/low
        (*ePWM[j]).AQCTLB.bit.CBD = AQ_CLEAR;

 

        EALLOW;
        (*ePWM[j]).HRCNFG.all = 0x0;
        (*ePWM[j]).HRCNFG.bit.EDGMODE = HR_BEP;          // MEP control on
                                                         // both edges.
        (*ePWM[j]).HRCNFG.bit.CTLMODE = HR_CMP;          // CMPAHR and TBPRDHR
                                                         // HR control.
        (*ePWM[j]).HRCNFG.bit.HRLOAD = HR_CTR_ZERO_PRD;  // load on CTR = 0
                                                         // and CTR = TBPRD
        (*ePWM[j]).HRCNFG.bit.EDGMODEB = HR_BEP;         // MEP control on
                                                         // both edges
        (*ePWM[j]).HRCNFG.bit.CTLMODEB = HR_CMP;         // CMPBHR and TBPRDHR
                                                         // HR control
        (*ePWM[j]).HRCNFG.bit.HRLOADB = HR_CTR_PRD; // load on CTR = 0
                                                         // and CTR = TBPRD
        (*ePWM[j]).HRCNFG.bit.AUTOCONV = 1;        // Enable autoconversion for
                                                   // HR period

 

        (*ePWM[j]).HRPCTL.bit.TBPHSHRLOADE = 1;    // Enable TBPHSHR sync
                                                   // (required for updwn
                                                   //  count HR control)
        (*ePWM[j]).HRPCTL.bit.HRPE = 1;            // Turn on high-resolution
                                                   // period control.

 

        CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;      // Enable TBCLK within
                                                   // the EPWM
        (*ePWM[j]).TBCTL.bit.SWFSYNC = 1;          // Synchronize high
                                                   // resolution phase to
                                                   // start HR period
        EDIS;
    }
}

THIS IS THE CODE WHERE WE MADE CHANGES.

OUR AIM: to achieve 2MHz signal .Based on the formula TBPRD =50 should give desired fequency but getting 800KHz.At what TBPRD we will gwt 2 MHz ?Please explain the error we are making.

Regards,

Sayan

  • Hi Sayan,

    While I cannot debug your code for you, I would like to better understand the issue and make some suggestions to help.

    1. Were you able to run the original example without issue?
    2. Can you please point out the specific changes you made?
    3. Are you using SysConfig in CCS? If so, can you please check the clock tree to verify your EPWM clock source settings?
    4. Please double check your system clock divider registers and EPWM clock divider registers while running to be sure they are as expected.
    5. When you change the TBPRD, are you still seeing the PWM frequency change and respond proportionally?

    Best Regards,

    Allison

  • 1.Yes the original code ran without any issue.

    2.MY MODIFIED CODE WHERE I HAVE CHANGED THE VALUES ON THE RIGHT HAND SIDEACTUAL CODE_EX_3

    Changes made on : TBPRD,CMPA,CMPAHR,CM

    5.When I changed the TBPRD ,I am NOT seeing the PWM frequency change and respond proportionally.