hello, I am having a problem generating an interrupt from IPC0. My other interrupts are working fine so I am a little unsure of the issue. I have also consulted examples in the control suite and have failed to see where I am going wrong.
I set IPC0 in CPU1 , and in CPU2 I can see it set via:
'IpcRegs.IPCSTS.bit.IPC0' set to 1 so the that side of things is working.
Here is some of the code from CPU2.
__interrupt void IPC0_isr(void);
// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts
//
DINT;
//
// Initialize the PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.
// This function is found in the F2837xD_PieCtrl.c file.
//
InitPieCtrl();
//
// Disable CPU interrupts and clear all CPU interrupt flags:
//
IER = 0x0000;
IFR = 0x0000;
//
// Initialize the PIE vector table with pointers to the shell Interrupt
// Service Routines (ISR).
// This will populate the entire table, even if the interrupt
// is not used in this example. This is useful for debug purposes.
// The shell ISR routines are found in F2837xD_DefaultIsr.c.
// This function is found in F2837xD_PieVect.c.
//
InitPieVectTable();
//
// Register the EPWM interrupt handler for EPWM1
//
EALLOW;
PieVectTable.ADCD1_INT = &epwm1_isr; // Function for ADCC interrupt 1
PieVectTable.IPC0_INT = &IPC0_isr; // Function for ADCC interrupt 1
EDIS;
//
// Enable CPU INT1 which is connected to IPC0 INT:
//
IER |= M_INT1;
//
// Enable EPWM INTn in the PIE: Group 1 interrupt 6
//
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
PieCtrlRegs.PIEIER1.bit.INTx13 = 1;
//
// Enable global Interrupts and higher priority real-time debug events:
//
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM