kjkjkjkjk

Dependencies:   mbed

Fork of i2c_master by green rosh

Revision:
1:14b369c0f314
Parent:
0:7811fb22b3de
Child:
2:c1387cf55c7d
diff -r 7811fb22b3de -r 14b369c0f314 master.cpp
--- a/master.cpp	Mon Jun 30 11:55:18 2014 +0000
+++ b/master.cpp	Tue Jul 15 10:06:29 2014 +0000
@@ -1,70 +1,73 @@
 #include "master.h"
-
-float receive_byte()                            //function to read and print the data received         
+ 
+I2C master (p28,p27);                      //configure pins p27,p28 as I2C master
+Serial pc (USBTX,USBRX);
+SensorData Sensor;
+  
+void FUNC_I2C_MASTER_MAIN(int command, int slave_address, int iterations)
 {
-     union join
-       {
-         char byte[4];                          //array containing individual bytes
-         float number;                          //floating point number to be appended
-       }append;
-    float value;
-    append.byte[0]=master.read(1);              //reading individual bytes and storing it in array  
-    pc.printf("\n(1) %x\n",append.byte[0]);
-    append.byte[1]=master.read(1);
-    pc.printf("(2) %x\n",append.byte[1]);
-    append.byte[2]=master.read(1);
-    pc.printf("(3) %x\n",append.byte[2]);
-    append.byte[3]=master.read(1);
-    pc.printf("(4) %x\n",append.byte[3]);
-    value = append.number;
-    return(value);                             //returning the 4 byte floating point number  
-}
-
-void FUNC_I2C_MASTER_MAIN()
-{
-    int acknowledge;
-    int loopvariable1=1,loopvariable2=0;
+    printf("\nmaster entered\n");
+    int acknowledge1;
+    int acknowledge2;
+    uint8_t loopvariable1=1,loopvariable2=0;
+    int addr = slave_address;
     while(loopvariable1)
     {
-    //writing the command to slave        
-        master.frequency(100000);               //set clock frequency
-        master.start();                         //initiating the data transfer
-        master.write(addr|0x00);                //addressing the slave to write
-        acknowledge=master.write(get_hk_data);                  //sending the command to slave 
-        if(acknowledge==1)
+//-------------writing the command to slave--------------------------------------------------------------        
+        master.frequency(100000);                       //set clock frequency
+        master.start();                                 //initiating the data transfer
+        acknowledge2=master.write(addr|0x00);           //addressing the slave to write
+        if(acknowledge2==1)                             //proceeding further only if slave is addressed
+        {
+        acknowledge1=master.write(command);         //sending the command to slave 
+        if(acknowledge1==1)                             //proceeding further only if sent data is acknowledged   
            {
-               pc.printf("acknowledge=%d\n",acknowledge);
-               loopvariable1=0;                                    //if acknowledged, breaking loop in next iteration
-    //reading 4 byte data from slave          
-               while(loopvariable2<30)
-                 {
-                    master.frequency(100000);               //set clock frequency 
-                    master.start();                         //initiate data transfer 
-                    acknowledge = master.write(addr | 0x01);       //addressing the slave to read
-                    if(acknowledge==1)
-                       {   
-                          //pc.printf("enter\n");
+               pc.printf("acknowledge1=%d\n",acknowledge1);
+               loopvariable1=0;                         //if acknowledged, breaking loop in next iteration
+//--------------reading data from slave---------------------------------------------------------------          
+               
+                    master.frequency(100000);                    //set clock frequency 
+                    master.start();                              //initiate data transfer 
+                    acknowledge1 = master.write(addr | 0x01);    //addressing the slave to read
+                    
+                    if(acknowledge1==1)                          //proceedong only if slae is addressed
+                       {  
+                       while(loopvariable2<iterations)
+                        { 
                           if(loopvariable2%3==0)
                             {
-                              Sensor.voltage[loopvariable2/3] =  receive_byte();                            //receiving data if acknowledged
-                              pc.printf(" voltage%d = %f\n",loopvariable2/3,Sensor.voltage[loopvariable2/3]);
+                              Sensor.voltage[loopvariable2/3] =  receive_byte();              //receiving data if acknowledged
+                              pc.printf(" voltage%d = %u\n",loopvariable2/3,Sensor.voltage[loopvariable2/3]);
                             }
                           else if(loopvariable2%3==1)
                             {  
-                              Sensor.current[loopvariable2/3] =  receive_byte();                            //receiving data if acknowledged
-                              pc.printf(" current%d = %f\n",loopvariable2/3, Sensor.current[loopvariable2/3]);
+                              Sensor.current[loopvariable2/3] =  receive_byte();             //receiving data if acknowledged
+                              pc.printf(" current%d = %u\n",loopvariable2/3, Sensor.current[loopvariable2/3]);
                             }
                           else if(loopvariable2%3==2)
                             {
-                              Sensor.temp[loopvariable2/3] =  receive_byte();                            //receiving data if acknowledged
-                              pc.printf(" temperature%d = %f\n",loopvariable2/3,Sensor.temp[loopvariable2/3]);
+                              Sensor.temp[loopvariable2/3] =  receive_byte();                //receiving data if acknowledged
+                              pc.printf(" temperature%d = %u\n",loopvariable2/3,Sensor.temp[loopvariable2/3]);
                             }
-                          
                           loopvariable2++;
-                        }//if(acknowledge==1)
-                 } //while(loopvariable2<30)
+                          
+                         } //while(loopvariable2<30) 
+                       }//if(acknowledge1==1)
+                 
               master.stop();
-           }//if(acknowledge==1)    
+           }//if(acknowledge1==1)   
+        }//if(acknowledge2==1) 
      }//while(loopvariable1)
    pc.printf("done");
-}//main
\ No newline at end of file
+printf("\nMaster exited\n");
+}//main
+ 
+ 
+//----------------function to read and return the data received-----------------------------------
+char receive_byte()                                    
+{
+   
+    char value;
+    value = master.read(1);                     
+    return(value);                              //returning the 4 byte floating point number  
+}
\ No newline at end of file