Giter Club home page Giter Club logo

seeed_arduino_can's Introduction

Seeed Arduino CAN Build Status

CAN BUS Shield 2-Channel CAN-BUS(FD) Shield
CAN BUS Shield CAN BUS Shield

CAN-BUS is a common industrial bus because of it's long travel distance, medium communication speed and high reliability. It is commonly found on modern machine tools and as an automotive diagnostic bus.

For more information, please refer to CAN-BUS_Shield_V2.0 wiki page and CAN-BUS FD wiki page

License

This software is written by seeed studio and is licensed under The MIT License. Check License.txt for more information.

Contributing to this software is warmly welcomed. You can do this basically by forking, committing modifications and then pulling requests (follow the links above for operating guide). Adding change log and your contact into file header is encouraged. Thanks for your contribution.

Analytics

seeed_arduino_can's People

Contributors

adamayd avatar adamvoss avatar adlerweb avatar ansonhe97 avatar autowp avatar baorepo avatar bykeblast avatar chrishonson avatar gageco avatar hurvajs avatar igough avatar ivankravets avatar jenkinlu001 avatar killingjacky avatar lakshanthad avatar lanselambor avatar latonita avatar m516 avatar markpwoodward avatar maxwelltoo avatar mehtajaghvi avatar ntb001 avatar pillar1989 avatar reeedstudio avatar techie66 avatar thero0t avatar ttlappalainen avatar turmary avatar wangcoolc avatar xboxpro1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

seeed_arduino_can's Issues

Message filtering letting through unwanted ids

There is a problem with message filtering. In the example code set_mask_filter_recv
With the filter and mask settings:

CAN.init_Mask(0, 0, 0x3ff);
CAN.init_Mask(1, 0, 0x3ff);

CAN.init_Filt(0, 0, 0x04);
CAN.init_Filt(1, 0, 0x05);
CAN.init_Filt(2, 0, 0x06);
CAN.init_Filt(3, 0, 0x07);
CAN.init_Filt(4, 0, 0x08);
CAN.init_Filt(5, 0, 0x09);

For some reason in addition to receiving ids 0x040x09 the code also receives 0x4040x409

Raspberry

Hi, it can be connected to raspberry pi 3 ?

Interrupted handling with mcp_can

Hi,

Thank you for merging my changes.

Would you be interested of new class e.g. iMCP_CAN inherited from MCP_CAN, which would have full interrupt handling and buffers as I have on NMEA2000_mcp class? Now I have those handlers build in NMEA2000_mcp class, since MCP_CAN does not have interrupt handling. Other can libraries like due_can and FlexCan has interrupts build in, so I just use them. I thought to add interrupt handling for MCP_CAN, but there might be a problem with memory and code size on smaller boards like Arduino Uno. So making new iMCP_CAN class, it would not had any effect to old installations, but would give simple way to expand system to interrupts.

I could export rather easily my current code from NMEA2000_mcp to new class.

at command?

hi
i am trying to change the baud rate up to 115200 but i have no succes in getting the shield to operate in config mode
First it was the issue of voltage, but i got it in the end
Can someone tell me how do you make the at commands work?

Thanks

standby mode

Hello
maybe somebody can put an example from this library using sleep/standby mode ?

CAN node as transciever

Is it possible to send and receive messages at the same node using this library?

Using separate nodes for Transmitter and Receiver seems to work. But when I combine them into a single node it crashes.

private variable MCP::ext_flg is not properly reset in the MCP_CAN::mcp2515_read_canMsg method`

When the MCP_CAN::readMsgBufID() method is called, the pointer of MCP::ext_flg is passed to MCP_CAN::mcp2515_read_canMsg() method to get the value of the IDE bit (Extended Identifier Flag bit) in the RXBnSIDL register. The corresponding code segment is shown below:

  if ( (tbufdata[MCP_SIDL] & MCP_TXB_EXIDE_M) ==  MCP_TXB_EXIDE_M )
  { 
    /* extended id                  */
    *id = (*id << 2) + (tbufdata[MCP_SIDL] & 0x03);
    *id = (*id << 8) + tbufdata[MCP_EID8];
    *id = (*id << 8) + tbufdata[MCP_EID0];
    *ext = 1;
  }

In the segment, the MCP::ext_flg is set to 1 if the ID is an extended ID. However, the problem is, MCP::ext_flg will not be set to 0 if the ID read by the next call is a standard ID. This could lead to some strange result under the circumstance that, a call to the MCP_CAN::isExtendedFrame() method could return true for a standard frame if it was received right after a extended frame, since the MCP::ext_flg was set to 1 when the extended frame was read while not being reset to 0 for the following standard frame.

A possible and naive solution to this could be as following:

  if ( (tbufdata[MCP_SIDL] & MCP_TXB_EXIDE_M) ==  MCP_TXB_EXIDE_M )
  {
    /* extended id                  */
    *id = (*id << 2) + (tbufdata[MCP_SIDL] & 0x03);
    *id = (*id << 8) + tbufdata[MCP_EID8];
    *id = (*id << 8) + tbufdata[MCP_EID0];
    *ext = 1;
  } else {
    /* standard id */
    *ext = 0;
  }

Old codes not working

Hi,

I just downloaded the new library but my previous codes are not working anymore.
Even the example codes are giving issues.

I dont really know what is the issue but seems like there is one.

Attempting to create an ecuRequest

I have tried to make an ecuRequest which sends a PID to a can network and then receives a message. I got this idea from the demo sketch in this article http://skpang.co.uk/blog/archives/55. I've tried to mimic the ecu_req using this library. Below is what I have so far. The buffer gets filled when I connect it up to my car but it doesnt seem to be the right data. New to github so let me know if I'm doing anything wrong.

/*********************************************************************************************************
** Function name: pidRequest
** Descriptions:
********************************************************************************************************/
char MCP_CAN::pidRequest(unsigned char pid, INT8U
buf,float& engineData)
{
INT8U len = 8;
float engine_data;
uint8_t data[8];
data[0] = 0x02;
data[1] = 0x01;
data[2] = 0x0c;
data[3] = 0x00;
data[4] = 0x00;
data[5] = 0x00;
data[6] = 0x00;
data[7] = 0x00;
//uint8_t *ptr = data;

mcp2515_modifyRegister(MCP_CANCTRL, (1<<7)|(1<<6)|(1<<5), 0); //change mode_mask if doesnt work

 if(sendMsgBuf(0x7DF, 1, 0, 8, data)==CAN_OK) {
   delay(100);


    if(checkReceive()==CAN_MSGAVAIL) {

        if (readMsgBuf(&len, buf)==CAN_OK) {
            //engine_data = ((buf[3]*256)+buf[4])/4;
            Serial.println(buf[0]);
            Serial.println(buf[1]);
            Serial.println(buf[2]);
            Serial.println(buf[3]); 
            Serial.println(buf[4]);
            Serial.println(buf[5]); 
            Serial.println(buf[6]);
            Serial.println(buf[7]);         
                            return 0;
        }
        else{
        return 1;
        }
    }
    else{
    return 2;
    }
 }
 else{
 return 3;
 }

}

Extended CAN Frames

Connecting an Arduino+MCP to the OBDII port of a car which uses extended CAN frames has been a challenge.

The bench test of connecting an Arduino+MCP to another Arduino+MCP works well (using Seeed libraries only for the standard CAN Frame. For extended CAN Frames I had to use Cory Fowler's instead https://github.com/coryjfowler/MCP_CAN_lib).

I have an Arduino+MCP acting as transmitter and another Arduino+MCP acting as a receiver. It works. Now, when I remove the wires that connect the 2 MCPs, the transmitter system is unable to send data, and gives an error message instead. Same happens when I connect the transmitter system to the OBDII port of a car (CAN H to pin 6. CAN L to pin 14).

Is the transmitter waiting for some kind of ACK or what else do I need to consider? (I tried both removing and keeping the terminator resistor on the MCP. Still got the error).

Thanks

Failed to enter configuration mode

This is strange...
mcp2515_modifyRegister(MCP_CANCTRL, MODE_MASK, newmode);
does not seem to change the mode, as the next mcp2515_readRegister() returns a different mode.

If I replace the modifyRegister by
mcp2515_setRegister(MCP_CANCTRL, newmode);
it works..

Wrong CanId

For some reason im receiving the wrong / incorrect CanID's.

ID: 18 should be 418
ID: 8 should be 408
ID: 10 schould be 410
ID: A0 schould be 4A0

Any idea what i did wrong or whats happening

Incorrect mask definition for RTR bit

In the header file "mcp_can_dfs.h", there is a bit mask for the RTR bit defined around line 69 as:

#define MCP_RTR_MASK        0x40                                        // (1<<6) Bit 6

which indicates that the RTR bit is at the 6th bit (bit 5) of the 8bit register address.

However, according to the table "RIGESTER 4-5" on page 30 of the datasheet of MCP2515, the RTR bit is, in fact, at 5th bit (bit 4) of the RXBnIDL register, which means that the correct bit mask for RTR bit should be as following:

#define MCP_RTR_MASK        0x10                                        // (1<<5) Bit 4

The incorrect bit mask could lead to misjudging of a data frame as remote frame if checking the bit with the incorrect mask.

How to edit the value of CRC field in a data frame?

Hello,

I would like to have access and to change the value of CRC sequence of a data frame before sending. Can someone please tell me where in the code is the CRC being generated (the sender), and where it is being read to verify a received frame?

Regards.

1Mbit - really?

have stm32f103 with tja1050 - and I can communicate with rasp

oscilator=16000000
bitrate 1000000 in /etc/network/interfaces
but it is not 1Mb! It is more like ~140Kb (UPDATED: it is 500000bps)
why?

now I try connect arduino uno + mcp2515 + mcp2551 + 8000 oscilator via spi 1Mb - and it doesnt work...

If I change bitrate to 500Kb - it works (< 500 ofcause) but I need 1Mb - what i need to do? is it possible in general?

GMLAN Baudrates

To accommodate use on GMLAN the following baud rates need added

33.33KBPS
95.2KBPS

Canbus reading from a contactless clip

i was wondering if it is also possible to read canbus data with this shield not connected to the odb2 but with a contactless clip (eg cancrocodile) on the C-H and C-L cable?

random fails, caused by unitialized filter registers RXF0..RXF5

Hi all,
i recently opened an issue regarding problems with mcp_can in the NMEA2000 project (see below).

Altough at the first glimpse everything looked right, I ran into the problem, that all messages are rejected.
The library worked only well, if the filters are explicitely switched off (RXMn="11").
In the default mode nothing came in, all was rejected.
The filter masks after init are 0x00000000L and the 6 filters are uninitialized.
I thought "this must be OK", because a nulled mask disables the filter.
But, this is not!
For whatever reason all this works only, if bit EXIDE is set in the filters.
With uninitialized filters the system randomly fails after system start.
Such problems (rejection, altough filters are zeroed) are described in various threads on the Internet.
Took a while for me to find out and also to find the real cause.

Please have a deeper look to the conversation I have had with Timo. There is more information
ttlappalainen/NMEA2000#96

With the described fix my system eventually worked well.
The only question is, does it also run well with standard messages?
Maybe only one or two filters should get an EXIDE bit (????).
That should have to be discussed and tested.
But, definitely ... it no good idea to leave the six filters unitialized in mcp2515_init.

Regards and greetings

Communication between Arduino UNO & Can-Shield

Hello World,
i'm really new to all this stuff, but having lots of fun with that and try to understand. So here's my question, which surely can easily be answered by one of you :)
I'm trying to build up a sketch of the "wiring" of my system-layout, which is no Problem so far.
But actually i'm asking myself, which Pins are used for the communication between the CAN-Shield and an Arduino UNO?
already looked at
https://github.com/SeeedDocument/CAN_BUS_Shield/raw/master/resource/CAN-BUS_Shield_v1.2.pdf
but still not sure, which pins are responsible for the communication?
Referring to the SPI, i think this are MOSI/MISO/SCK/GND on the ICSP terminal on the shield? Am I wrong?

Much Thanks for replying!

kind regards
wurstkaiser

CAN_83K3BPS for 8MHz not defined

CAN.begin(CAN_83k3BPS, MCP_8MHz);
won't work, because in mcp_can.cpp, there is no 83k3BPS case in the select statement for MCP_8MHz.
Also, in mcp_can_dfs.h,

#define MCP_8MHz_83k3BPS_CFG1 (0xxx)
#define MCP_8MHz_83k3BPS_CFG2 (0xxx)
#define MCP_8MHz_83k3BPS_CFG3 (0xxx)

is missing.

Probably forgotten at #49

Init fail when USB host board initialized

I'm running a USB host shield on top of the Seeed CAN board. If I don't initialize the USB shield, CAN works great. If I init the USB shield second, after a successful init of the CAN shield, I get a silent failure of the CAN shield where sending of CAN messages doesn't work. Receive works, but no sending of messages in that case.

If I init the USB shield first, then I get a CAN shield init failure in mcp2515_setCANCTRL_Mode(const INT8U newmode) where it can't set the newmode. The reading of the register doesn't return newmode and thus it fails.

Any thoughts on what's going on here and potential solutions to try? Is this more of a USB host driver question?

Arduino/seeed can bus

Can somebody/anybody tell me how I go about downloading the library for the seeed shield. I was able to download arduino software to my phone then import it to my laptop. But I'm having a hard time with the seeed library.

CAN_83K3BPS vs CAN_83KBPS (keywords.txt)

Hi,
in keywords.txt there is the constant
CAN_83KBPS
defined and that's getting styled as a constant in Arduino IDE.
Shouldn't it be
CAN_83K3BPS
because that's compiling without errors?
The same may be the case for
CAN_31K25BPS

Probably forgotten at #49

Multiple CANBUS

I'm using 3 canbus shields in the car.
one is for 29bit 500kbps ecu data
one is for 11bit regular traffic 500kbps hs-can
and one is for 29bit 33.33kbps b-can

although the high speed can runs fine at 8mhz, i am getting garbage from the 33.33, however, if i drop the spisettings in the library down to 1mhz, the 33.33kbps works fine, but of course, i loose the 8mhz speed of the other

is there a problem with the 33.33kbps speed in the code it has to work on lower mhz? i tried it on the working 8mhz shield same issue until i dropped it to 1mhz, really weird.

right now im testing the library at 1mhz with all 3 canbus links, hopefully can fix the speed issue so i wont probably loose frames at 500kbps

Library Serial CAN_BUS errors

Hi everyone, my first post here.
I've purchased a serial can_bus unit and want to start working with it, but there are errors.
Can i use the one made for SPI?, or do I have to write my own canbus script.
Thank you in advance.

Ps. having also a hard time getting the include paths right in visual studio code, somehow it can't find the files even while i think the paths are included correctly.

`
D:\Paul\Documents\Arduino\libraries\Serial_CAN_Arduino-master\Serial_CAN_Module.cpp: In member function 'unsigned char Serial_CAN::exitSettingMode()':

D:\Paul\Documents\Arduino\libraries\Serial_CAN_Arduino-master\Serial_CAN_Module.cpp:172:31: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

int ret = cmdOk("AT+Q\r\n");

                       ^

D:\Paul\Documents\Arduino\libraries\Serial_CAN_Arduino-master\Serial_CAN_Module.cpp: In member function 'unsigned char Serial_CAN::factorySetting()':

D:\Paul\Documents\Arduino\libraries\Serial_CAN_Arduino-master\Serial_CAN_Module.cpp:286:26: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

 if(cmdOk("AT\r\n"))

                  ^

`

Incorrect rtrBit checking in MCP_CAN::mcp2515_read_canMsg() method implementation

Under current implementation, the RTR bit checking code for the MCP_CAN::mcp2515_read_canMsg() method implementation is done as following:

spi_readwrite(buffer_load_addr);
// mcp2515 has auto-increment of address-pointer
for (i = 0; i < 4; i++) tbufdata[i] = spi_read();

*rtrBit=(tbufdata[3]&0x08 ? 1 : 0 );

According to the datasheet of MCP2515 (please also refer to #62 for the details), the RTR bit is the 5th bit (bit 4) in the RXBnSIDL register. However, since buffer_load_addr is either MCP_READ_RX0 or MCP_READ_RX1. which points to RXBnSIDH register, tbufdata[3], the 4th byte of 4-byte consecutive read, is RXBnEID0 rather than RXBnSIDL, and the bit mask 0x08 is also incorrect either. This makes this RTR bit checking code returns completely incorrect result.

If #62 has been fixed, the proper implementation would be something as the following:

*rtrBit=(tbufdata[MCP_SIDL]&MCP_RTR_MASK ? 1 : 0 );

Reading Messages Incorrectly

I have been using the mcp_can library with the example code to read CAN messages, but when my code reads messages, the ID's and data points are wrong. The code that I have been using is: https://github.com/andrewaggie/MCP_CAN/blob/master/CANTest.ino.

I am using the Diligent PmodCAN CAN-SPI shield, which is being read into a Particle Argon development board. I have verified that the connections between the Diligent shield and the Argon board are correct, but when I flash that code onto the board, the CAN messages read by the Argon board do not match the messages on the bus itself. When I put the board into Loopback mode, the messages come back correctly, but in the ListenOnly or Normal modes, the read messages are incorrect. The messages are being read, but the ID's, format, and data do not match what was received from the main Bus connections.

Can BUS Shield init fail

I am stuck in a loop with the CAN Bus Init fail. I tried a few of the baud rate options (not all of them)
but I still seem to be stuck with this error
Capture

Receiveing extended Identifiers

I have merge the send and receive check files. I am sending a extended ID CAN message without any problems. When I try to receive an extended ID it seems to ignore the message? Any help would be great, here is the code:

#include <SPI.h>
#include "mcp_can.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 = 10;

MCP_CAN CAN(SPI_CS_PIN); // Set CS pin

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

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

}

unsigned char stmp[8] = {0x03,0x22,0x70,0x00,0x00,0x00,0x00,0x00};

void loop()
{
// send data: id = 0x00000000, extended ID, standard frame, data len = 8, stmp: data buf
CAN.sendMsgBuf(0x18DA60F1, 1, 8, stmp);
delay(100); // send data per 100ms

unsigned char len = 0;
unsigned char buf[8];

if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming
  {
    CAN.readMsgBuf(&len, buf);    // read data,  len: data length, buf: data buf
    
    Serial.print("ID:");
    Serial.print(CAN.getCanId(),HEX);
    Serial.print("\, ");
    for(int i = 0; i<len; i++)    // print the data
    {
        Serial.print(buf[i],HEX);
        Serial.print("\, ");
    }
    Serial.println();
 }

}

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

One Shield, Sending & Receiving at "same time" possible?

Hi Guys,
just have a question using the CAN-Shield with an Arduino uno.
For now i know that it is possible to send messages (which already works fine) to control two electric motors.
But when i try to read ALL the messages which the electric motors are sending, most of them (about 15 out of 20) disappear and won't bei displayed in the Console.
But i know from another CAN-sniffer, that these messages definitely were sent.
I tried this with the code from loovee receive_check.

Thanks for reply! And the great work on the code provided.
Wurstkaiser

Mistake in function MCP_CAN::sendMsg()

I believe I have discovered a mistake in the function MCP_CAN::sendMsg(),

in the second do loop

do
{
    uiTimeOut++;        
    res1= mcp2515_readRegister(txbuf_n);                            /* read send buff ctrl reg  */
    res1 = res1 & 0x08;                                     
}while(res1 && (uiTimeOut < TIMEOUTVALUE));   

the input to mcp2515_readRegister should be 'txbuf_n-1' rather than 'txbuf_n', as the current value for txbuf_n is the address of TXBnSIDH register, the register needed to check whether transmission has completed is TXBnCTRL.

Interrupt not proper working

maybe this hint will help someone else

in the sketch example "receive_interrupt" the interrupt is initialised with
attachInterrupt(0, MCP2515_ISR, FALLING); // start interrupt
thats not working for me:
I have to change to
attachInterrupt(digitalPinToInterrupt(0), MCP2515_ISR, FALLING);
digitalPinToInterrupt solve the problem.

by the way:
The interrupt in the scheme for the MCP2515 is on pin 12, not 13. Verison 1.2 is based on SMD.
THO: Pin 12
SMD: pin 13

Send a single bit

Hi,

it's possibile to send a message with only 1 bit? For example I want to send 1 on bit 7.

Thanks

Dual can bus

Can you modify this library to suport two Can bus shield's.
I want to have dual channel can bus like arduino due or teensy 3.6 but with the arduino uno.
Just modify this to have one board with CS on D10 and another on CS D9
for send something like:
CAN1.sendMsgBuf(0x00, 0, 8, stmp1);
CAN2.sendMsgBuf(0x10, 0, 8, stmp2);

Thanks.

readMsgBuf doesn't reset interrupt flag after read buffer in mcp_can.cpp

"MCP2515 RECEIVE FLAGS/INTERRUPTS: When a message is moved into either of the receive buffers, the appropriate RXnIF bit (CANINTF) is set. This bit must be cleared by the MCU in order to allow a new message to be received into the buffer. This bit provides a positive lockout to ensure that the MCU has finished with the message before the MCP2515 attempts to load a new message into the receive buffer."

Code that fixes this problem is attached. See the lines of code with "djc" in the comments.
mcp_can.cpp.zip

Baud Rate Config

Hello,
I have a baud rate that doesn't seem to be an option in the calculator software or other standard tables online. It's a somewhat older system, and the only number I have to go off is 9600 - the value of a setting named Baud Rate in the main software. Any guidance would be much appreciated.
Thank you.

Not compatible with CAN-Bus Shield 1.2

Please support the "old" 1.2 version with this lib. It is in Europe still not availiable and Amazon does still ship the 1.2. So please don't stop supporting it.

Cannot send messages longer than LEN=8

Creating a message with CAN.sendMsgBuf with LEN set larger than 8 does not result in the full message being sent to the bus. 9-13 cuts the data off at 8 bytes. Anything longer than 14 causes very strange behavior.

Cant figure out how to send the rtr message

Hello,

So ive been messing around with the CAN interface and using PCAN software I found that I am unable to send the rtr bit. I have no idea whats wrong, went through documentation and even attempted modifying the library so it would always send the rtr bit but all attempts were unsuccessful.

Heres what I wrote

CAN.sendMsgBuf(0x00000000, 0x00000001, 1, 0x00000008, stmp); 
//id, extended message, rtr, length, data

But that doesnt work and I have no idea where to go from. Any help is much appreciated.

Gage C

8MHz clock

could you add 8MHz clock support? thanks

Only one message id received

Just tried your shield + library, but I only get one message (seems related to motor on/off and motor starter), but nothing when I move the wheel or push the brakes. Any idea why?
Tested on BMW X3.

isRemoteRequest() issue

isRemoteRequest() always give 1 on Ardunio web editor, but on the installed Ardunio IDE works well.

SPI 2nd Port

How do you use the 2nd SPI port with with this library?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.