IGGE Power board

Dependencies:   mbed ADS1015 USBDevice MCP4725

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;
 
     }
 }