Data logger with SD card storage and RTC

Dependencies:   SDFileSystem SoftSerial ds3231 mbed

Revision:
2:e0b3cb47b4ff
Parent:
1:ab74071de2c8
Child:
3:f1287f5fde38
--- a/main.cpp	Sun Nov 22 22:39:17 2015 +0000
+++ b/main.cpp	Tue Nov 24 00:20:00 2015 +0000
@@ -24,11 +24,16 @@
 int timeCurrent;
 
 SDFileSystem sd(P0_9, P0_8, P0_10, P0_2, "sd");
+
 float lifeTime = 0;
 float oTwo = 0;
 float peak = 0;
 float trough = 0;
 float ancil = 0;
+float label = 0;
+float pressure = 0;
+float temperature = 0;
+
 char tbuff[32];
 char pbuff[250];
 void bPush()
@@ -94,21 +99,32 @@
 
 
     ///convert to Shijie datagram
-    if(fpgaBuffer[2]!=0xFF) {
-        lifeTime = (10 * (fpgaBuffer[0] >> 4)) + (fpgaBuffer[0] & 15)+(((10.0 * (fpgaBuffer[1] >> 4)) + 1.0*(fpgaBuffer[1] & 15))/100.0);
-        oTwo = (10 * (fpgaBuffer[2] >> 4)) + (fpgaBuffer[2] & 15)+(((10.0 * (fpgaBuffer[3] >> 4)) + 1.0*(fpgaBuffer[3] & 15))/100.0);
-        peak = (256 * (fpgaBuffer[4]))+fpgaBuffer[5];
-        trough = (256 * (fpgaBuffer[6]))+fpgaBuffer[7];
-        ancil = (10 * (fpgaBuffer[8] >> 4)) + (fpgaBuffer[8] & 15)+(((10.0 * (fpgaBuffer[9] >> 4)) + 1.0*(fpgaBuffer[9] & 15))/100.0);
-        // DEBUG fpga.printf("%x %x %x %x %x %x %x %x %x %x",fpgaBuffer[0],fpgaBuffer[1],fpgaBuffer[2],fpgaBuffer[3],fpgaBuffer[4],fpgaBuffer[5],fpgaBuffer[6],fpgaBuffer[7],fpgaBuffer[8],fpgaBuffer[9]);
-    } else {
-        lifeTime = (10 * (fpgaBuffer[0] >> 4)) + (fpgaBuffer[0] & 15)+(((10.0 * (fpgaBuffer[1] >> 4)) + 1.0*(fpgaBuffer[1] & 15))/100.0);
-        oTwo = (10 * (fpgaBuffer[3] >> 4)) + (fpgaBuffer[3] & 15)+(((10.0 * (fpgaBuffer[4] >> 4)) + 1.0*(fpgaBuffer[4] & 15))/100.0);
+    if(rx_in<14){
+        if(fpgaBuffer[2]!=0xFF) {
+            lifeTime = (10 * (fpgaBuffer[0] >> 4)) + (fpgaBuffer[0] & 15)+(((10.0 * (fpgaBuffer[1] >> 4)) + 1.0*(fpgaBuffer[1] & 15))/100.0);
+            oTwo = (10 * (fpgaBuffer[2] >> 4)) + (fpgaBuffer[2] & 15)+(((10.0 * (fpgaBuffer[3] >> 4)) + 1.0*(fpgaBuffer[3] & 15))/100.0);
+            peak = (256 * (fpgaBuffer[4]))+fpgaBuffer[5];
+            trough = (256 * (fpgaBuffer[6]))+fpgaBuffer[7];
+            ancil = (10 * (fpgaBuffer[8] >> 4)) + (fpgaBuffer[8] & 15)+(((10.0 * (fpgaBuffer[9] >> 4)) + 1.0*(fpgaBuffer[9] & 15))/100.0);
+            // DEBUG fpga.printf("%x %x %x %x %x %x %x %x %x %x",fpgaBuffer[0],fpgaBuffer[1],fpgaBuffer[2],fpgaBuffer[3],fpgaBuffer[4],fpgaBuffer[5],fpgaBuffer[6],fpgaBuffer[7],fpgaBuffer[8],fpgaBuffer[9]);
+        } else {
+            lifeTime = (10 * (fpgaBuffer[0] >> 4)) + (fpgaBuffer[0] & 15)+(((10.0 * (fpgaBuffer[1] >> 4)) + 1.0*(fpgaBuffer[1] & 15))/100.0);
+            oTwo = (10 * (fpgaBuffer[3] >> 4)) + (fpgaBuffer[3] & 15)+(((10.0 * (fpgaBuffer[4] >> 4)) + 1.0*(fpgaBuffer[4] & 15))/100.0);
+            peak = (256 * (fpgaBuffer[6]))+fpgaBuffer[7];
+            trough = (256 * (fpgaBuffer[9]))+fpgaBuffer[10];
+            ancil = (10 * (fpgaBuffer[12] >> 4)) + (fpgaBuffer[12] & 15)+(((10.0 * (fpgaBuffer[13] >> 4)) + 1.0*(fpgaBuffer[13] & 15))/100.0);
+            // DEBUG fpga.printf("%x %x %x %x %x %x %x %x %x %x",fpgaBuffer[0],fpgaBuffer[1],fpgaBuffer[3],fpgaBuffer[4],fpgaBuffer[6],fpgaBuffer[7],fpgaBuffer[9],fpgaBuffer[10],fpgaBuffer[12],fpgaBuffer[13]);
+        }
+    }else{
+        label = (256 * (fpgaBuffer[0]))+fpgaBuffer[1];
+        lifeTime = (10 * (fpgaBuffer[2] >> 4)) + (fpgaBuffer[2] & 15)+(((10.0 * (fpgaBuffer[3] >> 4)) + 1.0*(fpgaBuffer[3] & 15))/100.0);
+        oTwo = (10 * (fpgaBuffer[4] >> 4)) + (fpgaBuffer[4] & 15)+(((10.0 * (fpgaBuffer[5] >> 4)) + 1.0*(fpgaBuffer[5] & 15))/100.0);
         peak = (256 * (fpgaBuffer[6]))+fpgaBuffer[7];
-        trough = (256 * (fpgaBuffer[9]))+fpgaBuffer[10];
-        ancil = (10 * (fpgaBuffer[12] >> 4)) + (fpgaBuffer[12] & 15)+(((10.0 * (fpgaBuffer[13] >> 4)) + 1.0*(fpgaBuffer[13] & 15))/100.0);
-        // DEBUG fpga.printf("%x %x %x %x %x %x %x %x %x %x",fpgaBuffer[0],fpgaBuffer[1],fpgaBuffer[3],fpgaBuffer[4],fpgaBuffer[6],fpgaBuffer[7],fpgaBuffer[9],fpgaBuffer[10],fpgaBuffer[12],fpgaBuffer[13]);
+        trough = (256 * (fpgaBuffer[8]))+fpgaBuffer[9];
+        pressure = (256 * (fpgaBuffer[10]))+fpgaBuffer[11];
+        temperature = (10 * (fpgaBuffer[12] & 15)) + (fpgaBuffer[13] >> 4) + (1.0*(fpgaBuffer[13] & 15)/10 );
     }
+    
     newData=1;
     rx_in=0;
     return;
@@ -170,8 +186,10 @@
         
         ///print data to file
         if(newData==1) {
-            sprintf(pbuff,"%f, %f, %f, %f, %f",lifeTime,oTwo,peak,trough,ancil);
-            fpga.printf("%s",pbuff);
+            sprintf(pbuff,"%f, %f, %f, %f, %f, %f, %f, %f",label,lifeTime,oTwo,peak,trough,pressure,temperature);
+            serial_t0.printf("%s",pbuff);
+            //sprintf(pbuff,"%f, %f, %f, %f, %f",lifeTime,oTwo,peak,trough,ancil);
+            //fpga.printf("%s",pbuff);
             time_t epoch_time;
             epoch_time = rtc.get_epoch();
             strftime(tbuff, 32, "%Y-%m-%d %H:%M:%S %Z", localtime(&epoch_time));