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