Hi all,
I am unsure about how the CAN interrupt works if there are more than one message objects are marked for interrupt. Unfortunately all CAN samples are quite simplistic with only one message object per direction.
We have disable interrupts in our program flow, so it can happen than the interrupt routine for CAN0INT will be serviced after multiple message objects were sent. In the service routine the flags for the latest object (interrupt cause INT0ID) and the service routine are cleared:
CAN_clearInterruptStatus(CANIF_CAN_BASE, intCause); CAN_clearGlobalInterruptStatus(CANIF_CAN_BASE, CAN_GLOBAL_INT_CANINT0); Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP9);
Is it then expected that the ISR will be called again, as other message object will keep CAN0INT high? Or do we need to loop until INT0ID return 0?
I would expect the ISR to be called again according to Figure 3-2. Interrupt Propagation Path and Figure 21-8. CAN Interrupt Topology 2 (both in tech ref of F28002x).
Thanks a lot,
Andreas