Hi,
I am using 9s12XEQ384.
I have a CAN master which issues instructions to 24 slaves. The CAN bus length is 400mm and there are 120 Ohm termination resistors on each end of the bus. All slaves run the same firmware. The individual card IDs are setup with a DIP switch.
They are connected at 500 KBaud. The communication is fine. The messages get through and return data is sent. But .....
At power up the master sends a message which all slaves must respond to to detect what CAN IDs are connected. All CAN messages are received under interrupt on both the master and slaves.
I can only get a maximum of 16 responses. If I unplug some of the lower ID address cards, then the higher value IDs are present. So I can confirm that all 24 are responding, but only a maximum of 16 cards.
My CAN acceptance registers are set for Don't Care (0xffff) I am using standard length IDs.
I send my request to respond on CAN ID = 0x0A
I get many responses on CAN ID = 0x0B, but as I said only a maximum of 16 are received.
Am I missing something in the CAN standard? Is this response possible?
Is there a bus overload and I need to assign each a delay before it sends each cards response?
Or am I doing something wrong?
Regards,
Wade Whitehorn