Part Number: TMS320F28379D Hello, I am setting up a trip zone interrupt from a GPIO via Xbar and the PWM is able to respond to a trip event, but the ISR I wrote is not being entered. When I removed my interrupt name from the PieVectTable (e.g. commenting out the line: PieVectTable.EPWM1_TZ_INT = TripZoneISR), the Default ISR is reached so I believe I have the interrupt set up properly, but I am missing something small detail. Here is my config: EALLOW; PieVectTable.EPWM1_TZ_INT = TripZoneFault; InputXbarRegs.INPUT1SELECT = 38; EDIS; // Enable CPU INT2 which is connected to EPWM1-3 INT: IER |= M_INT2; // Enable EPWM INTn in the PIE: Group 3 interrupt 1-3 PieCtrlRegs.PIEIER2.bit.INTx1 = 1; PieCtrlRegs.PIEIER2.bit.INTx2 = 1; EALLOW; CpuSysRegs.PCLKCR0.bit.TBCLKSYNC =0; EDIS; //trip zone select and action EALLOW; EPwm1Regs.TZSEL.bit.CBC1 = 1; EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_HI; EPwm1Regs.TZEINT.bit.CBC = 1; EPwm1Regs.TZCLR.bit.INT = 1; EDIS; EALLOW; CpuSysRegs.PCLKCR0.bit.TBCLKSYNC =1; EDIS; then I have an ISR elsewhere, interrupt void TripZoneISR(void) { //code } I put a breakpoint inside the TripZoneISR and it is never reached even when the trip event occurs. In my program, I have other interrupts that function properly by assigning the PieVectTable values without using the address of the ISR as I have shown before (i.e. PieVectTable.INTx = ISR versus PieVectTable.INTx = &ISR) but I see other examples typically use the address of the ISR. I suppose sides question are, how can my other interrupts work without the address of the ISR (i.e. PieVectTable.ADCA1_INT = anotherISR), whether this is the root of my problem for the trip zone ISR, and what the difference between the two is?
↧