I've successfully set up an Arduino UNO and Microchip MCP2515 CAN Controller and I'm down to one last little issue. I can reliably read messages generated by a Microchip test board, but when I send incremental test messages once a second the test board seems to drop the occasional message. I don't get any transmission errors from my MCP2515, so I'm wondering if this is just a problem with the receiving board/software from Microchip? I would have though it more likely to be something wrong with what I've done, but with no errors being generated I'm at a loss.
Just wondering if anyone else has had similar issues? I'm not going to worry about it too much because my project is hardly mission critical, but it's always nice to know what's going on.
As an overview to my setup:
Hardware:
- UNO, MCP2515/MCP2551, 16MHz ceramic resenator.
- Resenator limits my set up to 125kHz transfer.
- MCP2515DM demo board from Microchip set at its minimum rate of 125kHz.
- Using INT pin on MCP2515 to notify of full RX buffer, empty TX buffer and Errors.
Software:
- Checks INT and reads from RX buffer if full.
- Prints outgoing message to Serial on each successful TX interrupt, (buffer goes to empty - supposedly successful transmission), and never misses a beat.
- Uses millis() not delay() to time TX messages.
- During this normal operation never get an Error interrupt.
- Can force errors by trying a non-matching transfer speed, so I know the Interrupt works.