Brody Kellish / ltc2991_lib

Dependents:   ece495_firmware

Fork of ltc2991_test by Logan Rooper

Revision:
6:686dd5d1074d
Parent:
5:8aa0f4e6788c
diff -r 8aa0f4e6788c -r 686dd5d1074d main.cpp
--- a/main.cpp	Thu Dec 08 21:48:29 2016 +0000
+++ b/main.cpp	Wed Dec 14 05:53:50 2016 +0000
@@ -47,32 +47,86 @@
     }
 }
 
-void readSingle() {
+// read single pins 1 - 8
+float readSingle(LTC2991 *l, int p) {
+  int v_control_reg, v_msb;
+  switch (p) {
+    case 1: 
+        v_control_reg = LTC2991_CONTROL_V1234_REG;
+        v_msb = LTC2991_V1_MSB_REG;
+        break;
+    case 2: 
+        v_control_reg = LTC2991_CONTROL_V1234_REG;
+        v_msb = LTC2991_V2_MSB_REG;
+        break;
+    case 3: 
+        v_control_reg = LTC2991_CONTROL_V1234_REG;
+        v_msb = LTC2991_V3_MSB_REG;
+        break;
+    case 4: 
+        v_control_reg = LTC2991_CONTROL_V1234_REG;
+        v_msb = LTC2991_V4_MSB_REG;
+        break;
+    case 5: 
+        v_control_reg = LTC2991_CONTROL_V5678_REG;
+        v_msb = LTC2991_V5_MSB_REG;
+        break;
+    case 6: 
+        v_control_reg = LTC2991_CONTROL_V5678_REG;
+        v_msb = LTC2991_V6_MSB_REG;
+        break;
+    case 7: 
+        v_control_reg = LTC2991_CONTROL_V5678_REG;
+        v_msb = LTC2991_V7_MSB_REG;
+        break;
+    case 8: 
+        v_control_reg = LTC2991_CONTROL_V5678_REG;
+        v_msb = LTC2991_V8_MSB_REG;
+        break;
+  }
+  
   int8_t data_valid;
   int16_t code;
   float voltage;
   ack = 0;
-  ack |= ltc2->LTC2991_register_set_clear_bits(LTC2991_I2C_ADDRESS, LTC2991_CONTROL_V1234_REG, 0x00, LTC2991_V1_V2_DIFFERENTIAL_ENABLE | LTC2991_V1_V2_TEMP_ENABLE);
-  ack |= ltc2->LTC2991_adc_read_new_data(LTC2991_I2C_ADDRESS, LTC2991_V1_MSB_REG, &code, &data_valid, LTC2991_TIMEOUT);
-  voltage = ltc2->LTC2991_code_to_single_ended_voltage(code, LTC2991_SINGLE_ENDED_lsb);
+  ack |= l->LTC2991_register_set_clear_bits(LTC2991_I2C_ADDRESS, v_control_reg, 0x00, LTC2991_V1_V2_DIFFERENTIAL_ENABLE | LTC2991_V1_V2_TEMP_ENABLE);
+  ack |= l->LTC2991_adc_read_new_data(LTC2991_I2C_ADDRESS, v_msb, &code, &data_valid, LTC2991_TIMEOUT);
+  voltage = l->LTC2991_code_to_single_ended_voltage(code, LTC2991_SINGLE_ENDED_lsb);
   if (ack != 0) {
       pc.printf("Error: No Acknowledge.\n");
-  } else {
-      pc.printf("V1: %4.2f V\n", voltage);
   }
+  return voltage;
 }
 
-void readDiff() {
+float readDiff(LTC2991 *l, int upper_pin) {
+  int v_control_reg, v_msb;
+  switch (p) {
+    case 2: 
+        v_control_reg = LTC2991_CONTROL_V1234_REG;
+        v_msb = LTC2991_V2_MSB_REG;
+        break;
+    case 4: 
+        v_control_reg = LTC2991_CONTROL_V1234_REG;
+        v_msb = LTC2991_V4_MSB_REG;
+        break;
+    case 6: 
+        v_control_reg = LTC2991_CONTROL_V5678_REG;
+        v_msb = LTC2991_V6_MSB_REG;
+        break;
+    case 8: 
+        v_control_reg = LTC2991_CONTROL_V5678_REG;
+        v_msb = LTC2991_V8_MSB_REG;
+        break;
+  }
   int8_t data_valid;
   int16_t code;
   float voltage;
   ack = 0;
-  ack |= ltc2->LTC2991_register_set_clear_bits(LTC2991_I2C_ADDRESS, LTC2991_CONTROL_V1234_REG, LTC2991_V1_V2_DIFFERENTIAL_ENABLE, LTC2991_V1_V2_TEMP_ENABLE);
-  ack |= ltc2->LTC2991_adc_read_new_data(LTC2991_I2C_ADDRESS, LTC2991_V2_MSB_REG, &code, &data_valid, LTC2991_TIMEOUT);
-  voltage = ltc2->LTC2991_code_to_differential_voltage(code, LTC2991_DIFFERENTIAL_lsb);
+  ack |= l->LTC2991_register_set_clear_bits(LTC2991_I2C_ADDRESS, v_control_reg, LTC2991_V1_V2_DIFFERENTIAL_ENABLE, LTC2991_V1_V2_TEMP_ENABLE);
+  ack |= l->LTC2991_adc_read_new_data(LTC2991_I2C_ADDRESS, v_msb, &code, &data_valid, LTC2991_TIMEOUT);
+  voltage = l->LTC2991_code_to_differential_voltage(code, LTC2991_DIFFERENTIAL_lsb);
   if (ack != 0) {
       pc.printf("Error: No Acknowledge.\n");
-  } else {
-      pc.printf("V1-V2: %4.2f V\n", voltage, ack);
-  }
+  } 
+  return voltage;
 }
\ No newline at end of file