5 Replies Latest reply on May 11, 2018 9:43 AM by rlos

    Triggering an interrupt using IPC notify

    danny.shavit_3138466

      Hi,

       

      I am trying to trigger an interrupt on MC4 using IPC notify on CM0+.

      I am failing to verify that the interrupt is indeed triggered on CM4.

       

      Here is what I am doing:

      • I am using the Dual Core Shared Memory example code as my basic code.
      • On MC0+ (main_cm4.c):
        • Enabling interrupts: __enable_irq();
        • Mask (enable) interrupts:

                          IPC_INTR_STRUCT_Type *myIpcHandleInt;

                          myIpcHandleInt = Cy_IPC_Drv_GetIntrBaseAddr(MY_IPC_CHANNEL);

                          Cy_IPC_Drv_SetInterruptMask (myIpcHandleInt, 0xFFFF, 0xFFFF);

       

        • Sending 1 as the notification event interrupt to Cy_IPC_Drv_SendMsgPtr(): Cy_IPC_Drv_SendMsgPtr(myIpcHandle, 0x1ul, &sharedVar)
      • On CM4 (main_cm4.c):
        • Enabling interrupts: __enable_irq();
        • Enabling IPC IRQ: NVIC_EnableIRQ(41); // 41 denotes CPUSS Inter Process Communication Interrupt #0
        • Mask (enable) interrupts:

                     IPC_INTR_STRUCT_Type *myIpcHandleInt;

                     myIpcHandleInt = Cy_IPC_Drv_GetIntrBaseAddr(MY_IPC_CHANNEL);

                     Cy_IPC_Drv_SetInterruptMask (myIpcHandleInt, 0xFFFF, 0xFFFF);

       

       

      I am trying to verify the interrupt indeed occurred by using the debugger on CM4, and placing a break-point at the Default_Handler (startup_psoc63_cm4.S).

       

      What am I missing?

       

      ** The project is attached.

      Use CE216795_DualCoreSharedMemory01.cyprj as the project file.

       

      Thanks