From 95e3d850468a4697a6303a916ad94e4075b8dbba Mon Sep 17 00:00:00 2001 From: Gage Coprivnicar Date: Thu, 22 Jun 2017 13:25:01 -0600 Subject: [PATCH 1/4] fixed rtr bit issue should be good to go --- mcp_can.cpp | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/mcp_can.cpp b/mcp_can.cpp index e66a4bc..8a1c92e 100644 --- a/mcp_can.cpp +++ b/mcp_can.cpp @@ -106,7 +106,7 @@ void MCP_CAN::mcp2515_readRegisterS(const byte address, byte values[], const byt spi_readwrite(MCP_READ); spi_readwrite(address); // mcp2515 has auto-increment of address-pointer - for(i=0; i Date: Thu, 22 Jun 2017 13:33:48 -0600 Subject: [PATCH 2/4] forgot to comment out some lines --- mcp_can.cpp | 6 +++- mcp_can.h | 98 ++++++++++++++++++++++++++--------------------------- 2 files changed, 54 insertions(+), 50 deletions(-) diff --git a/mcp_can.cpp b/mcp_can.cpp index 8a1c92e..3aad156 100644 --- a/mcp_can.cpp +++ b/mcp_can.cpp @@ -534,6 +534,8 @@ void MCP_CAN::mcp2515_write_canMsg(const byte buffer_sidh_addr, int rtrBit) byte mcp_addr; mcp_addr = buffer_sidh_addr; mcp2515_setRegisterS(mcp_addr+5, dta, dta_len); // write data bytes + Serial.print("RTR: "); + Serial.println(rtrBit); if(rtrBit == 1) // if RTR set bit in byte { dta_len |= MCP_RTR_MASK; @@ -829,7 +831,9 @@ byte MCP_CAN::sendMsg(int rtrBit) byte MCP_CAN::sendMsgBuf(unsigned long id, byte ext, byte rtr, byte len, byte *buf) { setMsg(id, ext, len, rtr, buf); - return sendMsg(1); + // Serial.print("RTR00: "); + // Serial.println(rtr, HEX); + return sendMsg(rtr); } /********************************************************************************************************* diff --git a/mcp_can.h b/mcp_can.h index 40d92af..19de0e2 100644 --- a/mcp_can.h +++ b/mcp_can.h @@ -4,9 +4,9 @@ Author:Loovee (loovee@seeed.cc) 2014-1-16 - - Contributor: - + + Contributor: + Cory J. Fowler Latonita Woodward1 @@ -20,7 +20,7 @@ Adlerweb Btetz Hurvajs - + The MIT License (MIT) Copyright (c) 2013 Seeed Technology Inc. @@ -53,8 +53,8 @@ class MCP_CAN { private: - - byte ext_flg; // identifier xxxID + + byte ext_flg; // identifier xxxID // either extended (the 29 LSB) or standard (the 11 LSB) unsigned long can_id; // can id byte dta_len; // data length @@ -64,73 +64,73 @@ class MCP_CAN byte SPICS; /* -* mcp2515 driver function +* mcp2515 driver function */ private: - void mcp2515_reset(void); // reset mcp2515 + void mcp2515_reset(void); // reset mcp2515 - byte mcp2515_readRegister(const byte address); // read mcp2515's register - - void mcp2515_readRegisterS(const byte address, - byte values[], + byte mcp2515_readRegister(const byte address); // read mcp2515's register + + void mcp2515_readRegisterS(const byte address, + byte values[], const byte n); - void mcp2515_setRegister(const byte address, // set mcp2515's register + void mcp2515_setRegister(const byte address, // set mcp2515's register const byte value); - void mcp2515_setRegisterS(const byte address, // set mcp2515's registers + void mcp2515_setRegisterS(const byte address, // set mcp2515's registers const byte values[], const byte n); - + void mcp2515_initCANBuffers(void); - - void mcp2515_modifyRegister(const byte address, // set bit of one register + + void mcp2515_modifyRegister(const byte address, // set bit of one register const byte mask, const byte data); - byte mcp2515_readStatus(void); // read mcp2515's Status - byte mcp2515_setCANCTRL_Mode(const byte newmode); // set mode - byte mcp2515_configRate(const byte canSpeed); // set boadrate - byte mcp2515_init(const byte canSpeed); // mcp2515init + byte mcp2515_readStatus(void); // read mcp2515's Status + byte mcp2515_setCANCTRL_Mode(const byte newmode); // set mode + byte mcp2515_configRate(const byte canSpeed); // set boadrate + byte mcp2515_init(const byte canSpeed); // mcp2515init - void mcp2515_write_id(const byte mcp_addr, // write can id - const byte ext, - const unsigned long id); + void mcp2515_write_id( const byte mcp_addr, // write can id + const byte ext, + const unsigned long id ); - void mcp2515_read_id(const byte mcp_addr, // read can id - byte* ext, - unsigned long* id); + void mcp2515_read_id( const byte mcp_addr, // read can id + byte* ext, + unsigned long* id ); - void mcp2515_write_canMsg(const byte buffer_sidh_addr); // write can msg - void mcp2515_read_canMsg(const byte buffer_sidh_addr); // read can msg - void mcp2515_start_transmit(const byte mcp_addr); // start transmit - byte mcp2515_getNextFreeTXBuf(byte *txbuf_n); // get Next free txbuf + void mcp2515_write_canMsg( const byte buffer_sidh_addr, int rtrBit ); // write can msg + void mcp2515_read_canMsg( const byte buffer_sidh_addr); // read can msg + void mcp2515_start_transmit(const byte mcp_addr); // start transmit + byte mcp2515_getNextFreeTXBuf(byte *txbuf_n); // get Next free txbuf /* * can operator function -*/ +*/ - byte setMsg(unsigned long id, byte ext, byte len, byte rtr, byte *pData); // set message - byte setMsg(unsigned long id, byte ext, byte len, byte *pData); // set message - byte clearMsg(); // clear all message to zero - byte readMsg(); // read message - byte sendMsg(); // send message + byte setMsg(unsigned long id, byte ext, byte len, byte rtr, byte *pData); // set message + byte setMsg(unsigned long id, byte ext, byte len, byte *pData); // set message + byte clearMsg(); // clear all message to zero + byte readMsg(); // read message + byte sendMsg(int rtrBit); // send message public: MCP_CAN(byte _CS); - byte begin(byte speedset); // init can - byte init_Mask(byte num, byte ext, unsigned long ulData); // init Masks - byte init_Filt(byte num, byte ext, unsigned long ulData); // init filters - byte sendMsgBuf(unsigned long id, byte ext, byte rtr, byte len, byte *buf); // send buf - byte sendMsgBuf(unsigned long id, byte ext, byte len, byte *buf); // send buf - byte readMsgBuf(byte *len, byte *buf); // read buf - byte readMsgBufID(unsigned long *ID, byte *len, byte *buf); // read buf with object ID - byte checkReceive(void); // if something received - byte checkError(void); // if something error - unsigned long getCanId(void); // get can id when receive - byte isRemoteRequest(void); // get RR flag when receive - byte isExtendedFrame(void); // did we recieve 29bit frame? + byte begin(byte speedset); // init can + byte init_Mask(byte num, byte ext, unsigned long ulData); // init Masks + byte init_Filt(byte num, byte ext, unsigned long ulData); // init filters + byte sendMsgBuf(unsigned long id, byte ext, byte rtr, byte len, byte *buf); // send buf + // byte sendMsgBuf(unsigned long id, byte ext, byte len, byte *buf); // send buf + byte readMsgBuf(byte *len, byte *buf); // read buf + byte readMsgBufID(unsigned long *ID, byte *len, byte *buf); // read buf with object ID + byte checkReceive(void); // if something received + byte checkError(void); // if something error + unsigned long getCanId(void); // get can id when receive + byte isRemoteRequest(void); // get RR flag when receive + byte isExtendedFrame(void); // did we recieve 29bit frame? }; #endif From 6be2ba4b1d92cf49d21239f52298cf4c034bcde2 Mon Sep 17 00:00:00 2001 From: Gage Coprivnicar Date: Thu, 22 Jun 2017 13:41:16 -0600 Subject: [PATCH 3/4] removed unecessary lines --- mcp_can.cpp | 4 ++-- mcp_can.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mcp_can.cpp b/mcp_can.cpp index 3aad156..fe57aeb 100644 --- a/mcp_can.cpp +++ b/mcp_can.cpp @@ -534,8 +534,8 @@ void MCP_CAN::mcp2515_write_canMsg(const byte buffer_sidh_addr, int rtrBit) byte mcp_addr; mcp_addr = buffer_sidh_addr; mcp2515_setRegisterS(mcp_addr+5, dta, dta_len); // write data bytes - Serial.print("RTR: "); - Serial.println(rtrBit); + // Serial.print("RTR: "); + // Serial.println(rtrBit); if(rtrBit == 1) // if RTR set bit in byte { dta_len |= MCP_RTR_MASK; diff --git a/mcp_can.h b/mcp_can.h index 19de0e2..2842e88 100644 --- a/mcp_can.h +++ b/mcp_can.h @@ -123,7 +123,7 @@ public: byte init_Mask(byte num, byte ext, unsigned long ulData); // init Masks byte init_Filt(byte num, byte ext, unsigned long ulData); // init filters byte sendMsgBuf(unsigned long id, byte ext, byte rtr, byte len, byte *buf); // send buf - // byte sendMsgBuf(unsigned long id, byte ext, byte len, byte *buf); // send buf + byte sendMsgBuf(unsigned long id, byte ext, byte len, byte *buf); // send buf byte readMsgBuf(byte *len, byte *buf); // read buf byte readMsgBufID(unsigned long *ID, byte *len, byte *buf); // read buf with object ID byte checkReceive(void); // if something received From 916bfb49bf5d5abeacd96888d04caf99e3a43c76 Mon Sep 17 00:00:00 2001 From: Gage Coprivnicar Date: Mon, 26 Jun 2017 16:12:33 -0600 Subject: [PATCH 4/4] more edits to the lib --- mcp_can.cpp | 2 +- mcp_can.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mcp_can.cpp b/mcp_can.cpp index fe57aeb..f42dc08 100644 --- a/mcp_can.cpp +++ b/mcp_can.cpp @@ -902,7 +902,7 @@ byte MCP_CAN::readMsgBuf(byte *len, byte buf[]) ** Function name: readMsgBufID ** Descriptions: read message buf and can bus source ID *********************************************************************************************************/ -byte MCP_CAN::readMsgBufID(unsigned long *ID, byte *len, byte buf[]) +byte MCP_CAN::readMsgBufID(byte *ID, byte *len, byte buf[]) { byte rc; rc = readMsg(); diff --git a/mcp_can.h b/mcp_can.h index 2842e88..7a9bf88 100644 --- a/mcp_can.h +++ b/mcp_can.h @@ -125,7 +125,7 @@ public: byte sendMsgBuf(unsigned long id, byte ext, byte rtr, byte len, byte *buf); // send buf byte sendMsgBuf(unsigned long id, byte ext, byte len, byte *buf); // send buf byte readMsgBuf(byte *len, byte *buf); // read buf - byte readMsgBufID(unsigned long *ID, byte *len, byte *buf); // read buf with object ID + byte readMsgBufID(byte *ID, byte *len, byte *buf); // read buf with object ID byte checkReceive(void); // if something received byte checkError(void); // if something error unsigned long getCanId(void); // get can id when receive