I2C master

Dependencies:   mbed mbed-rtos

Fork of i2c_master by Chaitanya Viswa

Revision:
0:7811fb22b3de
Child:
1:14b369c0f314
diff -r 000000000000 -r 7811fb22b3de master.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/master.cpp	Mon Jun 30 11:55:18 2014 +0000
@@ -0,0 +1,70 @@
+#include "master.h"
+
+float receive_byte()                            //function to read and print the data received         
+{
+     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;
+    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)
+           {
+               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");
+                          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]);
+                            }
+                          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]);
+                            }
+                          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]);
+                            }
+                          
+                          loopvariable2++;
+                        }//if(acknowledge==1)
+                 } //while(loopvariable2<30)
+              master.stop();
+           }//if(acknowledge==1)    
+     }//while(loopvariable1)
+   pc.printf("done");
+}//main
\ No newline at end of file