
.
Dependencies: SDHCFileSystem mbed
Revision 24:4c823092012a, committed 2013-07-17
- Comitter:
- TickTock
- Date:
- Wed Jul 17 19:09:27 2013 +0000
- Parent:
- 23:7e6a9684f647
- Child:
- 25:bfbe84136774
- Commit message:
- Added cellpair polling
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Apr 13 05:05:23 2013 +0000 +++ b/main.cpp Wed Jul 17 19:09:27 2013 +0000 @@ -86,9 +86,20 @@ #define maxBufLen 2048 #define canTimeout 5 #define maxFileNum 30 +#define pollInt 60 +#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 -void Log (char *message); //delete -void LogErr (char *message); //deltete +//void Log (char *message); +//void LogErr (char *message); +//void autoPollISR(); +//void sendReq(); extern "C" void mbed_reset(); time_t seconds ; @@ -114,6 +125,9 @@ volatile int secsIdle = 0; volatile bool canIdle = false; Serial pc(USBTX, USBRX); +Ticker autoPoll; +Ticker msgReq; +unsigned char reqMsgCnt = 99; extern "C" void RTC_IRQHandler() { timer.reset(); // zero ms at the-seconds-tic @@ -220,6 +234,62 @@ led2 = !led2; } +void sendReq() { + static char data[8] = {0x02, 0x21, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff}; + if(reqMsgCnt<99){ + switch (reqMsgCnt){ + case BatDataBaseG1: + can1.monitor(false); // set to active mode + can1_SleepMode = 0; // enable TX + data[0]=0x02; //change to request group 1 + data[1]=0x21; + data[2]=0x01; + break; + case BatDataBaseG2: // group 1 has 6 frames + data[0]=0x02; //change to request group 2 (cp data) + data[1]=0x21; + data[2]=0x02; + break; + case BatDataBaseG3: // group 2 has 29 frames + data[0]=0x02; //change to request group 3 + data[1]=0x21; + data[2]=0x03; + break; + case BatDataBaseG4: // group 3 has 5 frames + data[0]=0x02; //change to request group 4 (temperature) + data[1]=0x21; + data[2]=0x04; + break; + case BatDataBaseG5: // group 4 has 3 frames + data[0]=0x02; //change to request group 5 + data[1]=0x21; + data[2]=0x05; + break; + case BatDataBaseG6: // group 4 has 3 frames + data[0]=0x02; //change to request group 5 + data[1]=0x21; + data[2]=0x06; + break; + case BatDataBaseG7: // group 5 has 11 frames + reqMsgCnt = 99; + can1_SleepMode = 1; // 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; + } + can1.write(CANMessage(0x79b, data, 8)); + reqMsgCnt++; + } +} + +void autoPollISR(){ + reqMsgCnt = 0; //reset message counter + msgReq.attach(&sendReq,0.015); +} + int main() { int readPointer=0; int fmon; @@ -237,7 +307,9 @@ PB1.mode(PullUp) ; //Pushbutton 1 can1.attach(&recieve1); can2.attach(&recieve2); - + autoPoll.attach(&autoPollISR,pollInt); // Poll battery data every 60 seconds + msgReq.attach(&sendReq,0.015); // Each poll message separated by 15ms + timer.start() ; RTC_Init(); // start the RTC Interrupts that sync the timer @@ -419,4 +491,3 @@ } //if (CD==1) } //while (true) } -