Professional Documents
Culture Documents
h"
#include "mcp_can.h"
#include <SPI.h>
MCP_CAN CAN(10);
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
//reserva 200 bytes para a inputstring
inputString.reserve(200);
pinMode(entrada0,INPUT);
pinMode(entrada1,INPUT);
pinMode(saida0,OUTPUT);
pinMode(saida1,OUTPUT);
pinMode(saida2,OUTPUT);
COMECAR:
if(CAN_OK == CAN.begin(CAN_500KBPS))
Serial.println("CAN init OK!!");
else
{
Serial.println("CAN init FAIL!!");
delay(100);
goto COMECAR;
}
void MCP2515_ISR()
{
if(flag == 0)
flag=1;
}
void loop()
{
// flag de interrupcao inicia leitura
if(flag) // check if get data
{
unsigned char bufffer[3] = {0,0,0};
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf
canID = CAN.getCanId();
if(canID==0)
{Serial.print("canId");
}
else
{
Serial.print("Recebi uma interrupcao do 0x");
Serial.println(canID,HEX);
}
delay(1500);
flag = 0;// clear flag
if(flag)
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data
buf 8
if(k==0)
{
id=id-128;
Serial.print(id);Serial.print(" // "); Serial.print(id,HEX);
Serial.println();
k++;
}
else if (k>0 && k<9)
{
k++;
}
else k=0;
flag=0;// encerra a interrupcao
inputString = "";
}
}
}
void serialEvent()
{
while (Serial.available())
{
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}