Treehouse Mbed Team / Mbed 2 deprecated APS_1U5x

Dependencies:   mbed

Revision:
11:01dcfb29fbc4
Parent:
9:816b9a4e4f21
Child:
12:fd1fd1857628
--- a/src/adc.cpp	Fri Dec 07 17:39:01 2018 +0000
+++ b/src/adc.cpp	Fri Dec 07 20:42:41 2018 +0000
@@ -27,15 +27,18 @@
 //-------------------------------------------------------------------------------
 
 #include "mbed.h"
+#include "adc_defs.h"
 #include "adc.h"
 #include "all_io.h"
-#include "globals.h"
 
 void initADC(void){
     
 }
 
-void getADCresults(void){
+/*******************************************************************************
+ getADCresults
+*******************************************************************************/
+struct adcValues getADCresults(void){
     
     unsigned int v48x = 0; 
     unsigned int v24x = 0;
@@ -44,6 +47,7 @@
     unsigned int i24x = 0;
     unsigned int i12x = 0;
     
+    struct adcValues avals;
     unsigned int loopCounter = LOOP_COUNTER;
     
     for(unsigned int i=0;i<loopCounter;i++){
@@ -54,42 +58,83 @@
         i24x = i24x + IIN24.read_u16();
         i12x = i12x + IIN12.read_u16();
     }
-    v48 = v48x/loopCounter; 
-    v24 = v24x/loopCounter;
-    v12 = v12x/loopCounter;
-    i48 = i48x/loopCounter; 
-    i24 = i24x/loopCounter;
-    i12 = i12x/loopCounter;
+    avals.v48 = v48x/loopCounter; 
+    avals.v24 = v24x/loopCounter;
+    avals.v12 = v12x/loopCounter;
+    avals.i48 = i48x/loopCounter; 
+    avals.i24 = i24x/loopCounter;
+    avals.i12 = i12x/loopCounter;
+    
+    return avals;
 }
 
-void getADCvolts(void){
+/*******************************************************************************
+ getADCvolts
+*******************************************************************************/
+struct adcValues getADCvolts(void){
     
     unsigned int v48x = 0; 
     unsigned int v24x = 0;
     unsigned int v12x = 0;
     
+    struct adcValues avals;
+    
     for(unsigned int i=0;i<100;i++){
         v48x = v48x + VIN48.read_u16();
         v24x = v24x + VIN24.read_u16();
         v12x = v12x + VIN12.read_u16();
     }
-    v48 = v48x/100; 
-    v24 = v24x/100;
-    v12 = v12x/100;
+    avals.v48 = v48x/100; 
+    avals.v24 = v24x/100;
+    avals.v12 = v12x/100;
+    
+    return avals;
 }
 
-void getADCamps(void){
+/*******************************************************************************
+ getADCamps
+*******************************************************************************/
+struct adcValues getADCamps(void){
     
     unsigned int i48x = 0; 
     unsigned int i24x = 0;
     unsigned int i12x = 0;
     
+    struct adcValues avals;
+    
     for(unsigned int i=0;i<100;i++){
         i48x = i48x + IIN48.read_u16();
         i24x = i24x + IIN24.read_u16();
         i12x = i12x = IIN12.read_u16();
     }
-    i48 = i48x/100; 
-    i24 = i24x/100;
-    i12 = i12x/100;
+    avals.i48 = i48x/100; 
+    avals.i24 = i24x/100;
+    avals.i12 = i12x/100;
+    
+    return avals;
+}
+
+/*******************************************************************************
+ calcDisplayValues
+*******************************************************************************/
+struct displayValues calcDisplayValues(struct adcValues avals){
+    
+    struct displayValues dvals;
+    
+    if(!raw){
+        dvals.v48f = VOLTAGE_48_FACTOR*avals.v48;
+        dvals.v24f = VOLTAGE_24_FACTOR*avals.v24;
+        dvals.v12f = VOLTAGE_12_FACTOR*avals.v12;
+        dvals.i48f = (avals.i48-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR;
+        dvals.i24f = (avals.i24-CURRENT_24_OFFSET)/CURRENT_24_DIV_FACTOR;
+        dvals.i12f = (avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR;
+    }else{
+        dvals.v48f = 1.0*avals.v48;
+        dvals.v24f = 1.0*avals.v24;
+        dvals.v12f = 1.0*avals.v12;
+        dvals.i48f = 1.0*avals.i48;
+        dvals.i24f = 1.0*avals.i24;
+        dvals.i12f = 1.0*avals.i12;
+    }
+    return dvals;
 }
\ No newline at end of file