Arduino MCP 2515 CAN BUS controller Library glitch?

Im using the CAN Bus shield built as a circuit on a breadboard. It is identical to the shield. Im using the SeedStudio library here.

The problem is the Send sketch does not seem to working properly. I can send the correct data but then i cant stop or send something else.

// demo: CAN-BUS Shield, send data
#include <mcp_can.h>
#include <SPI.h>

// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 9;

MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin

void setup()
{
    Serial.begin(115200);

START_INIT:

    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k
    {
        Serial.println("CAN BUS Shield init ok!");
    }
    else
    {
        Serial.println("CAN BUS Shield init fail");
        Serial.println("Init CAN BUS Shield again");
        delay(100);
        goto START_INIT;
    }
}

unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};
void loop()
{
    // send data:  id = 0x00, standrad frame, data len = 8, stmp: data buf
    CAN.sendMsgBuf(0x00, 0, 8, stmp); //Works fine
        CAN.sendMsgBuf(0x01, 0, 8, stmp); //Does not work, the circuit loops at the first message. 
    delay(100);                       // send data per 100ms
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

The sketch executes the first send command correctly but then does not execute the second send command. All i get is the first (0x00) command on loop. Any insight will be appreciated!

The labels and goto statements are completely useless. There are grown up constructs that perform the same capabilities. Use them!

    CAN.sendMsgBuf(0x00, 0, 8, stmp); //Works fine
        CAN.sendMsgBuf(0x01, 0, 8, stmp); //Does not work, the circuit loops at the first message.

So, what do those arguments mean?

Yes Paul, i know goto statements are frowned upon. I did not write this, it is an example taken from the library.

 CAN.sendMsgBuf(0x00, 0, 8, stmp); //0x00 is the CAN identifier you want to send, 0 signifies a standard CAN frame, 8 specifies the number of bytes to send, stmp is the buffer containing the bytes you are sending.

I did not write this, it is an example taken from the library.

Then you should not expect any more from the library than the crap you are getting.

Have you managed to make it work?
It might be that you attempt to send before the buffer has magaed to send the first message. A delay between them might then help.

Or there is no other node on the network that can ACK your message.

I might find out within a week. I just got a few generic modules myself. :slight_smile:

/Dick