IGGE Power board
Dependencies: mbed ADS1015 USBDevice MCP4725
Diff: main.cpp
- Revision:
- 5:6b90ed7f3eb1
- Parent:
- 4:d29a7b77b1c6
- Child:
- 6:7691e36d2337
--- a/main.cpp Mon Apr 07 04:32:52 2014 +0000 +++ b/main.cpp Mon Apr 07 06:42:13 2014 +0000 @@ -14,7 +14,6 @@ I2C i2c(p28, p27); Adafruit_ADS1015 ads(&i2c); //USBSerial pc; // USB CDC serial port -CAN cantbus(p30, p29); Ticker graph; @@ -49,7 +48,7 @@ #define fiveScal 12.2 //Relays -DigitalOut relSens(p21); // PROTO +DigitalOut relSens(p21); // PROTO DigitalOut relUsr(p22); DigitalOut relNet(p23); DigitalOut relCpuRst(p24); @@ -58,10 +57,8 @@ //30 minute graph arrays uint16_t powerArr [10]; //{iBat,vBat,iTwelve, vTwelve, iFive, vFive, iMot, vMot, iCpu, iPeri} - +uint16_t ibat,vbat,itwelve, vtwelve, ifive, vfive, imot, vmot, icpu, iperi= 0; -float ibat =0; -float ifive = 0; //volt @@ -72,6 +69,7 @@ void sending_values(long int int1,long int int2,long int int3,long int int4, int ID ) { //val(); + led1=1; counter[0]=int1 >> 8; counter[1]=int1 & 0xFF; counter[2]=int2 >> 8; @@ -80,23 +78,23 @@ counter[5]=int3 & 0xFF; counter[6]=int4 >> 8; counter[7]=int4 & 0xFF; - + if(can1.write(CANMessage(ID, counter, 8))) { - + printf("Message sent: %x%x\r\n", counter[1],counter[0]); printf("Should be: %d, %d, %d, %d\r\n", int1,int2,int3,int4); -} + } + led1=0; } - + -void Can_main(bool send,long int val1,long int val2,long int val3,long int val4, int the_ID) { +void Can_main(bool send,long int val1,long int val2,long int val3,long int val4, int the_ID) +{ - - std::map <int,string> CanIDMap; //CanIDMap[0]="Motor Controller String"; @@ -113,50 +111,50 @@ CanIDMap[11]="LCD Controller Ints"; CanIDMap[12]="Zac is the Best"; - - + + //ticker.attach(&sending_values,1); CANMessage msg; int fixer1=0; int fixer2=0; int fixer3=0; int fixer4=0; - while(1) { - if (send==true){ + + if (send==true) { sending_values(val1,val2,val3,val4,the_ID); - } - if(can2.read(msg)) { - bool tester= CanIDMap.find(msg.id) != CanIDMap.end(); - if (tester){ + } + if(can2.read(msg)) { + bool tester= CanIDMap.find(msg.id) != CanIDMap.end(); + if (tester) { printf("Message received: %x %x \r\n", msg.data[0], msg.data[1]); - + //printf("ID of message: %s \r\n", CanIDMap[msg.id]); - + std::string str=CanIDMap[msg.id]; unsigned pos = str.find("_"); // position of "_" in str std::string str3 = str.substr (pos+1); // get from past"_" to the end - // printf("Dealing with: %s \r\n",str3); + // printf("Dealing with: %s \r\n",str3); fixer1=((msg.data[0]<<8) | (msg.data[1])); fixer2=((msg.data[2]<<8) | (msg.data[3])); fixer3=((msg.data[4]<<8) | (msg.data[5])); fixer4=((msg.data[6]<<8) | (msg.data[7])); led2 = !led2; - + printf("Resulting Answer back is: %d, %d, %d, %d\r\n\r\n\r\n",fixer1,fixer2,fixer3,fixer4 ); - break; - } - - else{ - - printf("Can Message, not related to this controller\r\n\r\n"); - + } - wait(0.2); + else { + + printf("Can Message, not related to this controller\r\n\r\n"); + + } + + //wait(0.2); } - -} + + } @@ -164,33 +162,35 @@ -void updateArray (void) +void sendArray (void) { - - printf("reading Vbat: %d\r\n", vBat); // print reading - printf("reading Battery Current: %2.8f\r\n", ibat); // print reading - printf("reading Five Volt Current: %2.8f\r\n", ifive); // print reading - Can_main(true,15,84,1254,3254,1); - // printf("reading: %d\r\n", vMot); // print reading - /* - vBat = ads.readADC_SingleEnded(0); // read channel 0 PROTO - vTwelve = ads.readADC_SingleEnded(1); // read channel 0 - vFive = ads.readADC_SingleEnded(2); // read channel 0 - vMot = ads.readADC_SingleEnded(3); // read channel 0 + printf("___________________________\r\n"); + printf("Sending messages....\r\n"); + printf("Message id 1: Batt Cur = %d, Batt Volt = %d, Twelve Cur = %d, Twelve Volt = %d....",powerArr[0],powerArr[1],powerArr[2],powerArr[3]); + sending_values(powerArr[0],powerArr[1],powerArr[2],powerArr[3],1); + printf("....sent\r\n"); + printf("Message id 2: Five Cur = %d, Five Volt = %d, Mot Cur = %d, Mot Volt = %d....",powerArr[4],powerArr[5],powerArr[6],powerArr[7]); + sending_values(powerArr[4],powerArr[5],powerArr[6],powerArr[7],2); + printf("....sent\r\n"); + printf("Message id 3: Cpu Cur = %d, Periferal Cur = %d, null, null....",powerArr[8],powerArr[9]); + sending_values(powerArr[8],powerArr[9],0,0,3); + printf("....sent\r\n"); + printf("CANBUS TRANMISSION COMPLETE\r\n"); + printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n"); + relNet=!relNet; + float neW =(powerArr[1]*.003); + printf("actual vbat= %2.4f volt\r\n", neW); +} - - */ - -} void setup(void) { - graph.attach(&updateArray, 10); //update array every 10 seconds - // cantbus.frequency(500000); - // CANMessage can_MsgRx; - + graph.attach(&sendArray, (1.5)); //update array every 10 seconds + // cantbus.frequency(500000); + // CANMessage can_MsgRx; + //initialize relays relSens= 0; relNet =0; @@ -205,25 +205,32 @@ int main() { setup(); - - graph.attach(updateArray, 2); //update array every 10 seconds - //cantbus.frequency(500000); - // CANMessage can_MsgRx; - - //initialize relays - relSens= 0; - relNet =0; - relCpuPower=0; - relCpuRst =0; - relUsr=0; + + while (1) { -vBat = ads.readADC_SingleEnded(0); // read channel 0 -ibat = (iBat.read())*3.3; -ifive = (iFive.read())*3.3; + + -led0=!led0; + powerArr[0]=ibat = (iBat.read_u16()); + powerArr[1]=vBat = ads.readADC_SingleEnded(0); // read channel 0 PROTO + + powerArr[2]=itwelve = (iTwelve.read_u16()); + powerArr[3]=vtwelve = ads.readADC_SingleEnded(1); // read channel 1 + + powerArr[4]=ifive = (iFive.read_u16()); + powerArr[5]=vfive = ads.readADC_SingleEnded(2); // read channel 0 + + powerArr[6]=imot = (iMot.read_u16()); + powerArr[7]=vmot = ads.readADC_SingleEnded(3); // read channel 0 + + powerArr[8]=icpu = (iCpu.read_u16()); + powerArr[9]=iperi = (iPeri.read_u16()); + +//powerArr[] = {ibat,vbat,itwelve, vtwelve, ifive, vfive, imot, vmot, icpu, iperi}; + + led0=!led0; } }