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.

F28377D IPC not clearing event flags?

I'm trying to set up IPC communication between the 2 cores on the Delfino F28377D using parts of your sample code "cpu01_to_cpu02_ipcdrivers_lite_cpu01.c" and "cpu01_to_cpu02_ipcdrivers_lite_cpu02.c".

After both cores are running I call IPCLiteLtoRDataWrite() from core 1 with the 2 event flags IPC_FLAG0 and IPC_FLAG31 as in your example.

That function checks if those event flags are cleared in IpcRegs.IPCFLG before attempting communication with core 2 and returns FAIL if they are set.

Problem is that this check very often fails, and inspecting the IpcRegs.IPCFLG bits confirms that they are set.

I tried to add this right before calling IPCLiteLtoRDataWrite():

    IpcRegs.IPCCLR.bit.IPC0 = 0;
    IpcRegs.IPCCLR.bit.IPC31 = 0;
    test = IpcRegs.IPCFLG.all;

    IPCLiteLtoRDataWrite(...);

and when IPCLiteLtoRDataWrite() fails I can check "test" and see that the event flags are still set in IpcRegs.IPCFLG.

This happens even after power up when no communication (or interrupts) has taken place with core 2 yet.

What am I missing?
Why are the event flags set from the start?
And why will an IPCCLR not clear the events in IPCFLG?

/Michael