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

Branch:
Metric
Revision:
119:0e2b641e98a2
Parent:
118:02010b18efdc
Child:
120:041edeec08f5
--- a/utility.cpp	Fri Jul 05 15:38:40 2013 +0000
+++ b/utility.cpp	Fri Jul 05 16:55:04 2013 +0000
@@ -50,8 +50,8 @@
     char sTemp[40];    
     unsigned char changed;
     unsigned short i,j,k;
-    signed short packV;
-    signed short packA;
+    signed short packV_x2;
+    signed short packA_x2;
     signed long imWs_x4;
     unsigned short ts;
 
@@ -289,19 +289,19 @@
                 }
             }
         }else if((mType==1)&&(canRXmsg.id==0x1db)){ //Battery Volts and Amps
-            packV=((canRXmsg.data[2]<<2)|(canRXmsg.data[3]>>6)); // 1 LSB = 0.5V
-            packA=((canRXmsg.data[0]<<3)|(canRXmsg.data[1]>>5)); // 1 LSB = 0.5A
-            if(packA>0x03ff){
-                packA|=0xf800;//extend sign;
+            packV_x2=((canRXmsg.data[2]<<2)|(canRXmsg.data[3]>>6)); // 1 LSB = 0.5V
+            packA_x2=((canRXmsg.data[0]<<3)|(canRXmsg.data[1]>>5)); // 1 LSB = 0.5A
+            if(packA_x2>0x03ff){
+                packA_x2|=0xf800;//extend sign;
             }
-            packA -= 1; //Slight correction to value required (unique to my Leaf?)
-            imWs_x4 = packV; // Volts*milliSeconds*2
-            imWs_x4 *= -packA; // milliWattseconds*4
+            packA_x2 -= 1; //Slight correction to value required (unique to my Leaf?)
+            imWs_x4 = packV_x2; // Volts*milliSeconds*2
+            imWs_x4 *= -packA_x2; // milliWattseconds*4
             mWs_x4 += imWs_x4; // total mWs_x4
-            unloadedVavg += packV-Resr*packA;
-            Rlms    += (packV-Resr*packA-unloadedV)*(packV-Resr*packA-unloadedV);
-            redRlms += (packV-(Resr-0.001)*packA-unloadedV)*(packV-(Resr-0.001)*packA-unloadedV);
-            incRlms += (packV-(Resr+0.001)*packA-unloadedV)*(packV-(Resr+0.001)*packA-unloadedV);
+            unloadedVavg_x2 += packV_x2-Resr*packA_x2;
+            Rlms    += (packV_x2-Resr*packA_x2-unloadedV_x2)*(packV_x2-Resr*packA_x2-unloadedV_x2);
+            redRlms += (packV_x2-(Resr-0.001)*packA_x2-unloadedV_x2)*(packV_x2-(Resr-0.001)*packA_x2-unloadedV_x2);
+            incRlms += (packV_x2-(Resr+0.001)*packA_x2-unloadedV_x2)*(packV_x2-(Resr+0.001)*packA_x2-unloadedV_x2);
             numWsamples++;
         }else if((mType==1)&&(canRXmsg.id==0x1da)){ //Motor Speed
             imotorRPM=((canRXmsg.data[4]<<8)|(canRXmsg.data[5]));
@@ -596,8 +596,8 @@
     struct tm t; // pointer to a static tm structure
     short unsigned max, min, jv, i, bd;
     unsigned avg;
-    unsigned short gids, SOC, packV;
-    signed short packA;
+    unsigned short gids, SOC, packV_x2;
+    signed short packA_x2;
     time_t seconds ;
     
     CANMessage msg;
@@ -610,9 +610,9 @@
     msg = lastMsg[indexLastMsg[0x55b]]; //Get SOC
     SOC = (msg.data[0]<<2)+(msg.data[1]>>6);
     msg = lastMsg[indexLastMsg[0x1db]]; //Get pack volts
-    packV = (msg.data[2]<<2)+(msg.data[3]>>6);
-    packA = (msg.data[0]<<3)+(msg.data[1]>>5);
-    if (packA & 0x400) packA |= 0xf800;
+    packV_x2 = (msg.data[2]<<2)+(msg.data[3]>>6);
+    packA_x2 = (msg.data[0]<<3)+(msg.data[1]>>5);
+    if (packA_x2 & 0x400) packA_x2 |= 0xf800;
     
     max=0;
     min=9999;
@@ -637,7 +637,7 @@
         f_lseek(&bfile,0xffffffff); // go to end of file to append
         strftime(sTemp, 40, "%a %m/%d/%Y %X", &t);
         f_printf(&bfile,"%s,",sTemp);
-        sprintf(sTemp,"%d,%5.1f%%,%5.1f,%5.1f,%d,%d,%d,%d,%d",gids,(float)SOC/10,(float)packV/2,(float)packA/2,max,min,avg,max-min,jv);
+        sprintf(sTemp,"%d,%5.1f%%,%5.1f,%5.1f,%d,%d,%d,%d,%d",gids,(float)SOC/10,(float)packV_x2/2,(float)packA_x2/2,max,min,avg,max-min,jv);
         f_printf(&bfile,"%s,",sTemp);           
         f_printf(&bfile,"%d,%d,%d,%d,",(battData[(BatDataBaseG4*7)+ 3]<<8)+battData[(BatDataBaseG4*7)+ 4],battData[(BatDataBaseG4*7)+ 5],(battData[(BatDataBaseG4*7)+ 6]<<8)+battData[(BatDataBaseG4*7)+ 7],battData[(BatDataBaseG4*7)+ 8]);
         f_printf(&bfile,"%d,%d,%d,%d", (battData[(BatDataBaseG4*7)+ 9]<<8)+battData[(BatDataBaseG4*7)+10],battData[(BatDataBaseG4*7)+11],(battData[(BatDataBaseG4*7)+12]<<8)+battData[(BatDataBaseG4*7)+13],battData[(BatDataBaseG4*7)+14]);
@@ -657,8 +657,8 @@
     struct tm t; // pointer to a static tm structure
     short unsigned max, min, jv, i, bd;
     unsigned avg;
-    unsigned short gids, SOC, packV;
-    signed short packA;
+    unsigned short gids, SOC, packV_x2;
+    signed short packA_x2;
     time_t seconds ;
     
     CANMessage msg;
@@ -671,9 +671,9 @@
     msg = lastMsg[indexLastMsg[0x55b]]; //Get SOC
     SOC = (msg.data[0]<<2)+(msg.data[1]>>6);
     msg = lastMsg[indexLastMsg[0x1db]]; //Get pack volts
-    packV = (msg.data[2]<<2)+(msg.data[3]>>6);
-    packA = (msg.data[0]<<3)+(msg.data[1]>>5);
-    if (packA & 0x400) packA |= 0xf800;
+    packV_x2 = (msg.data[2]<<2)+(msg.data[3]>>6);
+    packA_x2 = (msg.data[0]<<3)+(msg.data[1]>>5);
+    if (packA_x2 & 0x400) packA_x2 |= 0xf800;
     
     max=0;
     min=9999;
@@ -698,7 +698,7 @@
         f_lseek(&bfile,0xffffffff); // go to end of file to append
         strftime(sTemp, 40, "%a %m/%d/%Y %X", &t);
         f_printf(&bfile,"%s,",sTemp);
-        sprintf(sTemp,"%d,%5.1f%%,%5.1f%%, %4.2f, %5.1f,%4.1f,%d,%d,%d,%d,%d",gids,(float)SOC/10, (float)SOH_x100/100,(float)Ah_x10000/10000,(float)packV/2,(float)packA/2,max,min,avg,max-min,jv);      
+        sprintf(sTemp,"%d,%5.1f%%,%5.1f%%, %4.2f, %5.1f,%4.1f,%d,%d,%d,%d,%d",gids,(float)SOC/10, (float)SOH_x100/100,(float)Ah_x10000/10000,(float)packV_x2/2,(float)packA_x2/2,max,min,avg,max-min,jv);      
         f_printf(&bfile,"%s,",sTemp);           
         f_printf(&bfile,"%d,%d,%d,%d,",(battData[(BatDataBaseG4*7)+ 3]<<8)+battData[(BatDataBaseG4*7)+ 4],battData[(BatDataBaseG4*7)+ 5],(battData[(BatDataBaseG4*7)+ 6]<<8)+battData[(BatDataBaseG4*7)+ 7],battData[(BatDataBaseG4*7)+ 8]);
         f_printf(&bfile,"%d,%d,%d,%d", (battData[(BatDataBaseG4*7)+ 9]<<8)+battData[(BatDataBaseG4*7)+10],battData[(BatDataBaseG4*7)+11],(battData[(BatDataBaseG4*7)+12]<<8)+battData[(BatDataBaseG4*7)+13],battData[(BatDataBaseG4*7)+14]);