CAN bus programm code not getting compile

Dear friends following programming code not getting compile... please give suggestion

Arduino: 1.8.10 (Windows 10), Board: "Arduino Uno"

09_08_2022_receive_ready_program:11:9: error: cannot declare variable 'CAN0' to be of abstract type 'MCP_CAN'

MCP_CAN CAN0(10);

     ^~~~

In file included from C:\Users\Administrator\Desktop\UPS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:2:0:

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:55:7: note: because the following virtual functions are pure within 'MCP_CAN':

class MCP_CAN

   ^~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:58:18: note: virtual void MCP_CAN::enableTxInterrupt(bool)

 virtual void enableTxInterrupt(bool enable = true) = 0;                             // enable transmit interrupt

              ^~~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:59:18: note: virtual void MCP_CAN::reserveTxBuffers(byte)

 virtual void reserveTxBuffers(byte nTxBuf = 0) = 0;

              ^~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:60:18: note: virtual byte MCP_CAN::getLastTxBuffer()

 virtual byte getLastTxBuffer() = 0;

              ^~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:65:18: note: virtual byte MCP_CAN::begin(uint32_t, byte)

 virtual byte begin(uint32_t speedset, const byte clockset) = 0;                     // init can

              ^~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:66:18: note: virtual byte MCP_CAN::init_Mask(byte, byte, long unsigned int)

 virtual byte init_Mask(byte num, byte ext, unsigned long ulData) = 0;               // init Masks

              ^~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:67:18: note: virtual byte MCP_CAN::init_Filt(byte, byte, long unsigned int)

 virtual byte init_Filt(byte num, byte ext, unsigned long ulData) = 0;               // init filters

              ^~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:68:18: note: virtual void MCP_CAN::setSleepWakeup(byte)

 virtual void setSleepWakeup(byte enable) = 0;                                       // Enable or disable the wake up interrupt

              ^~~~~~~~~~~~~~

In file included from C:\Users\Administrator\Desktop\UPS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:2:0:

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:70:18: note: virtual byte MCP_CAN::sleep()

 virtual byte sleep() = 0;                                                           // Put the MCP2515 in sleep mode

              ^~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:71:18: note: virtual byte MCP_CAN::wake()

 virtual byte wake() = 0;                                                            // Wake MCP2515 manually from sleep

              ^~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:72:18: note: virtual byte MCP_CAN::setMode(byte)

 virtual byte setMode(byte opMode) = 0;                                              // Set operational mode

              ^~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:73:18: note: virtual byte MCP_CAN::getMode()

 virtual byte getMode() = 0;                                                         // Get operational mode

              ^~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:74:18: note: virtual byte MCP_CAN::checkError(uint8_t*)

 virtual byte checkError(uint8_t* err_ptr = NULL) = 0;                               // if something error

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:77:18: note: virtual byte MCP_CAN::checkReceive()

 virtual byte checkReceive(void) = 0;                                                // if something received

              ^~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:78:18: note: virtual byte MCP_CAN::readMsgBufID(byte, volatile long unsigned int*, volatile byte*, volatile byte*, volatile byte*, volatile byte*)

 virtual byte readMsgBufID(byte status,

              ^~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:82:18: note: virtual byte MCP_CAN::readMsgBufID(long unsigned int*, byte*, byte*)

 virtual byte readMsgBufID(unsigned long *ID, byte *len, byte *buf) = 0;

              ^~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:83:18: note: virtual byte MCP_CAN::readMsgBuf(byte*, byte*)

 virtual byte readMsgBuf(byte *len, byte *buf) = 0;

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:91:18: note: virtual byte MCP_CAN::trySendMsgBuf(long unsigned int, byte, byte, byte, const byte*, byte)

 virtual byte trySendMsgBuf(unsigned long id, byte ext, byte rtr,

              ^~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:93:18: note: virtual byte MCP_CAN::sendMsgBuf(byte, long unsigned int, byte, byte, byte, const volatile byte*)

 virtual byte sendMsgBuf(byte status, unsigned long id, byte ext, byte rtr,

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:95:18: note: virtual byte MCP_CAN::sendMsgBuf(long unsigned int, byte, byte, byte, const byte*, bool)

 virtual byte sendMsgBuf(unsigned long id, byte ext, byte rtrBit,

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:98:18: note: virtual void MCP_CAN::clearBufferTransmitIfFlags(byte)

 virtual void clearBufferTransmitIfFlags(byte flags = 0) = 0;                        // Clear transmit flags according to status

              ^~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:99:18: note: virtual byte MCP_CAN::readRxTxStatus()

 virtual byte readRxTxStatus(void) = 0;                                              // read has something send or received

              ^~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:100:18: note: virtual byte MCP_CAN::checkClearRxStatus(byte*)

 virtual byte checkClearRxStatus(byte *status) = 0;                                  // read and clear and return first found rx status bit

              ^~~~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:101:18: note: virtual byte MCP_CAN::checkClearTxStatus(byte*, byte)

 virtual byte checkClearTxStatus(byte *status, byte iTxBuf = 0xff) = 0;              // read and clear and return first found or buffer specified tx status bit

              ^~~~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:102:18: note: virtual bool MCP_CAN::mcpPinMode(byte, byte)

 virtual bool mcpPinMode(const byte pin, const byte mode) = 0;                       // switch supported pins between HiZ, interrupt, output or input

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:103:18: note: virtual bool MCP_CAN::mcpDigitalWrite(byte, byte)

 virtual bool mcpDigitalWrite(const byte pin, const byte mode) = 0;                  // write HIGH or LOW to RX0BF/RX1BF

              ^~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:104:18: note: virtual byte MCP_CAN::mcpDigitalRead(byte)

 virtual byte mcpDigitalRead(const byte pin) = 0;                                    // read HIGH or LOW from supported pins

              ^~~~~~~~~~~~~~

C:\Users\Administrator\Desktop\UPS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino: In function 'void setup()':

09_08_2022_receive_ready_program:19:17: error: 'MCP_ANY' was not declared in this scope

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)

             ^~~~~~~

C:\Users\Administrator\Desktop\UPS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:19:17: note: suggested alternative: 'MCP_CAN'

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)

             ^~~~~~~

             MCP_CAN

09_08_2022_receive_ready_program:19:39: error: 'MCP_16MHZ' was not declared in this scope

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)

                                   ^~~~~~~~~

C:\Users\Administrator\Desktop\UPS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:19:39: note: suggested alternative: 'MCP_16MHz'

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)

                                   ^~~~~~~~~

                                   MCP_16MHz

09_08_2022_receive_ready_program:24:14: error: 'MCP_NORMAL' was not declared in this scope

CAN0.setMode(MCP_NORMAL);

          ^~~~~~~~~~

C:\Users\Administrator\Desktop\UPS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:24:14: note: suggested alternative: 'MCP_NO_MHz'

CAN0.setMode(MCP_NORMAL);

          ^~~~~~~~~~

          MCP_NO_MHz

C:\Users\Administrator\Desktop\UPS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino: In function 'void loop()':

09_08_2022_receive_ready_program:36:39: error: no matching function for call to 'MCP_CAN::readMsgBuf(long unsigned int*, unsigned char*, unsigned char [8])'

 CAN0.readMsgBuf(&rxId, &len, rxBuf);

                                   ^

In file included from C:\Users\Administrator\Desktop\UPS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:2:0:

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:83:18: note: candidate: virtual byte MCP_CAN::readMsgBuf(byte*, byte*)

 virtual byte readMsgBuf(byte *len, byte *buf) = 0;

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:83:18: note: candidate expects 2 arguments, 3 provided

Multiple libraries were found for "mcp_can.h"
Used: C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3
Multiple libraries were found for "SPI.h"
Used: C:\Users\Administrator\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\libraries\SPI
exit status 1
cannot declare variable 'CAN0' to be of abstract type 'MCP_CAN'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Your topic was MOVED to its current forum category as it is more suitable than the original

Hi, @krushna137
Can you please post your code?

To add code please click this link;

What model Arduino controller are you using?

Thanks.. Tom... :smiley: :+1: :coffee: :australia:

Which code?
Please show your code in full

It looks like you are using the wrong library or using it incorrectly. Look at the examples that came with the library to see how to use it.

#include <mcp_can.h>
#include <SPI.h>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
char msgString[128];

#define CAN0_INT 2
MCP_CAN CAN0(10);

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

else
Serial.println("Error Initializing MCP2515...");

CAN0.setMode(MCP_NORMAL);

pinMode(CAN0_INT,INPUT);

Serial.println("MCP2515 Library Receive Example");

}

void loop()
{
if(!digitalRead(CAN0_INT))
{
CAN0.readMsgBuf(&rxId, &len, rxBuf);

if((rxId & 0x80000000) == 0x80000000)
sprintf(msgString, "Extended ID: 0x%.81X DLC: %Id Data:", (rxId & 0x1FFFFFFF), len);
else
sprintf(msgString, "Standard ID: 0x%.31X DLC: %Id Data:",rxId, len);

Serial.print(msgString);

if((rxId & 0x40000000) == 0x40000000){
sprintf(msgString, "REMOTE REQUEST FRAME");
Serial.print(msgString);
} else {
for(byte i = 0; i<len; i++) {
sprintf(msgString, "0x%.2X",rxBuf[i]);
Serial.print(msgString);

}
}
Serial.println();
}}

Im using Arduino UNO with MCP2515 CAN bus Module

Hi, @krushna137
To add code please click this link;

Also before posting, hit [ CTRL] [ T ] keys to auto format your code with indents to show function groups.

Thanks.. Tom... :smiley: :+1: :coffee: :australia:

Here is one big error:

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

  else
    Serial.println("Error Initializing MCP2515...");

Where is the 'if' that is supposed to go with that 'else'?!?

And another mistake.

long unsigned int rxId;

    if ((rxId & 0x80000000) == 0x80000000)
      sprintf(msgString, "Extended ID: 0x%.81X DLC: %Id Data:", (rxId & 0x1FFFFFFF), len);
    else
      sprintf(msgString, "Standard ID: 0x%.31X DLC: %Id Data:", rxId, len);

The "%X" format is for an 'int' value. You are passing an 'unsigned long' value. My guess is that you didn't intend your fields to be 81 and 31 bytes wide but mistook 'l' for '1' and meant "0x%.8lX" and "0x%.3lX". The 'l' (L) is for 'long'.

The "%Id" format does not make sense. You are passing an 'unsigned char' value. My guess is that you meant "%d" (decimal integer).

#include <mcp_can.h>
#include <SPI.h>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
char msgString[128];

#define CAN0_INT 2
MCP_CAN CAN0(10);

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

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)
Serial.println("MCP2515 Initialised Sucessfully!");
else
Serial.println("Error Initializing MCP2515...");

CAN0.setMode(CAN_NORMAL);

pinMode(CAN0_INT,INPUT);

Serial.println("MCP2515 Library Receive Example");

}

void loop()
{
if(!digitalRead(CAN0_INT))
{
CAN0.readMsgBuf(&rxId, &len, rxBuf);
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK)

if((rxId & 0x80000000) == 0x80000000)
sprintf(msgString, "Extended ID: 0x%.8lX DLC: %Id Data:", (rxId & 0x1FFFFFFF), len);
else
sprintf(msgString, "Standard ID: 0x%.3lX DLC: %Id Data:",rxId, len);

Serial.print(msgString);

if((rxId & 0x40000000) == 0x40000000){
sprintf(msgString, "REMOTE REQUEST FRAME");
Serial.print(msgString);
} else {
for(byte i = 0; i<len; i++) {
sprintf(msgString, "0x%.2X",rxBuf[i]);
Serial.print(msgString);

}
}
Serial.println();
}}

still issue not resolved..

Arduino: 1.8.19 (Windows 10), Board: "Arduino Uno"

09_08_2022_receive_ready_program:11:9: error: cannot declare variable 'CAN0' to be of abstract type 'MCP_CAN'

MCP_CAN CAN0(10);

     ^~~~

In file included from C:\Users\Administrator\Desktop\BMS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:2:0:

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:55:7: note: because the following virtual functions are pure within 'MCP_CAN':

class MCP_CAN

   ^~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:58:18: note: virtual void MCP_CAN::enableTxInterrupt(bool)

 virtual void enableTxInterrupt(bool enable = true) = 0;                             // enable transmit interrupt

              ^~~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:59:18: note: virtual void MCP_CAN::reserveTxBuffers(byte)

 virtual void reserveTxBuffers(byte nTxBuf = 0) = 0;

              ^~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:60:18: note: virtual byte MCP_CAN::getLastTxBuffer()

 virtual byte getLastTxBuffer() = 0;

              ^~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:65:18: note: virtual byte MCP_CAN::begin(uint32_t, byte)

 virtual byte begin(uint32_t speedset, const byte clockset) = 0;                     // init can

              ^~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:66:18: note: virtual byte MCP_CAN::init_Mask(byte, byte, long unsigned int)

 virtual byte init_Mask(byte num, byte ext, unsigned long ulData) = 0;               // init Masks

              ^~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:67:18: note: virtual byte MCP_CAN::init_Filt(byte, byte, long unsigned int)

 virtual byte init_Filt(byte num, byte ext, unsigned long ulData) = 0;               // init filters

              ^~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:68:18: note: virtual void MCP_CAN::setSleepWakeup(byte)

 virtual void setSleepWakeup(byte enable) = 0;                                       // Enable or disable the wake up interrupt

              ^~~~~~~~~~~~~~

In file included from C:\Users\Administrator\Desktop\BMS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:2:0:

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:70:18: note: virtual byte MCP_CAN::sleep()

 virtual byte sleep() = 0;                                                           // Put the MCP2515 in sleep mode

              ^~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:71:18: note: virtual byte MCP_CAN::wake()

 virtual byte wake() = 0;                                                            // Wake MCP2515 manually from sleep

              ^~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:72:18: note: virtual byte MCP_CAN::setMode(byte)

 virtual byte setMode(byte opMode) = 0;                                              // Set operational mode

              ^~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:73:18: note: virtual byte MCP_CAN::getMode()

 virtual byte getMode() = 0;                                                         // Get operational mode

              ^~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:74:18: note: virtual byte MCP_CAN::checkError(uint8_t*)

 virtual byte checkError(uint8_t* err_ptr = NULL) = 0;                               // if something error

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:77:18: note: virtual byte MCP_CAN::checkReceive()

 virtual byte checkReceive(void) = 0;                                                // if something received

              ^~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:78:18: note: virtual byte MCP_CAN::readMsgBufID(byte, volatile long unsigned int*, volatile byte*, volatile byte*, volatile byte*, volatile byte*)

 virtual byte readMsgBufID(byte status,

              ^~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:82:18: note: virtual byte MCP_CAN::readMsgBufID(long unsigned int*, byte*, byte*)

 virtual byte readMsgBufID(unsigned long *ID, byte *len, byte *buf) = 0;

              ^~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:83:18: note: virtual byte MCP_CAN::readMsgBuf(byte*, byte*)

 virtual byte readMsgBuf(byte *len, byte *buf) = 0;

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:91:18: note: virtual byte MCP_CAN::trySendMsgBuf(long unsigned int, byte, byte, byte, const byte*, byte)

 virtual byte trySendMsgBuf(unsigned long id, byte ext, byte rtr,

              ^~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:93:18: note: virtual byte MCP_CAN::sendMsgBuf(byte, long unsigned int, byte, byte, byte, const volatile byte*)

 virtual byte sendMsgBuf(byte status, unsigned long id, byte ext, byte rtr,

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:95:18: note: virtual byte MCP_CAN::sendMsgBuf(long unsigned int, byte, byte, byte, const byte*, bool)

 virtual byte sendMsgBuf(unsigned long id, byte ext, byte rtrBit,

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:98:18: note: virtual void MCP_CAN::clearBufferTransmitIfFlags(byte)

 virtual void clearBufferTransmitIfFlags(byte flags = 0) = 0;                        // Clear transmit flags according to status

              ^~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:99:18: note: virtual byte MCP_CAN::readRxTxStatus()

 virtual byte readRxTxStatus(void) = 0;                                              // read has something send or received

              ^~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:100:18: note: virtual byte MCP_CAN::checkClearRxStatus(byte*)

 virtual byte checkClearRxStatus(byte *status) = 0;                                  // read and clear and return first found rx status bit

              ^~~~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:101:18: note: virtual byte MCP_CAN::checkClearTxStatus(byte*, byte)

 virtual byte checkClearTxStatus(byte *status, byte iTxBuf = 0xff) = 0;              // read and clear and return first found or buffer specified tx status bit

              ^~~~~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:102:18: note: virtual bool MCP_CAN::mcpPinMode(byte, byte)

 virtual bool mcpPinMode(const byte pin, const byte mode) = 0;                       // switch supported pins between HiZ, interrupt, output or input

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:103:18: note: virtual bool MCP_CAN::mcpDigitalWrite(byte, byte)

 virtual bool mcpDigitalWrite(const byte pin, const byte mode) = 0;                  // write HIGH or LOW to RX0BF/RX1BF

              ^~~~~~~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:104:18: note: virtual byte MCP_CAN::mcpDigitalRead(byte)

 virtual byte mcpDigitalRead(const byte pin) = 0;                                    // read HIGH or LOW from supported pins

              ^~~~~~~~~~~~~~

C:\Users\Administrator\Desktop\BMS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino: In function 'void setup()':

09_08_2022_receive_ready_program:19:17: error: 'MCP_ANY' was not declared in this scope

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)

             ^~~~~~~

C:\Users\Administrator\Desktop\BMS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:19:17: note: suggested alternative: 'MCP_CAN'

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)

             ^~~~~~~

             MCP_CAN

09_08_2022_receive_ready_program:19:39: error: 'MCP_16MHZ' was not declared in this scope

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)

                                   ^~~~~~~~~

C:\Users\Administrator\Desktop\BMS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:19:39: note: suggested alternative: 'MCP_16MHz'

if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)

                                   ^~~~~~~~~

                                   MCP_16MHz

09_08_2022_receive_ready_program:24:14: error: 'CAN_NORMAL' was not declared in this scope

CAN0.setMode(CAN_NORMAL);

          ^~~~~~~~~~

C:\Users\Administrator\Desktop\BMS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:24:14: note: suggested alternative: 'CAN_NOMSG'

CAN0.setMode(CAN_NORMAL);

          ^~~~~~~~~~

          CAN_NOMSG

C:\Users\Administrator\Desktop\BMS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino: In function 'void loop()':

09_08_2022_receive_ready_program:36:39: error: no matching function for call to 'MCP_CAN::readMsgBuf(long unsigned int*, unsigned char*, unsigned char [8])'

 CAN0.readMsgBuf(&rxId, &len, rxBuf);

                                   ^

In file included from C:\Users\Administrator\Desktop\BMS Project\Arduino configuration study\Trial Programs\09_08_2022_receive_ready_program\09_08_2022_receive_ready_program.ino:2:0:

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:83:18: note: candidate: virtual byte MCP_CAN::readMsgBuf(byte*, byte*)

 virtual byte readMsgBuf(byte *len, byte *buf) = 0;

              ^~~~~~~~~~

C:\Users\Administrator\Documents\Arduino\libraries\CAN_BUS_Shield-2.3.3\src/mcp_can.h:83:18: note: candidate expects 2 arguments, 3 provided

09_08_2022_receive_ready_program:37:8: error: 'mcp2515' was not declared in this scope

if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK)

    ^~~~~~~

09_08_2022_receive_ready_program:37:29: error: 'canMsg' was not declared in this scope

if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK)

                         ^~~~~~

09_08_2022_receive_ready_program:37:40: error: 'MCP2515' has not been declared

if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK)

                                    ^~~~~~~

exit status 1

cannot declare variable 'CAN0' to be of abstract type 'MCP_CAN'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Are you deliberately ignoring the request to post code in code tags ?

Issue Resolved Thank you Guys.....

And what was that? don't close the thread without posting the solution, it will come in handy for those who will read this after you

Hi,
To add code please click this link;

Please post your code using the above instructions, BUT before doing that, press [ CTRL ] [ T ] in the IDE to auto format your code to make it easier to read.

Thanks.. Tom... :smiley: :+1: :coffee: :australia:

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.