Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Revision:
54:660af33fa930
Parent:
37:1cbd51e24610
Child:
55:0f5457bc4094
--- a/src/command.cpp	Wed Nov 06 20:21:37 2019 +0000
+++ b/src/command.cpp	Thu Nov 14 19:51:37 2019 +0000
@@ -114,6 +114,12 @@
 double CURRENT_IN_5;
 double CURRENT_IN_6;
 
+double CURRENT_48_CORRECTION0;
+double CURRENT_48_CORRECTION1;
+double CURRENT_48_CORRECTION2;
+double CURRENT_48_CORRECTION3;
+double CURRENT_48_CORRECTION4;
+double CURRENT_48_CORRECTION5;
 double CURRENT_12_CORRECTION0;
 double CURRENT_12_CORRECTION1;
 double CURRENT_12_CORRECTION2;
@@ -1001,7 +1007,117 @@
     {
         if (section == 48)
         {
-            printf("Not yet implimented.");
+            if (Aloc == 0)
+            {
+                printf("Begin Voltage 48 current calibration? (Enter Scl=1 to continue)");
+                Aloc = -1;
+            }
+            else if (Aloc == -1)
+            {
+                if (commandData == 1)
+                {
+                    printf("Set current to smallest reference point(1/6). Enter actual current amount. (Ex. Scl=1.25)");
+                    Aloc = -2;
+                } else{
+                    printf("Calibration cancelled.");
+                    Aloc = 0;
+                }
+            }
+            else if (Aloc == -2)
+            {
+                CURRENT_IN_1 = commandData;
+                adcValues adcVals = getADCresults();
+                CURRENT_REF_1 = adcVals.i48;
+                printf("Increase input current. Enter new actual input current(2/6).");
+                Aloc = -3;
+            }
+            else if (Aloc == -3)
+            {
+                CURRENT_IN_2 = commandData;
+                adcValues adcVals = getADCresults();
+                CURRENT_REF_2 = adcVals.i48;
+                printf("Increase input current. Enter new actual input current(3/6).");
+                Aloc = -4;
+            }
+            else if (Aloc == -4)
+            {
+                CURRENT_IN_3 = commandData;
+                adcValues adcVals = getADCresults();
+                CURRENT_REF_3 = adcVals.i48;
+                printf("Increase input current. Enter new actual input current(4/6).");
+                Aloc = -5;
+            }
+            else if (Aloc == -5)
+            {
+                CURRENT_IN_4 = commandData;
+                adcValues adcVals = getADCresults();
+                CURRENT_REF_4 = adcVals.i48;
+                printf("Increase input current. Enter new actual input current(5/6).");
+                Aloc = -6;
+            }
+            else if (Aloc == -6)
+            {
+                CURRENT_IN_5 = commandData;
+                adcValues adcVals = getADCresults();
+                CURRENT_REF_5 = adcVals.i48;
+                printf("Increase input current. Enter new actual input current(6/6).");
+                Aloc = -7;
+            }
+            else if (Aloc == -7)
+            {
+                CURRENT_IN_6 = commandData;
+                adcValues adcVals = getADCresults();
+                CURRENT_REF_6 = adcVals.i48;
+                Aloc = 0;
+                sprintf(strbuf, " %f;%d;%d", CURRENT_12_OFFSET,CURRENT_12_DIV_THRESH5,CURRENT_12_DIV_THRESH1);
+                sendSerial(strbuf);
+                if ((CURRENT_REF_6 - CURRENT_48_OFFSET < 0 && CURRENT_REF_1 - CURRENT_48_OFFSET < 0 && CURRENT_REF_6 > CURRENT_REF_1)
+                || (CURRENT_REF_6 - CURRENT_48_OFFSET > 0 && CURRENT_REF_1 - CURRENT_48_OFFSET > 0 && CURRENT_REF_6 < CURRENT_REF_1))
+                {
+                    CURRENT_48_DIV_THRESH5 = CURRENT_REF_1-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_THRESH4 = CURRENT_REF_2-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_THRESH3 = CURRENT_REF_3-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_THRESH2 = CURRENT_REF_4-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_THRESH1 = CURRENT_REF_5-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_FACTOR5 = (CURRENT_REF_1-CURRENT_48_OFFSET)/CURRENT_IN_1;
+                    CURRENT_48_CORRECTION5 = ((CURRENT_REF_1-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR5)-CURRENT_IN_1;
+                    CURRENT_48_DIV_FACTOR4 = (CURRENT_REF_2-CURRENT_REF_1)/(CURRENT_IN_2-CURRENT_IN_1);
+                    CURRENT_48_CORRECTION4 = ((CURRENT_REF_2-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR4)-CURRENT_IN_2;
+                    CURRENT_48_DIV_FACTOR3 = (CURRENT_REF_3-CURRENT_REF_2)/(CURRENT_IN_3-CURRENT_IN_2);
+                    CURRENT_48_CORRECTION3 = ((CURRENT_REF_3-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR3)-CURRENT_IN_3;
+                    CURRENT_48_DIV_FACTOR2 = (CURRENT_REF_4-CURRENT_REF_3)/(CURRENT_IN_4-CURRENT_IN_3);
+                    CURRENT_48_CORRECTION2 = ((CURRENT_REF_4-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR2)-CURRENT_IN_4;
+                    CURRENT_48_DIV_FACTOR1 = (CURRENT_REF_5-CURRENT_REF_4)/(CURRENT_IN_5-CURRENT_IN_4);
+                    CURRENT_48_CORRECTION1 = ((CURRENT_REF_5-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR1)-CURRENT_IN_5;
+                    CURRENT_48_DIV_FACTOR0 = (CURRENT_REF_6-CURRENT_REF_5)/(CURRENT_IN_6-CURRENT_IN_5);
+                    CURRENT_48_CORRECTION0 = ((CURRENT_REF_6-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR0)-CURRENT_IN_6;
+                }
+                else if ((CURRENT_REF_6 - CURRENT_48_OFFSET < 0 && CURRENT_REF_1 - CURRENT_48_OFFSET < 0 && CURRENT_REF_6 < CURRENT_REF_1)
+                || (CURRENT_REF_6 - CURRENT_48_OFFSET > 0 && CURRENT_REF_1 - CURRENT_48_OFFSET > 0 && CURRENT_REF_6 > CURRENT_REF_1))
+                {
+                    CURRENT_48_DIV_THRESH5 = CURRENT_REF_5-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_THRESH4 = CURRENT_REF_4-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_THRESH3 = CURRENT_REF_3-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_THRESH2 = CURRENT_REF_2-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_THRESH1 = CURRENT_REF_1-CURRENT_48_OFFSET;
+                    CURRENT_48_DIV_FACTOR0 = (CURRENT_REF_1-CURRENT_48_OFFSET)/CURRENT_IN_1;
+                    CURRENT_48_CORRECTION0 = 0;
+                    CURRENT_48_DIV_FACTOR1 = (CURRENT_REF_2-CURRENT_REF_1)/(CURRENT_IN_2-CURRENT_IN_1);
+                    CURRENT_48_CORRECTION1 = ((CURRENT_REF_2-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR1)-CURRENT_IN_2;
+                    CURRENT_48_DIV_FACTOR2 = (CURRENT_REF_3-CURRENT_REF_2)/(CURRENT_IN_3-CURRENT_IN_2);
+                    CURRENT_48_CORRECTION2 = ((CURRENT_REF_3-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR2)-CURRENT_IN_3;
+                    CURRENT_48_DIV_FACTOR3 = (CURRENT_REF_4-CURRENT_REF_3)/(CURRENT_IN_4-CURRENT_IN_3);
+                    CURRENT_48_CORRECTION3 = ((CURRENT_REF_4-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR3)-CURRENT_IN_4;
+                    CURRENT_48_DIV_FACTOR4 = (CURRENT_REF_5-CURRENT_REF_4)/(CURRENT_IN_5-CURRENT_IN_4);
+                    CURRENT_48_CORRECTION4 = ((CURRENT_REF_5-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR4)-CURRENT_IN_5;
+                    CURRENT_48_DIV_FACTOR5 = (CURRENT_REF_6-CURRENT_REF_5)/(CURRENT_IN_6-CURRENT_IN_5);
+                    CURRENT_48_CORRECTION5 = ((CURRENT_REF_6-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR5)-CURRENT_IN_6;
+                }
+                sprintf(strbuf, " %f;%d;%d", CURRENT_48_OFFSET,CURRENT_48_DIV_THRESH5,CURRENT_48_DIV_THRESH1);
+                sendSerial(strbuf);
+                printf("\r\n48V current calibration completed.\r\n");
+                //printf("%4.2f, %4.2f\r\n", VOLTAGE_48_ACTUAL_VALUE, VOLTAGE_48_OFFSET);
+            }
         }
         else if (section == 24)
         {
@@ -1082,7 +1198,7 @@
                     CURRENT_12_DIV_THRESH2 = CURRENT_REF_4-CURRENT_12_OFFSET;
                     CURRENT_12_DIV_THRESH1 = CURRENT_REF_5-CURRENT_12_OFFSET;
                     CURRENT_12_DIV_FACTOR5 = (CURRENT_REF_1-CURRENT_12_OFFSET)/CURRENT_IN_1;
-                    CURRENT_12_CORRECTION4 = ((CURRENT_REF_1-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR5)-CURRENT_IN_1;
+                    CURRENT_12_CORRECTION5 = ((CURRENT_REF_1-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR5)-CURRENT_IN_1;
                     CURRENT_12_DIV_FACTOR4 = (CURRENT_REF_2-CURRENT_REF_1)/(CURRENT_IN_2-CURRENT_IN_1);
                     CURRENT_12_CORRECTION4 = ((CURRENT_REF_2-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR4)-CURRENT_IN_2;
                     CURRENT_12_DIV_FACTOR3 = (CURRENT_REF_3-CURRENT_REF_2)/(CURRENT_IN_3-CURRENT_IN_2);
@@ -1257,6 +1373,57 @@
             sprintf(storoFrag, "%4.2f", VOLTAGE_12_OFFSET);
             strcat(storoBuild, storoFrag);
             strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_THRESH1);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_THRESH2);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_THRESH3);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_THRESH4);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_THRESH5);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_FACTOR0);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%4.2f", CURRENT_48_CORRECTION0);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_FACTOR1);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%4.2f", CURRENT_48_CORRECTION1);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_FACTOR2);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%4.2f", CURRENT_48_CORRECTION2);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_FACTOR3);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%4.2f", CURRENT_48_CORRECTION3);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_FACTOR4);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%4.2f", CURRENT_48_CORRECTION4);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%d", CURRENT_48_DIV_FACTOR5);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
+            sprintf(storoFrag, "%4.2f", CURRENT_48_CORRECTION5);
+            strcat(storoBuild, storoFrag);
+            strcat(storoBuild, storoSpace);
             sprintf(storoFrag, "%d", CURRENT_12_DIV_THRESH1);
             strcat(storoBuild, storoFrag);
             strcat(storoBuild, storoSpace);
@@ -1344,6 +1511,40 @@
         ptr = strtok(NULL, delim);
         VOLTAGE_12_OFFSET = atof(ptr);
         ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_THRESH1 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_THRESH2 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_THRESH3 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_THRESH4 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_THRESH5 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_FACTOR0 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_CORRECTION0 = atof(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_FACTOR1 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_CORRECTION1 = atof(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_FACTOR2 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_CORRECTION2 = atof(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_FACTOR3 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_CORRECTION3 = atof(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_FACTOR4 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_CORRECTION4 = atof(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_DIV_FACTOR5 = atoi(ptr);
+        ptr = strtok(NULL, delim);
+        CURRENT_48_CORRECTION5 = atof(ptr);
+        ptr = strtok(NULL, delim);
         CURRENT_12_DIV_THRESH1 = atoi(ptr);
         ptr = strtok(NULL, delim);
         CURRENT_12_DIV_THRESH2 = atoi(ptr);