Cell voltages fork (SoC)

Dependencies:   CUER_CAN CUER_DS1820 LTC2943 LTC6804 mbed PowerControl

Revision:
49:419985e0b2b1
Parent:
47:62ba8c071a0f
Child:
50:89f54b7a4c1b
--- a/main.cpp	Sun Jul 23 10:33:53 2017 +0000
+++ b/main.cpp	Mon Jul 24 19:00:57 2017 +0000
@@ -11,7 +11,7 @@
 #include "PowerControl/PowerControl.h"
 #include "PowerControl/EthernetPowerControl.h"
 
-#define DEBUG 0
+#define DEBUG 1
 #define ACTIVE 0
 #define INACTIVE 1
 #define TRANSMIT_MODE 1 //Useful to allow testing CAN read on BCU. Leave as 1 for BMS (and CAN write) 0 for BCU read-mode
@@ -133,13 +133,16 @@
         //This is a slightly modified version of the Tritium BMS datasheet, to add an extra voltage reading set.
         msg = createVoltageTelemetry(repeating_unit_length*i+2, measurements.cell_voltages[i].voltages); 
         can.write(msg);
+        wait(0.01);
         if (DEBUG) printf("Voltage Message id: %d \r\n", msg.id);
         //+4 - 4 cell voltages sent per measurement, simple pointer arithmetic
         msg = createVoltageTelemetry(repeating_unit_length*i+3, measurements.cell_voltages[i].voltages + 4); 
         can.write(msg);
+        wait(0.01);
         if (DEBUG) printf("Voltage Message id: %d \r\n", msg.id);
         msg = createVoltageTelemetry(repeating_unit_length*i+4, measurements.cell_voltages[i].voltages + 8); 
         can.write(msg);
+        wait(0.01);
         if (DEBUG) printf("Voltage Message id: %d \r\n", msg.id);
     }
     
@@ -148,6 +151,7 @@
     if (temperature_counter == TEMPERATURE_MEASUREMENT_FREQ) {
         for(uint8_t i = 0; i < devices_found; i++)
         {
+            wait(0.01);
             individual_temperature tempreading = measurements.temperature_measurements[i];
             msg = createTemperatureTelemetry(i, &tempreading.ROMID[0], tempreading.measurement);
             individual_temperature testOut = decodeTemperatureTelemetry(msg);
@@ -161,34 +165,39 @@
     // Create SOC CAN message
     msg = createPackSOC(measurements.SOC, measurements.percentage_SOC);
     can.write(msg);
+    wait(0.01);
     if (DEBUG) printf("SOC is %f and percentage SOC is %f and id is %d \r\n", measurements.SOC, measurements.percentage_SOC, msg.id);
     
     // Min/max cell voltages
     msg = createCellVoltageMAXMIN(measurements.max_cell_voltage, measurements.min_cell_voltage);
     can.write(msg);
+    wait(0.01);
     
     // Min/Max cell temperatures
     msg = createCellTemperatureMAXMIN(measurements.min_cell_temp, true);
     can.write(msg);
+    wait(0.01);
     msg = createCellTemperatureMAXMIN(measurements.max_cell_temp, false);
     can.write(msg);
-    wait(0.1); //WAITS ABSOLUTELY NECESSARY! values may be changed. Limit to how fast msg can be sent
+    wait(0.01); //WAITS ABSOLUTELY NECESSARY! values may be changed. Limit to how fast msg can be sent
     // Battery voltage and current
     msg = createBatteryVI(measurements.battery_voltage,measurements.battery_current);
     can.write(msg);
+    wait(0.01);
     if (DEBUG) printf("Sent Battery voltage %d and current %f with id %d \r\n",decodeBatteryVoltage(msg),decodeBatteryCurrent(msg),msg.id);
     
     //Extended battery pack status
     msg = createExtendedBatteryPackStatus(status);
     can.write(msg);
-    
+    wait(0.01);
     if (DEBUG) printf("Sent battery pack status with value %d \r\n", status);
     
     msg = createBMSHeartbeat(0, 0);
     can.write(msg);
-    
+    wait(0.01);
     msg = createIVTACurrent(measurements.ivta_current);
     can.write(msg);
+    wait(0.01);
 }