Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Revision:
33:6c7364ea360f
Parent:
30:d8721a46ee03
Child:
54:660af33fa930
diff -r 05a15c208bfb -r 6c7364ea360f src/adc.cpp
--- a/src/adc.cpp	Wed Mar 06 23:37:45 2019 +0000
+++ b/src/adc.cpp	Thu Aug 22 15:38:50 2019 +0000
@@ -129,9 +129,15 @@
     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;
+        double VOLTAGE_48_CORRECTION = VOLTAGE_TARG_VALUE/VOLTAGE_48_ACTUAL_VALUE/ADC_SCALE_FACTOR;
+        double VOLTAGE_24_CORRECTION = VOLTAGE_TARG_VALUE/VOLTAGE_24_ACTUAL_VALUE/ADC_SCALE_FACTOR;
+        double VOLTAGE_12_CORRECTION = VOLTAGE_TARG_VALUE/VOLTAGE_12_ACTUAL_VALUE/ADC_SCALE_FACTOR;
+        double VOLTAGE_48_FACTOR = 48.0*VOLTAGE_48_CORRECTION;
+        double VOLTAGE_24_FACTOR = 24.0*VOLTAGE_24_CORRECTION;
+        double VOLTAGE_12_FACTOR = 12.0*VOLTAGE_12_CORRECTION;
+        dvals.v48f = (VOLTAGE_48_FACTOR*avals.v48) - VOLTAGE_48_OFFSET;
+        dvals.v24f = (VOLTAGE_24_FACTOR*avals.v24) - VOLTAGE_24_OFFSET;
+        dvals.v12f = (VOLTAGE_12_FACTOR*avals.v12) - VOLTAGE_12_OFFSET;
         
         // The adc results are linear above CURRENT_48_DIV_THRESH5. Only apply a linear correction to it above that threshold.
         // The multiple correction factors below CURRENT_48_DIV_THRESH5 linearize the curve below CURRENT_48_DIV_THRESH5.
@@ -154,17 +160,17 @@
         // The adc results are linear above CURRENT_12_DIV_THRESH5. Only apply a linear correction to it above that threshold.
         // The multiple correction factors below CURRENT_12_DIV_THRESH5 linearize the curve below CURRENT_12_DIV_THRESH5.
         if(abs((avals.i12-CURRENT_12_OFFSET)) > CURRENT_12_DIV_THRESH5){
-            dvals.i12f = (avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR5;
+            dvals.i12f = ((avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR5)-CURRENT_12_CORRECTION5;
         }else if(abs((avals.i12-CURRENT_12_OFFSET)) > CURRENT_12_DIV_THRESH4){
-            dvals.i12f = (avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR4;
+            dvals.i12f = ((avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR4)-CURRENT_12_CORRECTION4;
         }else if(abs((avals.i12-CURRENT_12_OFFSET)) > CURRENT_12_DIV_THRESH3){
-            dvals.i12f = (avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR3;
+            dvals.i12f = ((avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR3)-CURRENT_12_CORRECTION3;
         }else if(abs((avals.i12-CURRENT_12_OFFSET)) > CURRENT_12_DIV_THRESH2){
-            dvals.i12f = (avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR2;
+            dvals.i12f = ((avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR2)-CURRENT_12_CORRECTION2;
         }else if(abs((avals.i12-CURRENT_12_OFFSET)) > CURRENT_12_DIV_THRESH1){
-            dvals.i12f = (avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR1;
+            dvals.i12f = ((avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR1)-CURRENT_12_CORRECTION1;
         }else{
-            dvals.i12f = (avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR0;
+            dvals.i12f = ((avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR0)-CURRENT_12_CORRECTION0;
         }
     }else{
         dvals.v48f = 1.0*avals.v48;