Only one receive message interrupt function will be generated for all the linked mailboxes. And this will be for the last mailbox in the chain. Inside this function ACK for all the linked mailboxes are set. This indicates that you would receive an interrupt only when the last message int he FIFO is received.
OK, thank you! In my current implementation i use a polling mechanism to process my FIFO. Thus, I read the My_CAN_Controller_BUF_SR_REG register for new messages in the last mailbox of my FIFO. Since I linked mailboxes 0, 1, 2 and 3 I read the flag for mailbox with id 3. When I am ready with message processing I set the My_CAN_Controller_RX_ACK_MSG bit for mailbox 3. Then I would expect the FIFO to automatically push the remaining messages in the FIFO one index further so that I can read a 1 in the My_CAN_Controller_BUF_SR_REG for mailbox 3 again.
Every message that I process is sent out afterwards. The first strange thing is, that I need to receive 4 messages (which is equal to my FIFO size) until I get the first interrupt. The second strange thing is that the first message that is sent out is the answer to the 4th message I received. From then on, all is working properly despite the fact that the second, third and fourth message are not answered. Can you explain this behavior?
Thanks in advance!
Can somebody please reply on that? The system still doesn't behave like I expect it to do.