diff --git a/arduino-canbus-monitor.ino b/arduino-canbus-monitor.ino index b9e30c0..3fc4936 100644 --- a/arduino-canbus-monitor.ino +++ b/arduino-canbus-monitor.ino @@ -19,8 +19,11 @@ void setup() { Serial.begin(LW232_DEFAULT_BAUD_RATE); // default COM baud rate is 115200. - Can232::init(CAN_125KBPS); // set default rate you need here - // CAN_10KBPS, CAN_20KBPS, CAN_50KBPS, CAN_100KBPS, CAN_125KBPS, CAN_250KBPS, CAN_500KBPS, CAN_500KBPS, CAN_1000KBPS, CAN_83K3BPS + Can232::init(CAN_125KBPS); // set default rate you need here and clock frequency of CAN shield. Typically it is 16MHz, but on some MCP2515 + TJA1080 it is 8Mhz + // Rates: CAN_10KBPS, CAN_20KBPS, CAN_50KBPS, CAN_100KBPS, CAN_125KBPS, CAN_250KBPS, CAN_500KBPS, CAN_500KBPS, CAN_1000KBPS, CAN_83K3BPS + // Freq: MCP_16MHz or MCP_8MHz. Default is MCP_16MHz. Please note, not all CAN speeds supported. check big switch in mcp_can.cpp + +// Can232::init(CAN_125KBPS, MCP_8MHz); // set default rate you need here and clock frequency of CAN shield. Typically it is 16MHz, but on some MCP2515 + TJA1080 it is 8Mhz // optional custom packet filter to reduce number of messages comingh through to canhacker diff --git a/can-232.cpp b/can-232.cpp index 7a58650..52dcfd7 100644 --- a/can-232.cpp +++ b/can-232.cpp @@ -60,6 +60,11 @@ void Can232::init(INT8U defaultCanSpeed) { instance()->lw232CanSpeedSelection = defaultCanSpeed; } +void Can232::init(INT8U defaultCanSpeed, const INT8U clock) { + init(defaultCanSpeed); + instance()->lw232McpModuleClock = clock; +} + void Can232::setFilter(INT8U (*userFunc)(INT32U)) { instance()->setFilterFunc(userFunc); } @@ -203,7 +208,7 @@ INT8U Can232::parseAndRunCommand() { parseCanStdId(); lw232PacketLen = HexHelper::parseNibbleWithLimit(lw232Message[LW232_OFFSET_STD_PKT_LEN], LW232_FRAME_MAX_LENGTH); for (; idx < lw232PacketLen; idx++) { - lw232Buffer[idx] = HexHelper::parseFullByte(lw232Message[LW232_OFFSET_STD_PKT_DATA + idx * 2 + 1], lw232Message[LW232_OFFSET_STD_PKT_DATA + idx * 2 + 1]); + lw232Buffer[idx] = HexHelper::parseFullByte(lw232Message[LW232_OFFSET_STD_PKT_DATA + idx * 2], lw232Message[LW232_OFFSET_STD_PKT_DATA + idx * 2 + 1]); } if (CAN_OK != sendMsgBuf(lw232CanId, 0, 0, lw232PacketLen, lw232Buffer)) { ret = LW232_ERR; @@ -222,7 +227,7 @@ INT8U Can232::parseAndRunCommand() { parseCanExtId(); lw232PacketLen = HexHelper::parseNibbleWithLimit(lw232Message[LW232_OFFSET_EXT_PKT_LEN], LW232_FRAME_MAX_LENGTH); for (; idx < lw232PacketLen; idx++) { - lw232Buffer[idx] = HexHelper::parseFullByte(lw232Message[LW232_OFFSET_EXT_PKT_DATA + idx * 2 + 1], lw232Message[LW232_OFFSET_EXT_PKT_DATA + idx * 2 + 1]); + lw232Buffer[idx] = HexHelper::parseFullByte(lw232Message[LW232_OFFSET_EXT_PKT_DATA + idx * 2], lw232Message[LW232_OFFSET_EXT_PKT_DATA + idx * 2 + 1]); } if (CAN_OK != sendMsgBuf(lw232CanId, 1, 0, lw232PacketLen, lw232Buffer)) { ret = LW232_ERR; @@ -462,7 +467,7 @@ INT8U Can232::checkPassFilter(INT32U addr) { INT8U Can232::openCanBus() { INT8U ret = LW232_OK; #ifndef _MCP_FAKE_MODE_ - if (CAN_OK != lw232CAN.begin(lw232CanSpeedSelection)) + if (CAN_OK != lw232CAN.begin(lw232CanSpeedSelection, lw232McpModuleClock)) ret = LW232_ERR; #endif return ret; diff --git a/can-232.h b/can-232.h index b5d6852..c482489 100644 --- a/can-232.h +++ b/can-232.h @@ -153,24 +153,26 @@ class Can232 public: static void init(); static void init(INT8U defaultCanSpeed); - static void setFilter(INT8U (*userFunc)(INT32U)); + static void init(INT8U defaultCanSpeed, const INT8U clock); + static void setFilter(INT8U (*userFunc)(INT32U)); static void loop(); static void serialEvent(); private: static Can232* _instance; static Can232* const& instance(); - + void initFunc(); - void setFilterFunc(INT8U (*userFunc)(INT32U)); + void setFilterFunc(INT8U (*userFunc)(INT32U)); void loopFunc(); void serialEventFunc(); - - INT8U (*userAddressFilterFunc)(INT32U addr) = 0; + + INT8U (*userAddressFilterFunc)(INT32U addr) = 0; MCP_CAN lw232CAN = MCP_CAN(LW232_CAN_BUS_SHIELD_CS_PIN); - INT8U lw232CanSpeedSelection = CAN_83K3BPS; + INT8U lw232CanSpeedSelection = CAN_83K3BPS; + INT8U lw232McpModuleClock = MCP_16MHz; INT8U lw232CanChannelMode = LW232_STATUS_CAN_CLOSED; INT8U lw232LastErr = LW232_OK; diff --git a/mcp_can.cpp b/mcp_can.cpp index 5ac9b6c..9231ee0 100644 --- a/mcp_can.cpp +++ b/mcp_can.cpp @@ -157,111 +157,207 @@ INT8U MCP_CAN::mcp2515_setCANCTRL_Mode(const INT8U newmode) ** Function name: mcp2515_configRate ** Descriptions: set boadrate *********************************************************************************************************/ -INT8U MCP_CAN::mcp2515_configRate(const INT8U canSpeed) +INT8U MCP_CAN::mcp2515_configRate(const INT8U canSpeed, const INT8U clock) { INT8U set, cfg1, cfg2, cfg3; set = 1; - switch (canSpeed) + switch (clock) { - case (CAN_5KBPS): - cfg1 = MCP_16MHz_5kBPS_CFG1; - cfg2 = MCP_16MHz_5kBPS_CFG2; - cfg3 = MCP_16MHz_5kBPS_CFG3; - break; + case (MCP_16MHz) : + switch (canSpeed) + { + case (CAN_5KBPS) : + cfg1 = MCP_16MHz_5kBPS_CFG1; + cfg2 = MCP_16MHz_5kBPS_CFG2; + cfg3 = MCP_16MHz_5kBPS_CFG3; + break; - case (CAN_10KBPS): - cfg1 = MCP_16MHz_10kBPS_CFG1; - cfg2 = MCP_16MHz_10kBPS_CFG2; - cfg3 = MCP_16MHz_10kBPS_CFG3; - break; + case (CAN_10KBPS) : + cfg1 = MCP_16MHz_10kBPS_CFG1; + cfg2 = MCP_16MHz_10kBPS_CFG2; + cfg3 = MCP_16MHz_10kBPS_CFG3; + break; - case (CAN_20KBPS): - cfg1 = MCP_16MHz_20kBPS_CFG1; - cfg2 = MCP_16MHz_20kBPS_CFG2; - cfg3 = MCP_16MHz_20kBPS_CFG3; - break; - - case (CAN_31K25BPS): - cfg1 = MCP_16MHz_31k25BPS_CFG1; - cfg2 = MCP_16MHz_31k25BPS_CFG2; - cfg3 = MCP_16MHz_31k25BPS_CFG3; - break; + case (CAN_20KBPS) : + cfg1 = MCP_16MHz_20kBPS_CFG1; + cfg2 = MCP_16MHz_20kBPS_CFG2; + cfg3 = MCP_16MHz_20kBPS_CFG3; + break; - case (CAN_33KBPS): - cfg1 = MCP_16MHz_33kBPS_CFG1; - cfg2 = MCP_16MHz_33kBPS_CFG2; - cfg3 = MCP_16MHz_33kBPS_CFG3; - break; + case (CAN_31K25BPS) : + cfg1 = MCP_16MHz_31k25BPS_CFG1; + cfg2 = MCP_16MHz_31k25BPS_CFG2; + cfg3 = MCP_16MHz_31k25BPS_CFG3; + break; - case (CAN_40KBPS): - cfg1 = MCP_16MHz_40kBPS_CFG1; - cfg2 = MCP_16MHz_40kBPS_CFG2; - cfg3 = MCP_16MHz_40kBPS_CFG3; - break; + case (CAN_33KBPS): + cfg1 = MCP_16MHz_33kBPS_CFG1; + cfg2 = MCP_16MHz_33kBPS_CFG2; + cfg3 = MCP_16MHz_33kBPS_CFG3; + break; - case (CAN_50KBPS): - cfg1 = MCP_16MHz_50kBPS_CFG1; - cfg2 = MCP_16MHz_50kBPS_CFG2; - cfg3 = MCP_16MHz_50kBPS_CFG3; - break; + case (CAN_40KBPS) : + cfg1 = MCP_16MHz_40kBPS_CFG1; + cfg2 = MCP_16MHz_40kBPS_CFG2; + cfg3 = MCP_16MHz_40kBPS_CFG3; + break; - case (CAN_80KBPS): - cfg1 = MCP_16MHz_80kBPS_CFG1; - cfg2 = MCP_16MHz_80kBPS_CFG2; - cfg3 = MCP_16MHz_80kBPS_CFG3; - break; + case (CAN_50KBPS) : + cfg1 = MCP_16MHz_50kBPS_CFG1; + cfg2 = MCP_16MHz_50kBPS_CFG2; + cfg3 = MCP_16MHz_50kBPS_CFG3; + break; - case (CAN_83K3BPS): - cfg1 = MCP_16MHz_83k3BPS_CFG1; - cfg2 = MCP_16MHz_83k3BPS_CFG2; - cfg3 = MCP_16MHz_83k3BPS_CFG3; - break; + case (CAN_80KBPS) : + cfg1 = MCP_16MHz_80kBPS_CFG1; + cfg2 = MCP_16MHz_80kBPS_CFG2; + cfg3 = MCP_16MHz_80kBPS_CFG3; + break; - case (CAN_95KBPS): - cfg1 = MCP_16MHz_95kBPS_CFG1; - cfg2 = MCP_16MHz_95kBPS_CFG2; - cfg3 = MCP_16MHz_95kBPS_CFG3; - break; + case (CAN_83K3BPS): + cfg1 = MCP_16MHz_83k3BPS_CFG1; + cfg2 = MCP_16MHz_83k3BPS_CFG2; + cfg3 = MCP_16MHz_83k3BPS_CFG3; + break; - case (CAN_100KBPS): /* 100KBPS */ - cfg1 = MCP_16MHz_100kBPS_CFG1; - cfg2 = MCP_16MHz_100kBPS_CFG2; - cfg3 = MCP_16MHz_100kBPS_CFG3; - break; + case (CAN_95KBPS): + cfg1 = MCP_16MHz_95kBPS_CFG1; + cfg2 = MCP_16MHz_95kBPS_CFG2; + cfg3 = MCP_16MHz_95kBPS_CFG3; + break; - case (CAN_125KBPS): - cfg1 = MCP_16MHz_125kBPS_CFG1; - cfg2 = MCP_16MHz_125kBPS_CFG2; - cfg3 = MCP_16MHz_125kBPS_CFG3; - break; + case (CAN_100KBPS) : /* 100KBPS */ + cfg1 = MCP_16MHz_100kBPS_CFG1; + cfg2 = MCP_16MHz_100kBPS_CFG2; + cfg3 = MCP_16MHz_100kBPS_CFG3; + break; - case (CAN_200KBPS): - cfg1 = MCP_16MHz_200kBPS_CFG1; - cfg2 = MCP_16MHz_200kBPS_CFG2; - cfg3 = MCP_16MHz_200kBPS_CFG3; - break; + case (CAN_125KBPS) : + cfg1 = MCP_16MHz_125kBPS_CFG1; + cfg2 = MCP_16MHz_125kBPS_CFG2; + cfg3 = MCP_16MHz_125kBPS_CFG3; + break; - case (CAN_250KBPS): - cfg1 = MCP_16MHz_250kBPS_CFG1; - cfg2 = MCP_16MHz_250kBPS_CFG2; - cfg3 = MCP_16MHz_250kBPS_CFG3; - break; + case (CAN_200KBPS) : + cfg1 = MCP_16MHz_200kBPS_CFG1; + cfg2 = MCP_16MHz_200kBPS_CFG2; + cfg3 = MCP_16MHz_200kBPS_CFG3; + break; - case (CAN_500KBPS): - cfg1 = MCP_16MHz_500kBPS_CFG1; - cfg2 = MCP_16MHz_500kBPS_CFG2; - cfg3 = MCP_16MHz_500kBPS_CFG3; - break; - - case (CAN_1000KBPS): - cfg1 = MCP_16MHz_1000kBPS_CFG1; - cfg2 = MCP_16MHz_1000kBPS_CFG2; - cfg3 = MCP_16MHz_1000kBPS_CFG3; - break; + case (CAN_250KBPS) : + cfg1 = MCP_16MHz_250kBPS_CFG1; + cfg2 = MCP_16MHz_250kBPS_CFG2; + cfg3 = MCP_16MHz_250kBPS_CFG3; + break; + + case (CAN_500KBPS) : + cfg1 = MCP_16MHz_500kBPS_CFG1; + cfg2 = MCP_16MHz_500kBPS_CFG2; + cfg3 = MCP_16MHz_500kBPS_CFG3; + break; + + case (CAN_1000KBPS) : + cfg1 = MCP_16MHz_1000kBPS_CFG1; + cfg2 = MCP_16MHz_1000kBPS_CFG2; + cfg3 = MCP_16MHz_1000kBPS_CFG3; + break; + + default: + set = 0; + break; + } + break; + + case (MCP_8MHz) : + switch (canSpeed) + { + case (CAN_5KBPS) : + cfg1 = MCP_8MHz_5kBPS_CFG1; + cfg2 = MCP_8MHz_5kBPS_CFG2; + cfg3 = MCP_8MHz_5kBPS_CFG3; + break; + + case (CAN_10KBPS) : + cfg1 = MCP_8MHz_10kBPS_CFG1; + cfg2 = MCP_8MHz_10kBPS_CFG2; + cfg3 = MCP_8MHz_10kBPS_CFG3; + break; + + case (CAN_20KBPS) : + cfg1 = MCP_8MHz_20kBPS_CFG1; + cfg2 = MCP_8MHz_20kBPS_CFG2; + cfg3 = MCP_8MHz_20kBPS_CFG3; + break; + + case (CAN_31K25BPS) : + cfg1 = MCP_8MHz_31k25BPS_CFG1; + cfg2 = MCP_8MHz_31k25BPS_CFG2; + cfg3 = MCP_8MHz_31k25BPS_CFG3; + break; + + case (CAN_40KBPS) : + cfg1 = MCP_8MHz_40kBPS_CFG1; + cfg2 = MCP_8MHz_40kBPS_CFG2; + cfg3 = MCP_8MHz_40kBPS_CFG3; + break; + + case (CAN_50KBPS) : + cfg1 = MCP_8MHz_50kBPS_CFG1; + cfg2 = MCP_8MHz_50kBPS_CFG2; + cfg3 = MCP_8MHz_50kBPS_CFG3; + break; + + case (CAN_80KBPS) : + cfg1 = MCP_8MHz_80kBPS_CFG1; + cfg2 = MCP_8MHz_80kBPS_CFG2; + cfg3 = MCP_8MHz_80kBPS_CFG3; + break; + + case (CAN_100KBPS) : /* 100KBPS */ + cfg1 = MCP_8MHz_100kBPS_CFG1; + cfg2 = MCP_8MHz_100kBPS_CFG2; + cfg3 = MCP_8MHz_100kBPS_CFG3; + break; + + case (CAN_125KBPS) : + cfg1 = MCP_8MHz_125kBPS_CFG1; + cfg2 = MCP_8MHz_125kBPS_CFG2; + cfg3 = MCP_8MHz_125kBPS_CFG3; + break; + + case (CAN_200KBPS) : + cfg1 = MCP_8MHz_200kBPS_CFG1; + cfg2 = MCP_8MHz_200kBPS_CFG2; + cfg3 = MCP_8MHz_200kBPS_CFG3; + break; + + case (CAN_250KBPS) : + cfg1 = MCP_8MHz_250kBPS_CFG1; + cfg2 = MCP_8MHz_250kBPS_CFG2; + cfg3 = MCP_8MHz_250kBPS_CFG3; + break; + + case (CAN_500KBPS) : + cfg1 = MCP_8MHz_500kBPS_CFG1; + cfg2 = MCP_8MHz_500kBPS_CFG2; + cfg3 = MCP_8MHz_500kBPS_CFG3; + break; + + case (CAN_1000KBPS) : + cfg1 = MCP_8MHz_1000kBPS_CFG1; + cfg2 = MCP_8MHz_1000kBPS_CFG2; + cfg3 = MCP_8MHz_1000kBPS_CFG3; + break; + + default: + set = 0; + break; + } + break; default: - set = 0; - break; + set = 0; + break; } if (set) { @@ -321,7 +417,7 @@ void MCP_CAN::mcp2515_initCANBuffers(void) ** Function name: mcp2515_init ** Descriptions: init the device *********************************************************************************************************/ -INT8U MCP_CAN::mcp2515_init(const INT8U canSpeed) /* mcp2515init */ +INT8U MCP_CAN::mcp2515_init(const INT8U canSpeed, const INT8U clock) /* mcp2515init */ { INT8U res; @@ -345,7 +441,7 @@ INT8U MCP_CAN::mcp2515_init(const INT8U canSpeed) /* mcp25 #endif /* set boadrate */ - if(mcp2515_configRate(canSpeed)) + if (mcp2515_configRate(canSpeed, clock)) { #if DEBUG_MODE Serial.print("set rate fall!!\r\n"); @@ -391,7 +487,7 @@ INT8U MCP_CAN::mcp2515_init(const INT8U canSpeed) /* mcp25 #endif /* enter normal mode */ res = mcp2515_setCANCTRL_Mode(MODE_NORMAL); - if(res) + if (res) { #if DEBUG_MODE Serial.print("Enter Normal Mode Fall!!\r\n"); @@ -562,12 +658,12 @@ MCP_CAN::MCP_CAN(INT8U _CS) ** Function name: init ** Descriptions: init can and set speed *********************************************************************************************************/ -INT8U MCP_CAN::begin(INT8U speedset) +INT8U MCP_CAN::begin(INT8U speedset, const INT8U clockset) { INT8U res; SPI.begin(); - res = mcp2515_init(speedset); + res = mcp2515_init(speedset, clockset); if (res == MCP2515_OK) return CAN_OK; else return CAN_FAILINIT; } @@ -769,10 +865,10 @@ INT8U MCP_CAN::sendMsg() do { uiTimeOut++; - res1= mcp2515_readRegister(txbuf_n); /* read send buff ctrl reg */ - res1 = res1 & 0x08; + res1= mcp2515_readRegister(txbuf_n-1 /* the ctrl reg is located at txbuf_n-1 */); /* read send buff ctrl reg */ + res1 = res1 & 0x08; }while(res1 && (uiTimeOut < TIMEOUTVALUE)); - if(uiTimeOut == TIMEOUTVALUE) /* send msg timeout */ + if(uiTimeOut == TIMEOUTVALUE) /* send msg timeout */ { return CAN_SENDMSGTIMEOUT; } @@ -846,7 +942,7 @@ INT8U MCP_CAN::readMsgBuf(INT8U *len, INT8U buf[]) buf[i] = m_nDta[i]; } } else { - *len = 0; + *len = 0; } return rc; } @@ -907,6 +1003,7 @@ INT8U MCP_CAN::checkError(void) return CAN_OK; } } + /********************************************************************************************************* ** Function name: checkError ** Descriptions: if something error diff --git a/mcp_can.h b/mcp_can.h index 35bda01..39cab5b 100644 --- a/mcp_can.h +++ b/mcp_can.h @@ -52,7 +52,7 @@ private: INT8U mcp2515_readRegister(const INT8U address); /* read mcp2515's register */ void mcp2515_readRegisterS(const INT8U address, - INT8U values[], + INT8U values[], const INT8U n); void mcp2515_setRegister(const INT8U address, /* set mcp2515's register */ const INT8U value); @@ -69,8 +69,8 @@ private: INT8U mcp2515_readStatus(void); /* read mcp2515's Status */ INT8U mcp2515_setCANCTRL_Mode(const INT8U newmode); /* set mode */ - INT8U mcp2515_configRate(const INT8U canSpeed); /* set boadrate */ - INT8U mcp2515_init(const INT8U canSpeed); /* mcp2515init */ + INT8U mcp2515_configRate(const INT8U canSpeed, const INT8U clock); /* set boadrate */ + INT8U mcp2515_init(const INT8U canSpeed, const INT8U clock); /* mcp2515init */ void mcp2515_write_id( const INT8U mcp_addr, /* write can id */ const INT8U ext, @@ -97,7 +97,7 @@ private: public: MCP_CAN(INT8U _CS); - INT8U begin(INT8U speedset); /* init can */ + INT8U begin(INT8U speedset, const INT8U clockset = MCP_16MHz); /* init can */ INT8U init_Mask(INT8U num, INT8U ext, INT32U ulData); /* init Masks */ INT8U init_Filt(INT8U num, INT8U ext, INT32U ulData); /* init filters */ INT8U sendMsgBuf(INT32U id, INT8U ext, INT8U rtr, INT8U len, INT8U *buf); /* send buf */ diff --git a/mcp_can_dfs.h b/mcp_can_dfs.h index 9f14f2e..60c9446 100644 --- a/mcp_can_dfs.h +++ b/mcp_can_dfs.h @@ -5,6 +5,7 @@ Author:Loovee Contributor: Cory J. Fowler 2014-1-16 + This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either @@ -243,6 +244,12 @@ #define MCP_WAKIF 0x40 #define MCP_MERRF 0x80 +/* + * clock + */ +#define MCP_16MHz 1 +#define MCP_8MHz 2 + /* * speed 16M */ @@ -316,6 +323,61 @@ #define MCP_16MHz_5kBPS_CFG2 (0xFF) #define MCP_16MHz_5kBPS_CFG3 (0x87) +/* + * speed 8M + */ +#define MCP_8MHz_1000kBPS_CFG1 (0x00) +#define MCP_8MHz_1000kBPS_CFG2 (0x80) +#define MCP_8MHz_1000kBPS_CFG3 (0x00) + +#define MCP_8MHz_500kBPS_CFG1 (0x00) +#define MCP_8MHz_500kBPS_CFG2 (0x90) +#define MCP_8MHz_500kBPS_CFG3 (0x02) + +#define MCP_8MHz_250kBPS_CFG1 (0x00) +#define MCP_8MHz_250kBPS_CFG2 (0xb1) +#define MCP_8MHz_250kBPS_CFG3 (0x05) + +#define MCP_8MHz_200kBPS_CFG1 (0x00) +#define MCP_8MHz_200kBPS_CFG2 (0xb4) +#define MCP_8MHz_200kBPS_CFG3 (0x06) + +#define MCP_8MHz_125kBPS_CFG1 (0x01) +#define MCP_8MHz_125kBPS_CFG2 (0xb1) +#define MCP_8MHz_125kBPS_CFG3 (0x05) + +#define MCP_8MHz_100kBPS_CFG1 (0x01) +#define MCP_8MHz_100kBPS_CFG2 (0xb4) +#define MCP_8MHz_100kBPS_CFG3 (0x06) + +#define MCP_8MHz_80kBPS_CFG1 (0x01) +#define MCP_8MHz_80kBPS_CFG2 (0xbf) +#define MCP_8MHz_80kBPS_CFG3 (0x07) + +#define MCP_8MHz_50kBPS_CFG1 (0x03) +#define MCP_8MHz_50kBPS_CFG2 (0xb4) +#define MCP_8MHz_50kBPS_CFG3 (0x06) + +#define MCP_8MHz_40kBPS_CFG1 (0x03) +#define MCP_8MHz_40kBPS_CFG2 (0xbf) +#define MCP_8MHz_40kBPS_CFG3 (0x07) + +#define MCP_8MHz_31k25BPS_CFG1 (0x07) +#define MCP_8MHz_31k25BPS_CFG2 (0xa4) +#define MCP_8MHz_31k25BPS_CFG3 (0x04) + +#define MCP_8MHz_20kBPS_CFG1 (0x07) +#define MCP_8MHz_20kBPS_CFG2 (0xbf) +#define MCP_8MHz_20kBPS_CFG3 (0x07) + +#define MCP_8MHz_10kBPS_CFG1 (0x0f) +#define MCP_8MHz_10kBPS_CFG2 (0xbf) +#define MCP_8MHz_10kBPS_CFG3 (0x07) + +#define MCP_8MHz_5kBPS_CFG1 (0x1f) +#define MCP_8MHz_5kBPS_CFG2 (0xbf) +#define MCP_8MHz_5kBPS_CFG3 (0x07) + #define MCPDEBUG (0) @@ -384,4 +446,4 @@ #endif /********************************************************************************************************* END FILE -*********************************************************************************************************/ +*********************************************************************************************************/ \ No newline at end of file