Dependencies:   ChaNFSSD mbed BMP085 SHT2x

Revision:
5:3a1ce282892c
Parent:
4:879b8dcfee15
Child:
6:4af28d398585
--- a/main.cpp	Sat Feb 04 17:01:17 2012 +0000
+++ b/main.cpp	Sun Feb 05 13:35:15 2012 +0000
@@ -4,7 +4,7 @@
  * 2012-1-4 Toshihisa T
  */
 
-#define __MY_VERSION__  "0.81"
+#define __MY_VERSION__  "0.83"
 
 #define HAVE_TOGGLE_SW
 #define HAVE_MICROSD
@@ -143,9 +143,9 @@
 // SHT2x  0x80
 int i2c_found() {
     int count = 0;
-    lcd.locate(0,2);
+    lcd.locate(0,0);
     lcd.printf("%-19s","I2C Dev:");
-    lcd.locate(8,2);
+    lcd.locate(8,0);
     for (int address=0; address<256; address+=2) {
         if (!i2c.write(address, NULL, 0)) { // 0 returned is ok
             switch(address){
@@ -308,25 +308,34 @@
  
     ClearScreen();
 
-#ifdef HAVE_MICROSD
-    lcd.locate(0,0);
-    lcd.printf("Check MicroSD:");
-    logFile_Init();
-#endif
-    lcd.locate(0,0);
-    switch(avaiableSD){
+    //===================================================
+    i2c_found();
+ 
+    //===================================================
+    CO2.format(8,Serial::None,1);
+    CO2.baud(9600);
+    CO2.recvStart();
+
+    lcd.locate(0,1);
+    lcd.printf("Check CO2:");
+    CO2_find = 0;
+    ret = CO2_Read(&CO2_val);
+    switch(ret){
         case 0:
-            lcd.printf("Check MicroSD:NG");
+            lcd.printf("OK");
+            CO2_find = 1;
             break;
-        case 1:
-            lcd.printf("Check MicroSD:OK");
+        case -99:
+            lcd.printf("NOT FOUND");
             break;
         default:
-            lcd.printf("Check MicroSD:DO\'NT USE");
+            lcd.printf("NG");
             break;
     }
- 
-    lcd.locate(0,1);
+    CO2_val = 0;
+
+    //===================================================
+    lcd.locate(0,2);
     lcd.printf("Initalize GPS:");
 
     UBXPacket.cjobst = 0;
@@ -383,34 +392,31 @@
        }
     }
     UBXPacket.cjobst = 0;
-    lcd.locate(0,1);
+    lcd.locate(0,2);
     lcd.printf("Initalize GPS:%s",(GPS_isRaw) ? "OK" : "NG");
 
-    i2c_found();
-
 //  ad7994.Start();
 
-    CO2.format(8,Serial::None,1);
-    CO2.baud(9600);
-    CO2.recvStart();
-
+    //===================================================
+#ifdef HAVE_MICROSD
+    lcd.locate(0,3);
+    lcd.printf("Check MicroSD:");
+    logFile_Init();
+#endif
     lcd.locate(0,3);
-    lcd.printf("Check CO2:");
-    CO2_find = 0;
-    ret = CO2_Read(&CO2_val);
-    switch(ret){
+    switch(avaiableSD){
         case 0:
-            lcd.printf("OK");
-            CO2_find = 1;
+            lcd.printf("Check MicroSD:NG");
             break;
-        case -99:
-            lcd.printf("NOT FOUND");
+        case 1:
+            lcd.printf("Check MicroSD:OK");
             break;
         default:
-            lcd.printf("NG");
+            lcd.printf("Check MicroSD:DO\'NT USE");
             break;
     }
-    CO2_val = 0;
+
+    //===================================================
 
     wait(3.0);
 
@@ -454,7 +460,7 @@
             }
         }
         lcd.locate(0,0);
-        lcd.printf("%04d-%02d-%02d %02d:%02d:%02d",year,mon,day,hour,min,sec);
+        lcd.printf("%c%04d-%02d-%02d %02d:%02d:%02d",(gpsFP) ? '*' : ' ',year,mon,day,hour,min,sec);
 
         if(pre_sec != sec){
             pre_sec = sec;
@@ -472,10 +478,13 @@
             lcd.locate(0,1); lcd.printf("%-8.2fhPa %-6.2fC", p, t1);
 
             if(sht25_find){
-                sht25.SHT2x_MeasurePoll(TEMP,&temp);
-                t2 = sht25.SHT2x_CalcTemperatureC(temp);
-                sht25.SHT2x_MeasurePoll(HUMIDITY,&temp);
-                h = sht25.SHT2x_CalcRH(temp);
+                if(sht25.SHT2x_MeasurePoll(TEMP,&temp) == 0){
+                    t2 = sht25.SHT2x_CalcTemperatureC(temp);
+                }
+                if(sht25.SHT2x_MeasurePoll(HUMIDITY,&temp) == 0){
+                    h = sht25.SHT2x_CalcRH(temp);
+                }
+                sht25.SHT2x_SoftReset();
             }
             lcd.locate(0,2); lcd.printf("%-6.2fC %-6.2fRH", t2, h);
 
@@ -505,6 +514,26 @@
 }
 
 /*
+ * 2012-2-5 V0.83
+ * センサー、I/Oの検出順番を変更(H/W 組立時の試験を兼ねる)
+ * 下記の順番でセンサーやI/Oの検出をする。
+ * I2C → CO2センサー → U-Blox(raw-mode) → マイクロSD
+ * マイクロSD が未装着でも U-Blox の raw-mode までは
+ * 進めるので、H/W 組立後の基本チェックが可能。
+ */
+/*
+ * 2012-2-5 V0.82
+ * バイクによる実走試験での結果を反映。
+ * 1) ログボタンのON/OFFでLEDも光らせるが、ケースに収めると
+ *    LED だと分からなくなるので、液晶画面でもログのON/OFFが
+ *    分かるようにした。ログをONすると、画面左上に'*'を出す。
+ * 2) SHT25 が、時々オフセットがかかったかの様な値を返すので、
+ *    下記の修正を行った。但しこの修正が確実かはまだ分からない。
+ *    a) 関数の戻り値が正常な場合に値を採用する。これは必要。
+ *    b) 温湿度の取得後、SHT25 に対してソフトリセット命令を
+ *	     毎回送る。これでうまく行くようならこれでいく。
+ */
+/*
  * 2012-2-5 V0.81
  * 気圧センサーが時々不正な値を出力する。気温が100度を超える値になる。
  * ソフトバグか、センサー自身の問題かは切り分けていないが、気温が100度を