i2c master header file

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
viswachaitanya
Date:
Mon Jun 30 11:55:18 2014 +0000
Commit message:
m.h version1

Changed in this revision

master.cpp Show annotated file Show diff for this revision Revisions of this file
master.h Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/master.h	Mon Jun 30 11:55:18 2014 +0000
@@ -0,0 +1,25 @@
+#include "mbed.h"                          //library                                              //
+#define get_hk_data 1                              //sample telecommands
+#define telecommand2 2
+#define telecommand3 3
+#define telecommand4 4
+#define telecommand5 5
+#define telecommand6 6
+#define telecommand7 7
+#define telecommand8 8
+#define telecommand9 9 
+#define telecommand10 10
+I2C master (p28,p27);                     //configure pins p27,p28 as master
+Serial pc (USBTX,USBRX);
+
+const int addr = 0x20;                    //slave address 
+float receive_byte();
+void FUNC_I2C_MASTER_MAIN();
+
+struct SensorData
+{
+    float voltage[10];
+    float current[10];
+    float temp[10];
+    //float Battery[2];
+} Sensor;
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Jun 30 11:55:18 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/024bf7f99721
\ No newline at end of file