Hi All
Imagine you have a CAN node with a CAN transmit MBOX with a message (CAN ID 256) that has be triggered to send (TRS=1), but is waiting for other CAN nodes with lower CAN IDs to send first.
Now the same node adds a new message to another message box with a lower CAN ID 64 (higher priority) and a higher TPL. Should the new message CAN ID 64 be transmitted before the CAN ID 256?????
Here is my real world test:
I am running a 1MHz CAN network with 9 nodes consisting of 28335 and 2809 micros. The bus time usage is around 60%. All messages use std 11 bit identifiers and 8 byte data fields
The master node does not use any CAN interrupts
The master node transmits the following messages
CAN_ID=64(lowest ID on bus), MBOX=21, TPL=31(highest), TX_RATE=1mS (time critical)
CAN_ID=256, MBOX=23, TPL=26, TX_RATE=5mS
CAN_ID=257, MBOX=24, TPL=26, TX_RATE=5mS
CAN_ID=258, MBOX=25, TPL=26, TX_RATE=5mS
There are other nodes on the bus transmitting many messages with CAN IDs in the range of 65-229, meaning that MBOX23-25 on the master node have to wait to send
CAN ID 64 is usually sent at the correct rate, but occasionally it gets delayed by up to ~600uS. The TRS bit is set at the correct time but it takes too long for the TA bit to be set
If I disable other CAN messages from this node (MBOX23-25), but keep all other node traffic the same, the CAN ID 64 transmit rate is always correct
It appears that if lower priority MBOXs are triggered first but are pending, they are delaying the high priority ID64 message. Does this sound correct??
Thanks
Brent
Thanks
Brent