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.

TMS320F28379D: EPWM tripping unexpectedly

Part Number: TMS320F28379D


Tool/software:

Hello,

I use four IO as trip signals for EPWM4, EPWM5, and EPWM6.

I have an additional IO that I have configured for XINT4, where in the XINT4 ISR, I will disable those same EPWM channels (4,5,6).  

I am seeing an issue where at the start of XINT4 ISR (where I set a breakpoint), the EPWM channels are turned off / tripped before reaching the code that should turn them off.  

The ISR:

__interrupt void xint4_isr(void){

EPWM_forceTripZoneEvent(EPWM4_BASE, EPWM_TZ_FORCE_EVENT_OST);
EPWM_forceTripZoneEvent(EPWM5_BASE, EPWM_TZ_FORCE_EVENT_OST);
EPWM_forceTripZoneEvent(EPWM6_BASE, EPWM_TZ_FORCE_EVENT_OST);

Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);
}

I have the breakpoint set on the first call to EPWM_forceTripZoneEvent.  When I force XINT4 interrupt, it stops at the breakpoint, but all EPWM channels have already turned off.

I configure this with

XBAR_setInputPin(XBAR_INPUT1, 131);
XBAR_setInputPin(XBAR_INPUT2, 24);
XBAR_setInputPin(XBAR_INPUT3, 27);
XBAR_setInputPin(XBAR_INPUT4, 60);

XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX01_INPUTXBAR1);
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX03_INPUTXBAR2);
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX05_INPUTXBAR3);
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX07_INPUTXBAR4);

XBAR_enableEPWMMux(XBAR_TRIP4, XBAR_MUX01 | XBAR_MUX03 | XBAR_MUX05 | XBAR_MUX07);

EPWM_setTripZoneAction(EPWM4_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(EPWM4_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW);
EPWM_enableTripZoneSignals(EPWM4_BASE, EPWM_TZ_SIGNAL_DCAEVT1);
EPWM_selectDigitalCompareTripInput(EPWM4_BASE, EPWM_DC_TRIP_TRIPIN4, EPWM_DC_TYPE_DCAH);
EPWM_setTripZoneDigitalCompareEventCondition(EPWM4_BASE, EPWM_TZ_DC_OUTPUT_A1, EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_setDigitalCompareEventSyncMode(EPWM4_BASE, EPWM_DC_MODULE_A, EPWM_DC_EVENT_1, EPWM_DC_EVENT_INPUT_NOT_SYNCED);

EPWM_setTripZoneAction(EPWM5_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(EPWM5_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW);
EPWM_enableTripZoneSignals(EPWM5_BASE, EPWM_TZ_SIGNAL_DCAEVT1);
EPWM_selectDigitalCompareTripInput(EPWM5_BASE, EPWM_DC_TRIP_TRIPIN4, EPWM_DC_TYPE_DCAH);
EPWM_setTripZoneDigitalCompareEventCondition(EPWM5_BASE, EPWM_TZ_DC_OUTPUT_A1, EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_setDigitalCompareEventSyncMode(EPWM5_BASE, EPWM_DC_MODULE_A, EPWM_DC_EVENT_1, EPWM_DC_EVENT_INPUT_NOT_SYNCED);

EPWM_setTripZoneAction(EPWM6_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(EPWM6_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW);
EPWM_enableTripZoneSignals(EPWM6_BASE, EPWM_TZ_SIGNAL_DCAEVT1);
EPWM_selectDigitalCompareTripInput(EPWM6_BASE, EPWM_DC_TRIP_TRIPIN4, EPWM_DC_TYPE_DCAH);
EPWM_setTripZoneDigitalCompareEventCondition(EPWM6_BASE, EPWM_TZ_DC_OUTPUT_A1, EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_setDigitalCompareEventSyncMode(EPWM6_BASE, EPWM_DC_MODULE_A, EPWM_DC_EVENT_1, EPWM_DC_EVENT_INPUT_NOT_SYNCED);

and

XBAR_setInputPin(XBAR_INPUT13, 63);

GPIO_setInterruptType(GPIO_INT_XINT4, GPIO_INT_TYPE_FALLING_EDGE);
GPIO_enableInterrupt(GPIO_INT_XINT4);

Do you see any issue in the above configuration that will cause EPWM4/EPWM5/EPWM6 to trip when I have asserted (0) GPIO63/XBAR_INPUT13?

Thanks