Cell voltages fork (SoC)

Dependencies:   CUER_CAN CUER_DS1820 LTC2943 LTC6804 mbed PowerControl

Revision:
12:fa9b1a459e47
Parent:
11:cf2db05cfa56
Child:
13:7b42af989cd1
--- a/main.cpp	Wed Jun 21 00:15:57 2017 +0000
+++ b/main.cpp	Fri Jun 23 17:41:17 2017 +0000
@@ -22,7 +22,7 @@
 uint16_t read_EEPROM_startup(BMU_data &measurements);
 uint32_t check_measurements(BMU_data &measurements);
 void take_measurements(BMU_data &measurements);
-void test_read_voltage_CAN();
+bool test_read_voltage_CAN(uint16_t readings[], int can_ids[]);
 void test_CAN_send();
 void test_CAN_read();
 
@@ -42,12 +42,24 @@
     BMU_data measurements;
     uint16_t current_EEPROM_address;
     uint32_t status;
+    uint16_t volt_readings[36];
+    int can_ids[9];
     
-    /*while(true)
+    
+    while(true)
     {
-        //wait(0.05);
-        test_read_voltage_CAN();
-    }*/
+        for (int i = 0; i < 9; ++i) {
+            while(!test_read_voltage_CAN(&volt_readings[(i*4)], &can_ids[i]));
+        }
+        
+        for (int i = 0; i < 36; ++i) {
+            printf("Cellvoltage %d = %d, CAN ID is %d \r\n", i, volt_readings[i], can_ids[i/4]);
+            volt_readings[i] = -1;
+            can_ids[i/4] = 0;
+        }
+        printf("\r\n");
+        
+    }
     init();
     
     
@@ -202,11 +214,13 @@
 {
     float min_temperature;
     float max_temperature;
-
+    DigitalOut isotherm_12V_pin(ISOTHERM_12V_PIN);
+    isotherm_12V_pin = 1;
     probe[0]->convert_temperature(DS1820::all_devices);
+    isotherm_12V_pin = 0;
     min_temperature = probe[0]->temperature('C');
     max_temperature = min_temperature; // Initially set the max and min temperature equal
-    for (int i=1; i<devices_found; i++) {
+    for (int i=0; i<devices_found; i++) {
 
         measurements.temperature_measurements[i].ID = i;
         measurements.temperature_measurements[i].measurement = probe[i] ->temperature('C');
@@ -216,6 +230,8 @@
         } else if (measurements.temperature_measurements[i].measurement < min_temperature) {
             min_temperature = measurements.temperature_measurements[i].measurement;
         }
+        
+        printf("Device %d temperature is %3.3f degrees Celcius.\r\n",i+1 ,probe[i]->temperature('C'));
     }
     measurements.max_cell_temp.temperature = max_temperature;
     measurements.min_cell_temp.temperature = min_temperature;
@@ -275,10 +291,9 @@
     LTC2943_initialise(); //Initialises the fixed parameters of the LTC2943
 }
 
-void test_read_voltage_CAN()
+bool test_read_voltage_CAN(uint16_t readings[], int can_ids[])
 {
     CANMessage msg;
-    uint16_t readings[4];
     int can_id;
     int offset;
     int first_index;
@@ -290,18 +305,17 @@
         {
             readings[i] = (msg.data[2 * i]) + (msg.data[2*i+1] << 8); //Since data is 8 8bit ints not 4 16 bit ones
         }
-        can_id = msg.id; 
-        printf("CAN ID: %d \r\n", can_id);
+        can_id = msg.id;
+        can_ids[0] = msg.id;
+        
         offset = can_id - 1536; //1536 = 0x600
         first_index = (offset - 1)/4; //offset of 2,3,4 is CMU 1; 6,7,8, is CMU 2; etc.
         second_index = ((offset - 1) % 4) - 1; //Makes it so 0,1,2 represent each voltage set //SID: subtracted 1 to make it work
-        for(int i = 0; i < 4; i++)
-        {
-            printf("Cell_Voltage[%d][%d] = %d \r\n", first_index, second_index *4 + i, readings[i]);  
-        } 
+        
+        return true;
     }
     else
-        printf("Reading Failed \r\n");       
+        return false;     
 }
 
 void test_CAN_send()