From 5a325ee1137ca52b6e1e01fbcd55767859930cb9 Mon Sep 17 00:00:00 2001 From: atulmerchia Date: Fri, 12 Feb 2021 12:30:43 -0800 Subject: [PATCH 1/6] Added new tester script --- Utilities/flexcan_tester_rev2/README.md | 16 +++++++++ .../flexcan_tester_rev2/flexcan_tester_rev2.h | 30 ++++++++++++++++ .../flexcan_tester_rev2.ino | 20 +++++++++++ Utilities/flexcan_tester_rev2/receiver.ino | 22 ++++++++++++ Utilities/flexcan_tester_rev2/transmitter.ino | 35 +++++++++++++++++++ 5 files changed, 123 insertions(+) create mode 100644 Utilities/flexcan_tester_rev2/README.md create mode 100644 Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h create mode 100644 Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino create mode 100644 Utilities/flexcan_tester_rev2/receiver.ino create mode 100644 Utilities/flexcan_tester_rev2/transmitter.ino diff --git a/Utilities/flexcan_tester_rev2/README.md b/Utilities/flexcan_tester_rev2/README.md new file mode 100644 index 00000000..84ee0b5b --- /dev/null +++ b/Utilities/flexcan_tester_rev2/README.md @@ -0,0 +1,16 @@ +This utility is only valid for FlexCAN. I'll see about making a more generic version for T4 and MCP later. + +This utility operates on the assumption that you have two Teensy controllers, one running the transmitter code and one running the receiver code. + +Switch between send and receive configurations using the `#define MODE` flag in [flexcan_tester_rev2.ino](./flexcan_tester_rev2.ino). + +[receiver.ino](./receiver.ino) and [transmitter.ino](./transmitter.ino) each defines two functions: + +``` +void synchronize(); +template inline T handle_message(unsigned id, T data); +``` + +This utility is capable of transmitting a series of messages and validating the ouput. `synchronize()` is used to ensure that both programs are on the same page regarding which frame is being sent. `handle_message(id, data)` is used to actually send or receive a message over FlexCAN. data should always be a member class of the [HyTech_CAN](../Libraries/HyTech_CAN) library. + +There is a `print()` helper function defined in [flexcan_tester_rev2.h](./flexcan_tester_rev2.h). This prints the ID and length of the messages received. There is no provision for printing the contents of the message - it is recommended that users either extend the `print()` function to suit their purposes or print the data in `loop()` using the data returned by `handle_message()`. If the [tcu-refactor](https://github.com/hytech-racing/code-2020/tree/tcu-refactor) branch has been merged in, then most classes should already have some kind of `print()` member function, which can be activated by uncommenting `#define HT_DEBUG_EN` in [flexcan_tester_rev2.ino](./flexcan_tester_rev2.ino). \ No newline at end of file diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h new file mode 100644 index 00000000..f0f3e8d7 --- /dev/null +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h @@ -0,0 +1,30 @@ +#pragma once + +#include +#include + +#define SYNC 0x90 +#define ACK 0x91 + +extern FlexCAN CAN; + +template +inline void print(CAN_message_t& message, unsigned id, T& data) { + Serial.println ("CAN Message"); + Serial.println ("-----------"); + Serial.print ("ID = "); Serial.println (message.id, HEX); + Serial.print ("LEN = "); Serial.println (message.len); + + if (id != message.id) + Serial.println("Warning: ID Mismatch -- Expected "); Serial.println(id, HEX); + if (sizeof(T) != message.len) + Serial.println("Warning: Length Mismatch -- Expected "); Serial.println(sizeof(T)); + + // this may not exist yet if you haven't merged in the tcu-refactor branch as an alternative, add if/elses here or print in the loop() function + #ifdef HT_DEBUG_EN + data.print(); + #endif +} + +template inline T handle_message(unsigned id, T data); +void synchronize(); \ No newline at end of file diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino new file mode 100644 index 00000000..30389750 --- /dev/null +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino @@ -0,0 +1,20 @@ +#define RECEIVE 'R' +#define SEND 'S' + +#define MODE SEND +// #define HT_DEBUG_EN // only uncomment this line if tcu-refactor merged in + +#include "flexcan_tester_rev2.h" + +FlexCAN CAN(500000); + +void setup() { + CAN.begin(); + Serial.begin(9600); +} + +void loop() { + synchronize(); + + handle_message(ID_GLV_CURRENT_READINGS, GLV_current_readings(100, 200)); +} diff --git a/Utilities/flexcan_tester_rev2/receiver.ino b/Utilities/flexcan_tester_rev2/receiver.ino new file mode 100644 index 00000000..a572d035 --- /dev/null +++ b/Utilities/flexcan_tester_rev2/receiver.ino @@ -0,0 +1,22 @@ +#if defined(MODE) && MODE == RECEIVE + +#include "flexcan_tester_rev2.h" + +void synchronize() { + CAN_message_t message; + while (!(CAN.read(message) && message.id == SYNC)); // wait for sync message + while (CAN.read(message)); // clear mailboxes + CAN.write(message); // send response +} + +template +inline T handle_message(unsigned id, T data) { + CAN_message_t message; + while (!CAN.read(message)); + + data.load(message.buf); + print(message, id, data); + return data; +} + +#endif \ No newline at end of file diff --git a/Utilities/flexcan_tester_rev2/transmitter.ino b/Utilities/flexcan_tester_rev2/transmitter.ino new file mode 100644 index 00000000..2abc8906 --- /dev/null +++ b/Utilities/flexcan_tester_rev2/transmitter.ino @@ -0,0 +1,35 @@ +#if defined(MODE) && MODE == SEND + +#include "flexcan_tester_rev2.h" +#include + +Metro timer(3000); + +void synchronize() { + CAN_message_t message; + message.id = SYNC; + + do { + CAN.write(message); // send sync message + delay(2); + } while (!(CAN.read(message) && message.id == SYNC)); + timer.reset(); // reset send timer +} + + + +template +inline T handle_message(unsigned id, T data) { + CAN_message_t message; + + while (!timer.check()); + message.id = id; + message.len = sizeof(T); + data.write(message.buf); + + print(message, id, data); + CAN.write(message); + return data; +} + +#endif From 7415cd3de01b8e08a69bfad2ebb185aa5a55329e Mon Sep 17 00:00:00 2001 From: atulmerchia Date: Fri, 12 Feb 2021 23:51:32 -0800 Subject: [PATCH 2/6] I threw in some MCP CAN utils because why not --- Libraries/mcp_can/mcp_can.h | 26 +++++++++++++++++++ Utilities/flexcan_tester_rev2/README.md | 2 -- .../flexcan_tester_rev2/flexcan_tester_rev2.h | 16 +++++++++--- .../flexcan_tester_rev2.ino | 24 +++++++++++++++-- 4 files changed, 61 insertions(+), 7 deletions(-) diff --git a/Libraries/mcp_can/mcp_can.h b/Libraries/mcp_can/mcp_can.h index 7e3bd2ca..1c77e4ae 100644 --- a/Libraries/mcp_can/mcp_can.h +++ b/Libraries/mcp_can/mcp_can.h @@ -50,6 +50,16 @@ #define MAX_CHAR_IN_MESSAGE 8 +// This is not part of the actual library. Added as FlexCAN-style interface. +typedef struct CAN_message_t { + uint32_t id; // can identifier + uint8_t ext; // identifier is extended + uint8_t rtr; // remote transmission request packet type + uint8_t len; // length of data + uint16_t timeout; // milliseconds, zero will disable waiting + uint8_t buf[8]; +} CAN_message_t; + class MCP_CAN { private: @@ -131,6 +141,22 @@ class MCP_CAN 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? + + // This is not part of the actual library. Added as FlexCAN-style interface. + inline int read(CAN_message_t& msg) { + if (checkReceive() != CAN_MSGAVAIL) + return false; + readMsgBuf(&msg.len, msg.buf); + msg.id = can_id; + msg.ext = ext_flg; + msg.rtr = rtr; + msg.timeout = 0; + return true; + } + + inline int write(CAN_message_t& msg) { + return sendMsgBuf(msg.id, msg.ext, msg.rtr, msg.len, msg.buf); + } }; #endif diff --git a/Utilities/flexcan_tester_rev2/README.md b/Utilities/flexcan_tester_rev2/README.md index 84ee0b5b..67b3a410 100644 --- a/Utilities/flexcan_tester_rev2/README.md +++ b/Utilities/flexcan_tester_rev2/README.md @@ -1,5 +1,3 @@ -This utility is only valid for FlexCAN. I'll see about making a more generic version for T4 and MCP later. - This utility operates on the assumption that you have two Teensy controllers, one running the transmitter code and one running the receiver code. Switch between send and receive configurations using the `#define MODE` flag in [flexcan_tester_rev2.ino](./flexcan_tester_rev2.ino). diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h index f0f3e8d7..df317e22 100644 --- a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h @@ -1,12 +1,22 @@ #pragma once #include + +// I'm lazy so this is how we're handling CAN library switching +#ifdef HT_CAN_MODE_FLEXCAN #include +extern FlexCAN CAN; -#define SYNC 0x90 -#define ACK 0x91 +#elif defined(HT_CAN_MODE_FLEXCAN_T4) +#include +extern FlexCAN_T4 CAN; -extern FlexCAN CAN; +#elif defined(HT_CAN_MODE_MCP) +#include +extern MCP_CAN CAN; +#endif + +#define SYNC 0x90 template inline void print(CAN_message_t& message, unsigned id, T& data) { diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino index 30389750..586c7512 100644 --- a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino @@ -1,15 +1,35 @@ #define RECEIVE 'R' #define SEND 'S' -#define MODE SEND +#define MODE RECEIVE // #define HT_DEBUG_EN // only uncomment this line if tcu-refactor merged in +#define HT_CAN_MODE_FLEXCAN #include "flexcan_tester_rev2.h" +#ifdef HT_CAN_MODE_FLEXCAN FlexCAN CAN(500000); +void setupCAN() { + CAN.begin(); +} -void setup() { +#elif defined(HT_CAN_MODE_FLEXCAN_T4) +FlexCAN_T4 CAN; +void setupCAN() { CAN.begin(); + CAN.setBaudRate(500000); +} + +#elif defined(HT_CAN_MODE_MCP) +MCP_CAN CAN(11); +void setupCAN() { + while (CAN_OK != CAN.begin(CAN_500KBPS)) + delay(200); +} +#endif + +void setup() { + setupCAN(); Serial.begin(9600); } From f202a380413dd9f30b1781c6533d8dc30bb28c73 Mon Sep 17 00:00:00 2001 From: atulmerchia Date: Sun, 21 Feb 2021 21:49:14 -0800 Subject: [PATCH 3/6] fix looping issue --- Utilities/flexcan_tester_rev2/README.md | 4 ++-- .../flexcan_tester_rev2/flexcan_tester_rev2.h | 21 ++++++++++--------- .../flexcan_tester_rev2.ino | 21 +++++++++++++------ .../{receiver.ino => receiver.h} | 8 ++----- .../{transmitter.ino => transmitter.h} | 10 ++++----- 5 files changed, 34 insertions(+), 30 deletions(-) rename Utilities/flexcan_tester_rev2/{receiver.ino => receiver.h} (80%) rename Utilities/flexcan_tester_rev2/{transmitter.ino => transmitter.h} (90%) diff --git a/Utilities/flexcan_tester_rev2/README.md b/Utilities/flexcan_tester_rev2/README.md index 67b3a410..514d3ce3 100644 --- a/Utilities/flexcan_tester_rev2/README.md +++ b/Utilities/flexcan_tester_rev2/README.md @@ -1,8 +1,8 @@ This utility operates on the assumption that you have two Teensy controllers, one running the transmitter code and one running the receiver code. -Switch between send and receive configurations using the `#define MODE` flag in [flexcan_tester_rev2.ino](./flexcan_tester_rev2.ino). +Switch between send and receive configurations by switching which header is included in [flexcan_tester_rev2.ino](./flexcan_tester_rev2.ino). -[receiver.ino](./receiver.ino) and [transmitter.ino](./transmitter.ino) each defines two functions: +[receiver.h](./receiver.h) and [transmitter.h](./transmitter.h) each defines two functions: ``` void synchronize(); diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h index df317e22..b395253f 100644 --- a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h @@ -16,7 +16,8 @@ extern FlexCAN_T4 CAN; extern MCP_CAN CAN; #endif -#define SYNC 0x90 +#define SYNC 0x90 +#define ACK 0x91 template inline void print(CAN_message_t& message, unsigned id, T& data) { @@ -25,16 +26,16 @@ inline void print(CAN_message_t& message, unsigned id, T& data) { Serial.print ("ID = "); Serial.println (message.id, HEX); Serial.print ("LEN = "); Serial.println (message.len); - if (id != message.id) - Serial.println("Warning: ID Mismatch -- Expected "); Serial.println(id, HEX); - if (sizeof(T) != message.len) - Serial.println("Warning: Length Mismatch -- Expected "); Serial.println(sizeof(T)); - + if (id != message.id) { + Serial.println("Warning: ID Mismatch -- Expected "); + Serial.println(id, HEX); + } + if (sizeof(T) != message.len) { + Serial.println("Warning: Length Mismatch -- Expected "); + Serial.println(sizeof(T)); + } // this may not exist yet if you haven't merged in the tcu-refactor branch as an alternative, add if/elses here or print in the loop() function #ifdef HT_DEBUG_EN data.print(); #endif -} - -template inline T handle_message(unsigned id, T data); -void synchronize(); \ No newline at end of file +} \ No newline at end of file diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino index 586c7512..104c644b 100644 --- a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino @@ -1,11 +1,8 @@ -#define RECEIVE 'R' -#define SEND 'S' - -#define MODE RECEIVE // #define HT_DEBUG_EN // only uncomment this line if tcu-refactor merged in #define HT_CAN_MODE_FLEXCAN -#include "flexcan_tester_rev2.h" +//#include "receiver.h" +#include "transmitter.h" #ifdef HT_CAN_MODE_FLEXCAN FlexCAN CAN(500000); @@ -36,5 +33,17 @@ void setup() { void loop() { synchronize(); - handle_message(ID_GLV_CURRENT_READINGS, GLV_current_readings(100, 200)); + GLV_current_readings glv = handle_message(ID_GLV_CURRENT_READINGS, GLV_current_readings(100, 200)); + Serial.println(glv.get_cooling_current_value()); + Serial.println(glv.get_ecu_current_value()); + + MCU_pedal_readings mpr = handle_message(ID_MCU_PEDAL_READINGS, MCU_pedal_readings(1, 2, 3, 4, 5)); + Serial.println(mpr.get_accelerator_implausibility()); + Serial.println(mpr.get_accelerator_pedal_raw_1()); + Serial.println(mpr.get_accelerator_pedal_raw_2()); + Serial.println(mpr.get_brake_implausibility()); + Serial.println(mpr.get_brake_pedal_active()); + Serial.println(mpr.get_brake_pedal_raw()); + Serial.println(mpr.get_pedal_flags()); + Serial.println(mpr.get_torque_map_mode()); } diff --git a/Utilities/flexcan_tester_rev2/receiver.ino b/Utilities/flexcan_tester_rev2/receiver.h similarity index 80% rename from Utilities/flexcan_tester_rev2/receiver.ino rename to Utilities/flexcan_tester_rev2/receiver.h index a572d035..ac5c928d 100644 --- a/Utilities/flexcan_tester_rev2/receiver.ino +++ b/Utilities/flexcan_tester_rev2/receiver.h @@ -1,12 +1,10 @@ -#if defined(MODE) && MODE == RECEIVE - #include "flexcan_tester_rev2.h" void synchronize() { CAN_message_t message; while (!(CAN.read(message) && message.id == SYNC)); // wait for sync message - while (CAN.read(message)); // clear mailboxes CAN.write(message); // send response + while (!(CAN.read(message) && message.id != ACK)); // clear extra syncs from mailbox } template @@ -17,6 +15,4 @@ inline T handle_message(unsigned id, T data) { data.load(message.buf); print(message, id, data); return data; -} - -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/Utilities/flexcan_tester_rev2/transmitter.ino b/Utilities/flexcan_tester_rev2/transmitter.h similarity index 90% rename from Utilities/flexcan_tester_rev2/transmitter.ino rename to Utilities/flexcan_tester_rev2/transmitter.h index 2abc8906..901ee604 100644 --- a/Utilities/flexcan_tester_rev2/transmitter.ino +++ b/Utilities/flexcan_tester_rev2/transmitter.h @@ -1,5 +1,3 @@ -#if defined(MODE) && MODE == SEND - #include "flexcan_tester_rev2.h" #include @@ -11,8 +9,10 @@ void synchronize() { do { CAN.write(message); // send sync message - delay(2); + delay(2000); } while (!(CAN.read(message) && message.id == SYNC)); + message.id = ACK; + CAN.write(message); timer.reset(); // reset send timer } @@ -30,6 +30,4 @@ inline T handle_message(unsigned id, T data) { print(message, id, data); CAN.write(message); return data; -} - -#endif +} \ No newline at end of file From fcff62f544a77440130d1b91e9c66ad92a693848 Mon Sep 17 00:00:00 2001 From: atulmerchia Date: Mon, 22 Feb 2021 18:25:20 -0800 Subject: [PATCH 4/6] better test --- .../flexcan_tester_rev2.ino | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino index 104c644b..e2d55145 100644 --- a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino @@ -46,4 +46,26 @@ void loop() { Serial.println(mpr.get_brake_pedal_raw()); Serial.println(mpr.get_pedal_flags()); Serial.println(mpr.get_torque_map_mode()); + + MCU_status ms = handle_message(ID_MCU_STATUS, MCU_status(10,20,30,40)); + Serial.println(ms.get_bms_ok_high()); + Serial.println(ms.get_flags()); + Serial.println(ms.get_glv_battery_voltage()); + Serial.println(ms.get_inverter_powered()); + Serial.println(ms.get_shutdown_b_above_threshold()); + Serial.println(ms.get_shutdown_c_above_threshold()); + Serial.println(ms.get_shutdown_d_above_threshold()); + Serial.println(ms.get_shutdown_e_above_threshold()); + Serial.println(ms.get_shutdown_f_above_threshold()); + Serial.println(ms.get_shutdown_f_above_threshold()); + Serial.println(ms.get_state()); + Serial.println(ms.get_temperature()); + + BMS_coulomb_counts bcc = handle_message(ID_BMS_COULOMB_COUNTS, BMS_coulomb_counts(123456, 987654)); + Serial.println(bcc.get_total_charge()); + Serial.println(bcc.get_total_discharge()); + + BMS_balancing_status bbs = handle_message(ID_BMS_BALANCING_STATUS, BMS_balancing_status(5, 0XDEADBEEF)); + Serial.println(bbs.get_group_id()); + Serial.println(bbs.get_balancing()); } From 02bb6fcd450c778540bad6bea6121faee1b59267 Mon Sep 17 00:00:00 2001 From: atulmerchia Date: Mon, 22 Feb 2021 20:41:24 -0800 Subject: [PATCH 5/6] Update receiver.h --- Utilities/flexcan_tester_rev2/receiver.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Utilities/flexcan_tester_rev2/receiver.h b/Utilities/flexcan_tester_rev2/receiver.h index ac5c928d..363ae0cf 100644 --- a/Utilities/flexcan_tester_rev2/receiver.h +++ b/Utilities/flexcan_tester_rev2/receiver.h @@ -4,7 +4,7 @@ void synchronize() { CAN_message_t message; while (!(CAN.read(message) && message.id == SYNC)); // wait for sync message CAN.write(message); // send response - while (!(CAN.read(message) && message.id != ACK)); // clear extra syncs from mailbox + while (!(CAN.read(message) && message.id == ACK)); // clear extra syncs from mailbox } template @@ -15,4 +15,4 @@ inline T handle_message(unsigned id, T data) { data.load(message.buf); print(message, id, data); return data; -} \ No newline at end of file +} From b157676b4bc05db8d370a0fa6bb31bea272b6244 Mon Sep 17 00:00:00 2001 From: sdhawan8 <> Date: Thu, 4 Mar 2021 19:40:27 -0500 Subject: [PATCH 6/6] changed sync function to use 3 ids --- .../flexcan_tester_rev2/flexcan_tester_rev2.h | 3 ++- .../flexcan_tester_rev2.ino | 12 +++++++++--- Utilities/flexcan_tester_rev2/receiver.h | 13 +++++++++++-- Utilities/flexcan_tester_rev2/transmitter.h | 18 ++++++++++++------ 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h index b395253f..493b326b 100644 --- a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.h @@ -18,6 +18,7 @@ extern MCP_CAN CAN; #define SYNC 0x90 #define ACK 0x91 +#define BEGIN 0x92 template inline void print(CAN_message_t& message, unsigned id, T& data) { @@ -38,4 +39,4 @@ inline void print(CAN_message_t& message, unsigned id, T& data) { #ifdef HT_DEBUG_EN data.print(); #endif -} \ No newline at end of file +} diff --git a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino index e2d55145..695e21bb 100644 --- a/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino +++ b/Utilities/flexcan_tester_rev2/flexcan_tester_rev2.ino @@ -1,8 +1,14 @@ // #define HT_DEBUG_EN // only uncomment this line if tcu-refactor merged in #define HT_CAN_MODE_FLEXCAN -//#include "receiver.h" -#include "transmitter.h" + +#define TRANSMIT "transmitter.h" +#define RECEIVE "receiver.h" + +//Choose mode here +#define MODE TRANSMIT + +#include MODE #ifdef HT_CAN_MODE_FLEXCAN FlexCAN CAN(500000); @@ -67,5 +73,5 @@ void loop() { BMS_balancing_status bbs = handle_message(ID_BMS_BALANCING_STATUS, BMS_balancing_status(5, 0XDEADBEEF)); Serial.println(bbs.get_group_id()); - Serial.println(bbs.get_balancing()); + //Serial.println(bbs.get_balancing()); } diff --git a/Utilities/flexcan_tester_rev2/receiver.h b/Utilities/flexcan_tester_rev2/receiver.h index 363ae0cf..b9a83f75 100644 --- a/Utilities/flexcan_tester_rev2/receiver.h +++ b/Utilities/flexcan_tester_rev2/receiver.h @@ -2,9 +2,18 @@ void synchronize() { CAN_message_t message; - while (!(CAN.read(message) && message.id == SYNC)); // wait for sync message + Serial.println("before the SYNC\n"); + message.timeout = 0; + while (!(CAN.read(message) && message.id == SYNC)) { // wait for sync message + Serial.println("waiting on SYNC"); + delay(500); + } + Serial.println("got the SYNC, send the ACK\n"); + message.id = ACK; + message.len = 0; CAN.write(message); // send response - while (!(CAN.read(message) && message.id == ACK)); // clear extra syncs from mailbox + while (!(CAN.read(message) && message.id == BEGIN)); // clear extra syncs from mailbox + Serial.println("got BEGIN\n"); } template diff --git a/Utilities/flexcan_tester_rev2/transmitter.h b/Utilities/flexcan_tester_rev2/transmitter.h index 901ee604..65f2daa5 100644 --- a/Utilities/flexcan_tester_rev2/transmitter.h +++ b/Utilities/flexcan_tester_rev2/transmitter.h @@ -1,18 +1,24 @@ #include "flexcan_tester_rev2.h" #include -Metro timer(3000); +Metro timer(1000); void synchronize() { CAN_message_t message; message.id = SYNC; - + message.len = 0; + message.timeout = 0; + Serial.println("before sending the SYNC\n"); do { + Serial.println("sending the SYNC\n"); CAN.write(message); // send sync message - delay(2000); - } while (!(CAN.read(message) && message.id == SYNC)); - message.id = ACK; + delay(500); + } while (!(CAN.read(message) && message.id == ACK)); + Serial.println("received the ACK\n"); + message.id = BEGIN; + message.len = 0; CAN.write(message); + Serial.println("sent BEGIN\n"); timer.reset(); // reset send timer } @@ -30,4 +36,4 @@ inline T handle_message(unsigned id, T data) { print(message, id, data); CAN.write(message); return data; -} \ No newline at end of file +}