Hi morgan code is:
#include <Canbus.h>
#include <defaults.h>
#include <global.h>
#include <mcp2515.h>
#include <mcp2515_defs.h>
//********************************Setup Loop*********************************//
void setup() {
Serial.begin(9600);
Serial.println("CAN Write - Testing transmission of CAN Bus messages");
delay(1000);
if(Canbus.init(CANSPEED_500)) //Initialise MCP2515 CAN controller at the specified speed
Serial.println("CAN Init ok");
else
Serial.println("Can't init CAN");
delay(1000);
}
//********************************Main Loop*********************************//
void loop()
{
tCAN message1;
message1.id = 0x1A6; //formatted in HEX
message1.header.rtr = 0;
message1.header.length = 7; //formatted in DEC
message1.data[0] = 0x02;
message1.data[1] = 0x8b;
message1.data[2] = 0xFF;
message1.data[3] = 0x67; //formatted in HEX
message1.data[4] = 0x00;
message1.data[5] = 0x00;
message1.data[6] = 0x1F;
tCAN message2;
message2.id = 0x18F; //formatted in HEX
message2.header.rtr = 0;
message2.header.length = 8; //formatted in DEC
message2.data[0] = 0x02;
message2.data[1] = 0x8b;
message2.data[2] = 0xFF;
message2.data[3] = 0x67; //formatted in HEX
message2.data[4] = 0x01;
message2.data[5] = 0x8D;
message2.data[6] = 0x1F;
message2.data[7] = 0x1F;
mcp2515_bit_modify(CANCTRL, (1<<REQOP2)|(1<<REQOP1)|(1<<REQOP0), 0);
mcp2515_send_message(&message1);
delay(10000);
mcp2515_send_message(&message2);
delay(1000);
}
Found a solution to software reset and start the loop again this works.
void loop()
{
tCAN message;
message.id = 0x1A6; //formatted in HEX
message.header.rtr = 0;
message.header.length = 7; //formatted in DEC
message.data[0] = 0x02;
message.data[1] = 0x8b;
message.data[2] = 0xFF;
message.data[3] = 0x67; //formatted in HEX
message.data[4] = 0x00;
message.data[5] = 0x00;
message.data[6] = 0x1F;
tCAN message2;
message2.id = 0x18F; //formatted in HEX
message2.header.rtr = 0;
message2.header.length = 8; //formatted in DEC
message2.data[0] = 0x02;
message2.data[1] = 0x8b;
message2.data[2] = 0xFF;
message2.data[3] = 0x67; //formatted in HEX
message2.data[4] = 0x01;
message2.data[5] = 0x8D;
message2.data[6] = 0x1F;
message2.data[7] = 0x1F;
mcp2515_bit_modify(CANCTRL, (1<<REQOP2)|(1<<REQOP1)|(1<<REQOP0), 0);
mcp2515_send_message(&message);
Serial.print(message.id);
delay(10);
mcp2515_send_message(&message2);
Serial.print(message2.id);
delay(10);
software_Reset();
}
void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers
{
asm volatile (" jmp 0");
}
I think my problem has something to do with resetting the mcp2525.
Thanks