Dual CANbus monitor and instrumentation cluster supporting ILI9341 display controller

Dependencies:   SPI_TFTx2_ILI9341 TOUCH_TFTx2_ILI9341 TFT_fonts mbed

Fork of CANary by Tick Tock

Revision:
182:10017d74de67
Parent:
181:396fdcceefd2
Child:
183:a1fba6f76e69
--- a/main.cpp	Tue Mar 25 19:57:08 2014 +0000
+++ b/main.cpp	Sun Mar 30 03:00:14 2014 +0000
@@ -9,10 +9,9 @@
 // * Add tire pressure cal (40psi for me = FR 38, RR 38.2, FL 37.8, RL 38 - maybe 2psi error on my tire gauge?)
 // * Add on screen messages for heater on, etc, and use refresh feature above to clear in x seconds
 // * Be more efficient with write buffer (use msgLen instead of always storing 8 bytes)
-
+// * Fix wrong whpg bug when charging away from home (no clearing of trip[3])
 
-// rev181
-// Added grid to whpg displays
+// rev182
 
 #include "mbed.h"
 #include "CAN.h"
@@ -23,7 +22,7 @@
 #include "displayModes.h"
 #include "TOUCH_TFTx2.h"
 
-char revStr[7] = "181";
+char revStr[7] = "182";
 unsigned long maxTarget = 1000;
 FATFS USBdrive;
 LocalFileSystem local("local");
@@ -920,21 +919,32 @@
                         if(whpg[i]>maxWhpg){
                             maxWhpg=whpg[i];
                             minWh=wh[i];
+                            if(debugMode){
+                                sprintf(sTemp,"maxWhpg=%3.1f;minWh=%3.1f\n", maxWhpg,minWh);
+                                printMsg(sTemp); // revision
+                            }
                         }
                         if(minWh>0){
                             if((whpg[i]==0)&&(whpg[i-1]>0)){ //Remember the offset at the end of the measured range
                                 whOff = minWh+maxWhpg-wh[i];
-                            }
+                                 if(debugMode){
+                                    sprintf(sTemp,"whOff=%3.1f\n", whOff);
+                                    printMsg(sTemp); // revision
+                                }
+                           }
                             wh[i] *= 4;
-                            if(whOff>0){ // Apply offset to all level above measured range
-                                wh[i] += wh[i]+whOff;
+                            if(whpg[i]==0){ // Apply offset to all levels outside measured range
+                                wh[i] += wh[i];
+                                wh[i] += whOff;
                             }else{ // Apply adjustment to measured range
-                                wh[i] += minWh+maxWhpg-whpg[i];
+                                wh[i] += minWh;
+                                wh[i] += maxWhpg;
+                                wh[i] -= (float) whpg[i];
                             }
-                            wh[i] /=5;
+                            wh[i] /= 5;
                         }
                     }
-                    for(i=1;i<300;i++){ // clear array
+                    for(i=0;i<300;i++){ // clear array
                         whpg[i]=0;
                     }
                 }
@@ -1062,6 +1072,9 @@
                 miles_trip[1]=0;
                 kWh_trip[1]=0;
                 CCkWh_trip[1]=0;
+                //if((cgids>0)&&(cgids<300)){
+                //    whpg[cgids]=0;
+                //}
             }
             
             motorRPM=0;