SkyTEM BMAG / Mbed 2 deprecated BMAGThrRev

Dependencies:   mbed WDT MODSERIAL BME280

Files at this revision

API Documentation at this revision

Comitter:
MAA
Date:
Thu Sep 28 09:13:10 2017 +0000
Branch:
MbedBMAGThrRev
Parent:
37:fdd60dde174a
Child:
39:0aeb019323bf
Commit message:
NON WORKING COMMIT ISSUE WITH PPS NEED TO FIX THIS ISSUE

Changed in this revision

ErrorHandler/ErrorHandler.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
main.h Show annotated file Show diff for this revision Revisions of this file
--- a/ErrorHandler/ErrorHandler.cpp	Wed Sep 27 06:57:20 2017 +0000
+++ b/ErrorHandler/ErrorHandler.cpp	Thu Sep 28 09:13:10 2017 +0000
@@ -83,10 +83,10 @@
             errorStr1.assign("SetClock");
             errorStr2.assign("!on mag");
             
-            if(magPromptCounter <= 120){
+            if(magPromptCounter <= 30){
                 magPromptCounter += 1;
             }
-            if(magPromptCounter > 120){
+            if(magPromptCounter > 30){
                 setMagTimePrompted = true;      
             }                  
             break;
--- a/main.cpp	Wed Sep 27 06:57:20 2017 +0000
+++ b/main.cpp	Thu Sep 28 09:13:10 2017 +0000
@@ -14,6 +14,10 @@
 
 //Global GPS variables
 Timer t;
+bool ppsTick = false;
+char tmpHour[5];
+char tmpMinute[5];
+char tmpSecond[5];
 char time_buffer[32];
 bool RTC_set = false;
 bool GPS_Data_Rdy = false;
@@ -161,8 +165,8 @@
 
 //timer reset // clock update
 void resetTimer(void){
-    t.reset();
-    clk.pps_Tick();    
+    clockobj.pps_Tick();
+    t.reset();   
 }
 
 int main(void){
@@ -182,7 +186,7 @@
     wd.init(5.0);
     
     //PPS
-    InterruptIn PPS(p12);
+    InterruptIn PPS(p12);  
     PPS.rise(&resetTimer);
       
     //Led outputs
@@ -308,6 +312,9 @@
     //gps available ticker
     Ticker gpsAvailableTicker;
     gpsAvailableTicker.attach(gpsAvailCheck, 10.0);
+    
+    //clock freqency info
+    dbg.printf("SystemCoreClock = %d Hz\r\n", SystemCoreClock);
       
     snprintf(PreassureArr, 10, "%s", "NaN");
     snprintf(TemperatureArr, 10, "%s", "NaN");
@@ -493,19 +500,11 @@
             //reset last read ms val
             memset(timer_ms,'\0',5);
             tmpTime = t.read_ms();
-            snprintf (timer_ms, 5, "%d",tmpTime);
-            
-            //dbg.printf("Timer: %d\r\n", tmpTime);
-            //dbg.printf("ms timer val = %s\r\n", timer_ms);            
-            
-                        
+            snprintf (timer_ms, 5, "%d",tmpTime);    
+                         
             if(RTC_set){
-                //t_of_day = time(NULL);
-                //char buffer[15];
-                //strftime(buffer, 15, "%T", localtime(&t_of_day));
-                //dbg.printf("Time: %s\r\n", buffer);
                 
-                string tmpTime = clk.getTime();
+                string tmpTime = clockobj.getTime();
                 
                                 
                 //HH
@@ -623,22 +622,8 @@
                 
 
                 if(!lastErrStatus && firstErrsWritten) {
-                    //clock resync
-                    char tmpHour[5];
-                    char tmpMinute[5];
-                    char tmpSecond[5];
-                    
-                    memset(tmpHour, '/0', 5);
-                    memset(tmpMinute, '/0', 5);
-                    memset(tmpSecond, '/0', 5);
-                    
-                    snprintf(tmpHour, 5, "%s", gpsNMEA.currentUTCFromGPRMC.substr(0, 2));
-                    snprintf(tmpMinute, 5, "%s", gpsNMEA.currentUTCFromGPRMC.substr(3, 2));
-                    snprintf(tmpSecond, 5, "%s", gpsNMEA.currentUTCFromGPRMC.substr(6, 2));
-                    int hours = atoi(tmpHour);
-                    int minutes = atoi(tmpMinute);
-                    int seconds = atoi(tmpSecond);  
-                    clk.setTime(seconds, minutes, hours);  
+                    //force clock resync
+                    RTC_set = false;  
                     
                     //error end string
                     spsGen.UpdateCurrentErrString("ERRE", IDENTIFIERID, GROUP, gpsNMEA.currentDATEFromGPRMC, gpsNMEA.currentUTCFromGPRMC, TIMEZONE, ENCODING, SOURCEIDENTIFICATION, INTERPRETERID, DATALINEVERSION, FWSRCVERSION, FWIVERSION, gpsNMEA.currentLatitude, gpsNMEA.currentLongitude, GGA_Fix_Present, magParser.getMagTimeStr(), magParser.getMagNTStr(), magParser.getMagSq(), &dbg);
@@ -750,14 +735,9 @@
             GPS_Data_Valid = false;
             GPS_Data_Rdy = false;
             
-            if(GGA_Fix_Present && !RTC_set && (strlen(gpsNMEA.currentDATEFromGPRMC.c_str()) > 5)){
+            if(GGA_Fix_Present && !RTC_set){
                     setMbedTime(gpsNMEA.currentDATEFromGPRMC, gpsNMEA.currentUTCFromGPRMC, &dbg);
-                    RTC_set = true;
-                    
-                    char tmpHour[5];
-                    char tmpMinute[5];
-                    char tmpSecond[5];
-                    
+                                 
                     memset(tmpHour, '/0', 5);
                     memset(tmpMinute, '/0', 5);
                     memset(tmpSecond, '/0', 5);
@@ -768,9 +748,13 @@
                     
                     int hours = atoi(tmpHour);
                     int minutes = atoi(tmpMinute);
-                    int seconds = atoi(tmpSecond);  
+                    int seconds = atoi(tmpSecond);                 
+                    clockobj.setTime(seconds, minutes, hours);
                     
-                    clk.setTime(seconds, minutes, hours);                          
+                    dbg.printf("Clock resync done!\r\n"); 
+                    dbg.printf("Clock set to %s\r\n", clockobj.getTime());    
+                    
+                    RTC_set = true;                          
             }
                 
         }
--- a/main.h	Wed Sep 27 06:57:20 2017 +0000
+++ b/main.h	Thu Sep 28 09:13:10 2017 +0000
@@ -53,7 +53,7 @@
 static BME280 BME;
 
 //clock
-static CLOCK clk;
+static CLOCK clockobj;
 
 //EA_OLED display
 Thread thr_writelines;