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.

CCS/TMS320F28377S: EPMW problem

Part Number: TMS320F28377S

Tool/software: Code Composer Studio

Hi,


I work with the epwm module and I have a problem.

Could anyone give me some tips on how to get waveforms like in the attached picture ?

Thank you for help

Best regards

Szymon

  • Szymon,

    One way is to configure three separate PWM modules in up-count mode,with synchronized time bases, then set up the AQ module as shown in the attachment.

    Regards,

    Richard

    PWM Example.pdf

  • Szy,

    From what you've drawn, it seems pretty straight forward waveform - you can start with any of the existing EPWM examples and modify the same.
    Typically, you'll have to handle the Action Qualifier settings and Compare and period values to obtain the duty cycle desired.
    If you run into any specific issue in usage let us know.

    -Bharathi.
  • Hi,

    At the begining i have a problem with synchronized time bases. U use EPWMXLINK but it doesn't work.

    void InitEPwm1(void)
    {
        EPwm6Regs.TBPRD = 10000; //
        EPwm6Regs.CMPA.bit.CMPA = 2500; //wypelnienie A
        EPwm6Regs.CMPB.bit.CMPB = 0; //wypelnienie B
        EPwm6Regs.TBPHS.all = 0;
        EPwm6Regs.TBCTR = 0;
        EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
        EPwm6Regs.TBCTL.bit.PHSEN = TB_DISABLE;
        EPwm6Regs.TBCTL.bit.PRDLD = TB_SHADOW;
        EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
        EPwm6Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
        EPwm6Regs.TBCTL.bit.CLKDIV = TB_DIV1;
        EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
        EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
        EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
        EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
        EPwm6Regs.AQCTLA.bit.ZRO = AQ_SET;
        EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR;
        EPwm6Regs.AQCTLB.bit.ZRO = AQ_SET;
        EPwm6Regs.AQCTLB.bit.CBU = AQ_CLEAR;
    
        EPwm2Regs.CMPA.bit.CMPA = 5000; //wypelnienie A
        EPwm2Regs.CMPB.bit.CMPB = 0; //wypelnienie B
        EPwm2Regs.TBPHS.all = 0;
        EPwm2Regs.TBCTR = 0;
        EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
        EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;
        EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
        EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_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.AQCTLA.bit.CAU = AQ_CLEAR;
        EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET;
        EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR;
        EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET;
    
        EPwm2Regs.EPWMXLINK.bit.CMPALINK = 5;
    }

  • Hi,

    It's not clear which PWM module you are trying to synchronize. Have you enabled synchronization?

    -Bharathi