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.

TMS320F280039C: CMPSS is not working for EPWM by using sysconfig.

Part Number: TMS320F280039C
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

Hi Team,

I am using TMS320F280039C launchpad and enabled the CMPSS3, EPWM channel 1 and 2 , ADC, EPWMXBAR. My overall idea is if ADC value goes high after the certain DAC value PWM should be off.

i am using Mux signal for LP input -23: A0/B15/C15/DACA_OUT and when provide this pin to VCC, PWM does not go in off state.

Below is the configuration for required modules.

CMPSS1:

HIGH comparator configuration:

CMMPSS MUX select:

LOW compartor configuration:

CMPSS MUX select

Rest all CMPSS configuration is default.

EPWMXBAR setting:

PWM Configuration:

EPwm1Regs.TBPRD = PWM_PERIOD; // Set period to 600 counts for 100KHz PWM Frequency

EPwm1Regs.TBCTR = 0;

EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Up-down count mode
EPwm1Regs.TBCTL.bit.PHSEN = 0;
EPwm1Regs.EPWMSYNCINSEL.bit.SEL = SYNC_IN_SRC_DISABLE_ALL; //Sync in Disabled
EPwm1Regs.TBPHS.bit.TBPHS = PH_ANG_CNT_R;
EPwm1Regs.EPWMSYNCOUTEN.bit.ZEROEN = 1;

EPwm1Regs.CMPA.bit.CMPA = 300;
EPwm1Regs.CMPB.bit.CMPB = 0;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm1Regs.CMPC = 0;
EPwm1Regs.CMPD = 0;

//Action Qualifier Control Register For Output A
EPwm1Regs.AQCTLA.bit.CBD = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.CBU = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.PRD = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;

//Action Qualifier Control Register For Output B

EPwm1Regs.AQCTLB.bit.CAU = AQ_NO_ACTION;
EPwm1Regs.AQCTLB.bit.CBD = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.PRD = AQ_NO_ACTION;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_NO_ACTION;*/

//Trip Zone
EALLOW;
EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;
EPwm1Regs.TZSEL.bit.OSHT1 = 1;
EPwm1Regs.TZEINT.bit.OST = 1;
EDIS;

//Dead Band
EPwm1Regs.DBRED.bit.DBRED = DEADBAND_200; //200ns
EPwm1Regs.DBFED.bit.DBFED = DEADBAND_200; //200ns
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; //Active Low
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;

//Event Trigger
EPwm1Regs.ETSEL.bit.INTEN = 1;
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
EPwm1Regs.ETPS.bit.INTPSSEL = 1;
EPwm1Regs.ETINTPS.bit.INTPRD2 = 1;

//ADC SOC
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.ETSEL.bit.SOCASEL = 4;
EPwm1Regs.ETPS.bit.SOCAPRD = 1;

I am able to read the ADC value for providing ground and VCC to that perticular Pin number (23: A0/B15/C15/DACA_OUT).

Inside the main function PWM initlize and GPIO initlisation are done and nothing is running inside while loop.

Please let me know what I am missing.

Thank you

Shashank