Attempts to merge SPI_TFT2 & SPI_TFT_ILI9341
Dependencies: SPI_TFTx2 TFT_fonts TOUCH_TFTx2 mbed
Fork of CANary by
Revision 123:a8c0042df617, committed 2013-07-19
- Comitter:
- TickTock
- Date:
- Fri Jul 19 12:48:10 2013 +0000
- Branch:
- Metric
- Parent:
- 122:138a40892a4c
- Child:
- 124:0d622967b764
- Commit message:
- First attempt to add tire pressure
Changed in this revision
--- a/common.h Wed Jul 17 13:48:51 2013 +0000 +++ b/common.h Fri Jul 19 12:48:10 2013 +0000 @@ -26,13 +26,14 @@ #define canTimeout 5 #define userTimeout 15 -#define BatDataBaseG1 0x00 // 6 frames - SOH, SOC, Ah -#define BatDataBaseG2 0x06 // 29 frames - Cell Pair data -#define BatDataBaseG3 0x23 // 5 frames -#define BatDataBaseG4 0x28 // 3 frames - Temperature data -#define BatDataBaseG5 0x2B // 11 frames -#define BatDataBaseG6 0x36 // 4 frames -#define BatDataBaseG7 0x3A -#define BatDataBufMax 0x196 // 7 x 3A bytes +#define DataBaseG1 0x00 // 6 frames - SOH, SOC, Ah +#define DataBaseG2 0x06 // 29 frames - Cell Pair data +#define DataBaseG3 0x23 // 5 frames +#define DataBaseG4 0x28 // 3 frames - Temperature data +#define DataBaseG5 0x2B // 11 frames +#define DataBaseG6 0x36 // 4 frames +#define DataBaseG7 0x3A // 2 frames - Tire pressure +#define DataBaseG8 0x3C +#define DataBufMax 0x1A4 // 7 x 3C bytes #define VP230Sleep 1 // Set to 0 if using VP231 (sleep disables RX) \ No newline at end of file
--- a/displayModes.cpp Wed Jul 17 13:48:51 2013 +0000 +++ b/displayModes.cpp Fri Jul 19 12:48:10 2013 +0000 @@ -234,7 +234,7 @@ void healthDisplay (bool force, bool showButtons){ unsigned short gids, SOC_x10; static unsigned short lgids=0, lSOC=0, lSOH=0; - static float lmaxTemp=0, lresr=0, lunlV=0; + static float lTire=0, lresr=0, lunlV=0; static unsigned long lAh=0; CANMessage msg; @@ -287,21 +287,22 @@ printf(" %4.2f Ah cap \n",(float)Ah_x10000/10000); lAh=Ah_x10000; } - if(force||maxTemp!=lmaxTemp){ + if(force||unloadedV_x2!=lunlV){ tt.locate(10,130); - printf(" %4.1f %s (max) \n",convertTemperature(maxTemp),temperatureUnit()); - lmaxTemp=maxTemp; - } - if(force||unloadedV_x2!=lunlV){ - tt.locate(10,160); printf(" %4.1f V \n",unloadedV_x2/2); lunlV=unloadedV_x2; } if(force||Resr!=lresr){ - tt.locate(10,190); + tt.locate(10,160); printf(" %3.0f mOhms \n",Resr*1000); lresr=Resr; } + if(force||(queryData[DataBaseG7*7+8]!=lTire)){ + tt.locate(10,190); + printf("%3.1f %3.1f %3.1f %3.1f\n",(float)queryData[DataBaseG7*7+5]/4,(float)queryData[DataBaseG7*7+6]/4,(float)queryData[DataBaseG7*7+7]/4,(float)queryData[DataBaseG7*7+8]/4); + lTire=queryData[DataBaseG7*7+8]; + } + } void braking (bool force, bool showButtons, bool prdata=false){ @@ -460,7 +461,7 @@ min=9999; avg=0; for(i=0; i<96; i++){ - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4]; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4]; avg+=bd; if(bd>max) max=bd; if(bd<min) min=bd; @@ -481,8 +482,8 @@ case 1: tt.locate(0,6); printf(" MAX MIN AVG CVLI T1 T2 T3 T4\n %04d %04d %04d %04d %2.0f%s %2.0f%s %2.0f%s %2.0f%s\n\n", - max,min,avg,jv, convertTemperature(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+8]),sTemperatureUnit, - convertTemperature(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+14]),sTemperatureUnit); + max,min,avg,jv, convertTemperature(queryData[DataBaseG4*7+5]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+8]),sTemperatureUnit, + convertTemperature(queryData[DataBaseG4*7+11]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+14]),sTemperatureUnit); tt.rect(8+0*41,16,40+0*41,28,Green); tt.rect(8+1*41,16,40+1*41,28,Yellow); //tt.rect(8+2*41,16,40+2*41,28,White); @@ -493,12 +494,12 @@ for(i=(step-2)*4; i<(step-1)*4; i++){ printf("%02d-%02d : %04d %04d %04d %04d %04d %04d\n", i*6+1,i*6+6, - (battData[BatDataBaseG2*7+i*12+3]<<8)+battData[BatDataBaseG2*7+i*12+4],(battData[BatDataBaseG2*7+i*12+5]<<8)+battData[BatDataBaseG2*7+i*12+6], - (battData[BatDataBaseG2*7+i*12+7]<<8)+battData[BatDataBaseG2*7+i*12+8],(battData[BatDataBaseG2*7+i*12+9]<<8)+battData[BatDataBaseG2*7+i*12+10], - (battData[BatDataBaseG2*7+i*12+11]<<8)+battData[BatDataBaseG2*7+i*12+12],(battData[BatDataBaseG2*7+i*12+13]<<8)+battData[BatDataBaseG2*7+i*12+14]); + (queryData[DataBaseG2*7+i*12+3]<<8)+queryData[DataBaseG2*7+i*12+4],(queryData[DataBaseG2*7+i*12+5]<<8)+queryData[DataBaseG2*7+i*12+6], + (queryData[DataBaseG2*7+i*12+7]<<8)+queryData[DataBaseG2*7+i*12+8],(queryData[DataBaseG2*7+i*12+9]<<8)+queryData[DataBaseG2*7+i*12+10], + (queryData[DataBaseG2*7+i*12+11]<<8)+queryData[DataBaseG2*7+i*12+12],(queryData[DataBaseG2*7+i*12+13]<<8)+queryData[DataBaseG2*7+i*12+14]); } for(i=(step-2)*24; i<(step-1)*24; i++){ - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4]; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4]; if(bd>0){ if(bd==max) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,Green); //if(bd==avg) tt.rect(58+(i%6)*41,34+(int)(i/6)*12,90+(i%6)*41,46+(int)(i/6)*12,White); @@ -583,7 +584,7 @@ // calc each cell-pair voltage, find max and min for(i=0; i<96; i++){ - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4]; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4]; nBar[i] = bd; // init to bar height avg+=bd; if(bd>max) max=bd; @@ -637,14 +638,14 @@ } // values, for now - // BatDataBaseG4 * 7 = 280 + // DataBaseG4 * 7 = 280 tt.locate( 0, yWinMax+40 ); char* sTemperatureUnit = temperatureUnit(); printf(" MAX MIN AVG CVLI T1 T2 T3 T4\n %04d %04d %04d %04d %2.0f%s %2.0f%s %2.0f%s %2.0f%s\n\n", - max,min,avg,jv, convertTemperature(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+8]),sTemperatureUnit, - convertTemperature(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+14]),sTemperatureUnit); + max,min,avg,jv, convertTemperature(queryData[DataBaseG4*7+5]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+8]),sTemperatureUnit, + convertTemperature(queryData[DataBaseG4*7+11]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+14]),sTemperatureUnit); //printf(" MAX MIN AVG CVLI T1 T2 T3 T4\n %04d %04d %04d %04d %02dC %02dC %02dC %02dC\n\n", - // max,min,avg,jv, battData[BatDataBaseG4*7+5],battData[BatDataBaseG4*7+8], battData[BatDataBaseG4*7+11],battData[BatDataBaseG4*7+14]); + // max,min,avg,jv, queryData[DataBaseG4*7+5],queryData[DataBaseG4*7+8], queryData[DataBaseG4*7+11],queryData[DataBaseG4*7+14]); // label the X axis (approximate) tt.locate( 2, yWinMax+5); printf("%04d", min ); @@ -710,7 +711,7 @@ min=9999; avg=0; for(i=0; i<96; i++){ - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4]; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4]; avg+=bd; if(bd>max) max=bd; if(bd<min) min=bd; @@ -748,7 +749,7 @@ // do the bin counting for(int i=0; i<96; i++){ - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4] - min ; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4] - min ; if( bd > iBinValMax ) bd = iBinValMax ; nBin[bd] ++ ; } @@ -767,14 +768,14 @@ } // the values, for now - // BatDataBaseG4 * 7 = 280 + // DataBaseG4 * 7 = 280 tt.locate( 0, yWinMax+40 ); char* sTemperatureUnit = temperatureUnit(); printf(" MAX MIN AVG CVLI T1 T2 T3 T4\n %04d %04d %04d %04d %2.0f%s %2.0f%s %2.0f%s %2.0f%s\n\n", - max,min,avg,jv, convertTemperature(battData[BatDataBaseG4*7+5]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+8]),sTemperatureUnit, - convertTemperature(battData[BatDataBaseG4*7+11]),sTemperatureUnit,convertTemperature(battData[BatDataBaseG4*7+14]),sTemperatureUnit); + max,min,avg,jv, convertTemperature(queryData[DataBaseG4*7+5]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+8]),sTemperatureUnit, + convertTemperature(queryData[DataBaseG4*7+11]),sTemperatureUnit,convertTemperature(queryData[DataBaseG4*7+14]),sTemperatureUnit); //printf(" MAX MIN AVG CVLI T1 T2 T3 T4\n %04d %04d %04d %04d %02dC %02dC %02dC %02dC\n\n", - // max,min,avg,jv, battData[BatDataBaseG2*7+BatDataBaseG4*7+5],battData[BatDataBaseG2*7+BatDataBaseG4*7+8], battData[BatDataBaseG2*7+BatDataBaseG4*7+11],battData[BatDataBaseG2*7+BatDataBaseG4*7+14]); + // max,min,avg,jv, queryData[DataBaseG2*7+DataBaseG4*7+5],queryData[DataBaseG2*7+DataBaseG4*7+8], queryData[DataBaseG2*7+DataBaseG4*7+11],queryData[DataBaseG2*7+DataBaseG4*7+14]); //--------------- // show the bars
--- a/displayModes.h Wed Jul 17 13:48:51 2013 +0000 +++ b/displayModes.h Fri Jul 19 12:48:10 2013 +0000 @@ -16,8 +16,7 @@ extern unsigned char displayLoc; extern char indexLastMsg[0x800]; -//extern unsigned char battData[256]; // -extern unsigned char battData[BatDataBufMax]; // BatDataBufMax +extern unsigned char queryData[DataBufMax]; // BatDataBufMax extern bool showCP; extern bool logEn;
--- a/main.cpp Wed Jul 17 13:48:51 2013 +0000 +++ b/main.cpp Fri Jul 19 12:48:10 2013 +0000 @@ -10,6 +10,7 @@ // * Change semilog efficiency graph to linear with 10 minute values // * Add additional 79b bank readouts // * Add ability to transfer settings config file to/from USB +// * Is CAN/EV designator reversed in canlog? #include "mbed.h" #include "CAN.h" @@ -21,7 +22,7 @@ #include "displayModes.h" #include "TOUCH_TFTx2.h" -char revStr[7] = "122"; // gg - revision string, max 6 characters +char revStr[7] = "123"; // gg - revision string, max 6 characters FATFS USBdrive; LocalFileSystem local("local"); @@ -68,7 +69,7 @@ char indexLastMsg[0x800]={0}; // index table for last message CANMessage lastMsg[100]; // table to store last message of eachtype -unsigned char battData[BatDataBufMax]={0}; // 7 * 0x3D = BatDataBufMax +unsigned char queryData[DataBufMax]={0}; // 7 * 0x3D = DataBufMax unsigned char msgChanged[100]; // inidcates which bytes changed char c; @@ -139,13 +140,14 @@ bool metric = false; bool shunt[96]={0}; bool charging=false; - +bool reqRest=false; int main() { //can1SleepMode.mode(OpenDrain); //can2SleepMode.mode(OpenDrain); char sTemp[40]; unsigned long secs; unsigned char i,j,display=0,lwt=0; + char reqData[8] = {0x30, 0x00, 0x18, 0xff, 0xff, 0xff, 0xff, 0xff}; point lastTouch; float average; tt.set_orientation(1); @@ -331,7 +333,8 @@ logTS(); // Date-Time at wakeup } if (repeatPoll) { // re-enable autopolling if enabled - autoPoll.attach(&autoPollISR,pollInt); + //autoPoll.attach(&autoPollISR,pollInt); + autoPoll.attach(&autoPollISR,10); } } // if idle @@ -418,13 +421,13 @@ dMode[whichTouched] = brakeScreen ; // GoTo Brake Screen } else if (dMode[whichTouched]==cpScreen) { reqMsgCnt=0; - msgReq.attach(&sendReq,0.015); + msgReq.attach(&sendReq,0.035); } else if (dMode[whichTouched]==cpHistScreen) { // gg - hist reqMsgCnt=0; - msgReq.attach(&sendReq,0.015); + msgReq.attach(&sendReq,0.035); } else if (dMode[whichTouched]==cpBarScreen) { // gg - cpbars reqMsgCnt=0; - msgReq.attach(&sendReq,0.015); + msgReq.attach(&sendReq,0.035); } else if (dMode[whichTouched]==configScreen) { mbed_reset(); } else if (dMode[whichTouched]==playbackScreen) { // pause/unpause @@ -668,6 +671,15 @@ } } + if (reqRest){ + reqRest=false; + if (reqMsgCnt<DataBaseG7){ + can1.write(CANMessage(0x79b, reqData, 8)); + }else{ + can1.write(CANMessage(0x745, reqData, 8)); + } + } + if(tick){ // Executes once a second tick=false; headlights = (lastMsg[indexLastMsg[0x358]].data[1]&0x80)?true:false; // headlight/turn signal indicator @@ -705,7 +717,7 @@ if (repeatPoll&&(wait5secs==0)) { // Poll on startup if autopoll enabled logOnce=true; reqMsgCnt=0; - msgReq.attach(&sendReq,0.015); + msgReq.attach(&sendReq,0.035); } }
--- a/utility.cpp Wed Jul 17 13:48:51 2013 +0000 +++ b/utility.cpp Fri Jul 19 12:48:10 2013 +0000 @@ -205,46 +205,54 @@ //------------------- //Miscellaneous on-recieve operations below - if((mType==1)&&(canRXmsg.id==0x7bb)){ // is battery data? Need to store all responses - if(canRXmsg.data[0]<0x20){ + if((mType==2)&&((canRXmsg.id==0x7bb)||(canRXmsg.id==0x765))){ // is 7bb data? Need to store all responses + if(canRXmsg.data[0]==0x10){ if(canRXmsg.data[3]==1){//Group 1 data - bdi=BatDataBaseG1; // index offset for Group 1 data + bdi=DataBaseG1; // index offset for Group 1 data if(debugMode){ printMsg(" Getting Group 1 data\n"); } }else if(canRXmsg.data[3]==2){//Group 2 = cellpair data - bdi=BatDataBaseG2; // index offset for CP data + bdi=DataBaseG2; // index offset for CP data if(debugMode){ printMsg(" Getting cell pair data\n"); } }else if(canRXmsg.data[3]==3){//Group 3 data - bdi=BatDataBaseG3; // index offset for Group 3 data + bdi=DataBaseG3; // index offset for Group 3 data if(debugMode){ printMsg(" Getting Group 3 data\n"); } }else if(canRXmsg.data[3]==4){//Group 4 = temperature data - bdi=BatDataBaseG4; // index offset for Temperature data + bdi=DataBaseG4; // index offset for Temperature data if(debugMode){ printMsg(" Getting temperature data\n"); } }else if(canRXmsg.data[3]==5){//Group 5 data - bdi=BatDataBaseG5; // index offset for Group 5 data + bdi=DataBaseG5; // index offset for Group 5 data if(debugMode){ printMsg(" Getting Group 5 data\n"); } }else if(canRXmsg.data[3]==6){//Group 6 data = shunt data - bdi=BatDataBaseG6; // index offset for Group 6 data + bdi=DataBaseG6; // index offset for Group 6 data if(debugMode){ printMsg(" Getting Group 6 data\n"); } + }else if(canRXmsg.data[3]==0x10){//Group 7 data = tire pressure data + bdi=DataBaseG7; // index offset for Group 6 data + if(debugMode){ + printMsg(" Getting Group 7 data\n"); + } + }else bdi=0xff; // ignore other messages (for now) lasti=0; + // Request rest of data + reqRest=true; } if(bdi<0xff){ @@ -257,27 +265,27 @@ //------- //------- i*=7; - if(i+6 < BatDataBufMax) { - battData[i+0]=canRXmsg.data[1]; - battData[i+1]=canRXmsg.data[2]; - battData[i+2]=canRXmsg.data[3]; - battData[i+3]=canRXmsg.data[4]; - battData[i+4]=canRXmsg.data[5]; - battData[i+5]=canRXmsg.data[6]; - battData[i+6]=canRXmsg.data[7]; + if(i+6 < DataBufMax) { + queryData[i+0]=canRXmsg.data[1]; + queryData[i+1]=canRXmsg.data[2]; + queryData[i+2]=canRXmsg.data[3]; + queryData[i+3]=canRXmsg.data[4]; + queryData[i+4]=canRXmsg.data[5]; + queryData[i+5]=canRXmsg.data[6]; + queryData[i+6]=canRXmsg.data[7]; } - if(i==(BatDataBaseG6+3)*7){ // All data loaded + if(i==(DataBaseG6+1)*7){ // All data loaded logCP=yesBattLog; // Only log if logging enabled showCP=true; // Always show // Find hottest temperature by finding smallest ADC value // 2013 models only have three sensors - k=battData[(BatDataBaseG4*7)+3]*0x100+battData[(BatDataBaseG4*7)+4]; - j=battData[(BatDataBaseG4*7)+6]*0x100+battData[(BatDataBaseG4*7)+7]; + k=queryData[(DataBaseG4*7)+3]*0x100+queryData[(DataBaseG4*7)+4]; + j=queryData[(DataBaseG4*7)+6]*0x100+queryData[(DataBaseG4*7)+7]; if(j<k)k=j; - j=battData[(BatDataBaseG4*7)+9]*0x100+battData[(BatDataBaseG4*7)+10]; + j=queryData[(DataBaseG4*7)+9]*0x100+queryData[(DataBaseG4*7)+10]; if(j<k)k=j; - j=battData[(BatDataBaseG4*7)+12]*0x100+battData[(BatDataBaseG4*7)+13]; + j=queryData[(DataBaseG4*7)+12]*0x100+queryData[(DataBaseG4*7)+13]; if(j<k)k=j; //interpolate from lookup table unsigned short temp_adc[8] = {1000,589,487,401,365,340,309,000}; @@ -290,16 +298,16 @@ maxTemp+=temp_C[ii]; // Get state of health - SOH_x100=battData[(BatDataBaseG1*7)+29]*0x100+battData[(BatDataBaseG1*7)+30]; - Ah_x10000=battData[(BatDataBaseG1*7)+36]*0x10000+battData[(BatDataBaseG1*7)+37]*0x100+battData[(BatDataBaseG1*7)+38]; - SOC_x10000=battData[(BatDataBaseG1*7)+32]*0x10000+battData[(BatDataBaseG1*7)+33]*0x100+battData[(BatDataBaseG1*7)+34]; + SOH_x100=queryData[(DataBaseG1*7)+29]*0x100+queryData[(DataBaseG1*7)+30]; + Ah_x10000=queryData[(DataBaseG1*7)+36]*0x10000+queryData[(DataBaseG1*7)+37]*0x100+queryData[(DataBaseG1*7)+38]; + SOC_x10000=queryData[(DataBaseG1*7)+32]*0x10000+queryData[(DataBaseG1*7)+33]*0x100+queryData[(DataBaseG1*7)+34]; // Save shunt data for(j=0; j<24; j++){ - shunt[j*4+0]=battData[BatDataBaseG6*7+j+3]&0x08; - shunt[j*4+1]=battData[BatDataBaseG6*7+j+3]&0x04; - shunt[j*4+2]=battData[BatDataBaseG6*7+j+3]&0x02; - shunt[j*4+3]=battData[BatDataBaseG6*7+j+3]&0x01; + shunt[j*4+0]=queryData[DataBaseG6*7+j+3]&0x08; + shunt[j*4+1]=queryData[DataBaseG6*7+j+3]&0x04; + shunt[j*4+2]=queryData[DataBaseG6*7+j+3]&0x02; + shunt[j*4+3]=queryData[DataBaseG6*7+j+3]&0x01; } } } @@ -392,49 +400,57 @@ static char data[8] = {0x02, 0x21, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff}; if(reqMsgCnt<99){ switch (reqMsgCnt){ - case BatDataBaseG1: + case DataBaseG1: // group 1 has 6 frames can1.monitor(false); // set to active mode can1SleepMode = 0; // enable TX data[0]=0x02; //change to request group 1 data[1]=0x21; data[2]=0x01; + can1.write(CANMessage(0x79b, data, 8)); break; - case BatDataBaseG2: // group 1 has 6 frames + case DataBaseG2: // group 2 has 29 frames data[0]=0x02; //change to request group 2 (cp data) data[1]=0x21; data[2]=0x02; + can1.write(CANMessage(0x79b, data, 8)); break; - case BatDataBaseG3: // group 2 has 29 frames + case DataBaseG3: // group 3 has 5 frames data[0]=0x02; //change to request group 3 data[1]=0x21; data[2]=0x03; + can1.write(CANMessage(0x79b, data, 8)); break; - case BatDataBaseG4: // group 3 has 5 frames + case DataBaseG4: // group 4 has 3 frames data[0]=0x02; //change to request group 4 (temperature) data[1]=0x21; data[2]=0x04; + can1.write(CANMessage(0x79b, data, 8)); break; - case BatDataBaseG5: // group 4 has 3 frames + case DataBaseG5: // group 5 has 11 frames data[0]=0x02; //change to request group 5 data[1]=0x21; data[2]=0x05; + can1.write(CANMessage(0x79b, data, 8)); break; - case BatDataBaseG6: // group 4 has 3 frames - data[0]=0x02; //change to request group 5 + case DataBaseG6: // group 6 has 4 frames + data[0]=0x02; //change to request group 6 data[1]=0x21; data[2]=0x06; + can1.write(CANMessage(0x79b, data, 8)); break; - case BatDataBaseG7: // group 5 has 11 frames + case DataBaseG7: // group 7 has 2 frames + data[0]=0x02; //change to request group 7 + data[1]=0x21; + data[2]=0x10; + can1.write(CANMessage(0x745, data, 8)); + break; + case DataBaseG8: reqMsgCnt = 99; can1SleepMode = VP230Sleep; // disable TX can1.monitor(true); // set to snoop mode msgReq.detach(); // stop ticker - default: - data[0]=0x30; //change to request next line message - data[1]=0x01; - data[2]=0x00; + default: // wait 30ms } - can1.write(CANMessage(0x79b, data, 8)); reqMsgCnt++; } } @@ -444,7 +460,7 @@ //sprintf(sTemp,"Requesting cp data\n"); // just for debug //printMsg(sTemp); // just for debug reqMsgCnt = 0; //reset message counter - msgReq.attach(&sendReq,0.015); + msgReq.attach(&sendReq,0.035); } void playbackISR() { //Used for autoplayback @@ -661,7 +677,7 @@ min=9999; avg=0; for(i=0; i<96; i++) { - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4]; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4]; avg+=bd; if(bd>max) max=bd; if(bd<min) min=bd; @@ -682,10 +698,10 @@ 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_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]); + f_printf(&bfile,"%d,%d,%d,%d,",(queryData[(DataBaseG4*7)+ 3]<<8)+queryData[(DataBaseG4*7)+ 4],queryData[(DataBaseG4*7)+ 5],(queryData[(DataBaseG4*7)+ 6]<<8)+queryData[(DataBaseG4*7)+ 7],queryData[(DataBaseG4*7)+ 8]); + f_printf(&bfile,"%d,%d,%d,%d", (queryData[(DataBaseG4*7)+ 9]<<8)+queryData[(DataBaseG4*7)+10],queryData[(DataBaseG4*7)+11],(queryData[(DataBaseG4*7)+12]<<8)+queryData[(DataBaseG4*7)+13],queryData[(DataBaseG4*7)+14]); for(i=0; i<96; i++) { - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4]; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4]; f_printf(&bfile,",%d",bd); } f_printf(&bfile,"\r\n"); @@ -722,7 +738,7 @@ min=9999; avg=0; for(i=0; i<96; i++) { - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4]; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4]; avg+=bd; if(bd>max) max=bd; if(bd<min) min=bd; @@ -743,16 +759,17 @@ f_printf(&bfile,"%s,",sTemp); sprintf(sTemp,"%3.1f,%d,%5.1f%%,%5.1f%%, %4.2f, %5.1f,%4.1f,%d,%d,%d,%d,%d",accV,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]); + f_printf(&bfile,"%d,%d,%d,%d,",(queryData[(DataBaseG4*7)+ 3]<<8)+queryData[(DataBaseG4*7)+ 4],queryData[(DataBaseG4*7)+ 5],(queryData[(DataBaseG4*7)+ 6]<<8)+queryData[(DataBaseG4*7)+ 7],queryData[(DataBaseG4*7)+ 8]); + f_printf(&bfile,"%d,%d,%d,%d", (queryData[(DataBaseG4*7)+ 9]<<8)+queryData[(DataBaseG4*7)+10],queryData[(DataBaseG4*7)+11],(queryData[(DataBaseG4*7)+12]<<8)+queryData[(DataBaseG4*7)+13],queryData[(DataBaseG4*7)+14]); for(i=0; i<96; i++) { - bd=(battData[BatDataBaseG2*7+i*2+3]<<8)+battData[BatDataBaseG2*7+i*2+4]; + bd=(queryData[DataBaseG2*7+i*2+3]<<8)+queryData[DataBaseG2*7+i*2+4]; f_printf(&bfile,",%d",bd); - }*/ + } // temporariliy dump everything - for(i=0; i<BatDataBufMax; i++) { - f_printf(&bfile,",%02x",battData[i]); - } + /*for(i=0; i<DataBufMax; i++) { + sprintf(sTemp,",%02x",queryData[i]); + f_printf(&bfile,"%s",sTemp); + }*/ f_printf(&bfile,"\r\n"); f_close(&bfile);
--- a/utility.h Wed Jul 17 13:48:51 2013 +0000 +++ b/utility.h Fri Jul 19 12:48:10 2013 +0000 @@ -27,7 +27,7 @@ extern char indexLastMsg[0x800]; extern unsigned char dMode[2]; extern unsigned char msgChanged[100]; -extern unsigned char battData[BatDataBufMax]; // BatDataBufMax +extern unsigned char queryData[DataBufMax]; // BatDataBufMax extern CANMessage lastMsg[100]; extern CAN can1,can2; extern unsigned int fwCount; @@ -66,6 +66,7 @@ extern bool debugMode; extern bool shunt[96]; extern float accV; +extern bool reqRest; extern "C" { void mbed_reset();