Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL

Dependencies:   mbed

Revision:
43:291bbdba48f3
Parent:
42:3ae73b61f657
Child:
44:741ee27c8a34
--- a/src/main.cpp	Sat Mar 09 21:01:45 2019 +0000
+++ b/src/main.cpp	Sat Mar 09 21:16:38 2019 +0000
@@ -53,6 +53,12 @@
 bool running = FALSE;
 bool testing = FALSE;
 bool buck = TRUE;
+bool pcConnected = FALSE;
+unsigned int max_rows = 2048;
+unsigned int bCodeRow[13];
+unsigned int max_boards = 3;
+unsigned short row = 0;
+int row_test = 0;
 
 double CURRENT_48_OFFSET = 33940;
 double CURRENT_24_OFFSET = 33580;
@@ -75,9 +81,77 @@
     
     slowClk.attach(&slowFlip, 0.0003);
     fastClk.attach(&fastFlip, 0.00001);
+
+    running = FALSE;
+   
+    initSerial();
     
-    while(1){
-        checkFlip();
-    }
-    
-}
\ No newline at end of file
+    initDRT(); // Display Refresh Timer
+   
+    initADC();
+
+    struct adcValues adcVals = getADCresults();
+    struct displayValues dispVals = calcDisplayValues(adcVals);
+    struct statusValues statVals = checkLevels(adcVals);
+   
+    row = (unsigned short)(dispVals.i12f*dispVals.v12f*ROW_CORRECTION_FACTOR);
+    unsigned int old_row = row;
+   
+    menu_banner();
+    sprintf(strbuf, "\r\nPress Enter to continue");
+    sendSerial(strbuf);
+    //while(waitCommand()){ // Wait for user to press Enter
+    //}
+   
+    menuRedraw(WITH_PROMPT);
+   
+    initBoards(adcVals);
+
+    while (1)
+    {
+      adcVals = getADCresults();
+      
+      dispVals = calcDisplayValues(adcVals);
+      
+      statVals = checkLevels(adcVals);
+      
+      processCommand();
+      
+      checkFlip();
+
+      // Select RUN from menu to activate running mode.
+      // BRDS, MULT activate testing mode. MY12 emulates running mode wthout being in running mode.
+      // CAL and UNCAL do not change state of running or testing.
+      if(adcVals.i12 < CURRENT_12_OFFSET){    
+            row = (unsigned short)(dispVals.i12f*dispVals.v12f*ROW_CORRECTION_FACTOR);
+            buck = TRUE;
+      }else{
+            row = (unsigned short)(dispVals.i12f*dispVals.v12f*(-ROW_CORRECTION_FACTOR));
+            buck = FALSE;
+      }
+      row_test = abs((int)(row-old_row));
+      if(running){
+          //The current sensors results are single-ended. Results below the midpoint are for buck mode, above is for boost mode.
+          if(row_test>ROW_HYSTERESIS){
+             old_row = row;
+             if(row<=1023){
+                 updateControls(row);
+             }
+            }
+      }else if(!testing){
+          row_test = abs((int)(my12-old_row));
+          if(row_test>ROW_HYSTERESIS){
+             old_row = my12;
+             if(row<=1023){
+                 updateControls(my12);
+             }
+          }
+      }
+      
+      if(updateReady && pcConnected){
+         updateReady = FALSE;
+         updateTerminal(adcVals, statVals);  // May want to gate this call when we run a headless system.
+
+      }
+    }//end while(1)
+}//end void main(void)
\ No newline at end of file