program for I2C master device

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

Revision:
5:8dc6d7d81250
Parent:
4:1ec553356dcc
Child:
6:6ee93a0f8d24
--- a/main.cpp	Tue Dec 01 22:16:18 2015 +0000
+++ b/main.cpp	Sun Dec 06 21:24:01 2015 +0000
@@ -6,29 +6,37 @@
     while (1) {}
 }
 
-void writeNBytes(){
-    //writing to slave
-    int write_ack = i2c.write(SLAVE_ADDR, data, 100);
+void write_and_read(){
+    //write_data();    
+    wait_ms(20);
+    read_data();
+}  
+
+void write_data(){
+     //writing to slave
+    int write_ack = i2c.write(SLAVE_ADDR, data, DATA_SIZE-1);
     if (!write_ack) {
         i2c.stop();
         pc.printf("<Writing> OK\n\r");
     }
     else 
         pc.printf("<Writing> Error\n\r");
-    wait_ms(20);
-   i2c.stop();
-    /*
+    //wait_ms(20);   
+}
+
+void read_data(){
     //reading from slave
     char fromSlave[DATA_SIZE];
-    int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE);
-    if (!read_ack) 
+    int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE - 1);
+    if (!read_ack) {
         pc.printf("<Reading> OK\n\r");
+        fromSlave[DATA_SIZE - 1] = '\0';
+        pc.printf("Data from Slave: %s\n\n\r", fromSlave);  
+        }
     else 
-        pc.printf("<Reading> Error\n\r");
-    fromSlave[DATA_SIZE - 1] = '\0';
-    pc.printf("Data from Slave: %s\n\n\r", fromSlave);   
-    i2c.stop();*/
-}    
+        pc.printf("<Reading> Error\n\r");   
+}
+  
 /*
 void i2cReadWrite(void){
     for(int a = 0; a < MSG_SIZE; a++) fromSlave[a] = 0;
@@ -54,9 +62,10 @@
 
 void init(void){
     i2c.frequency(100000);
-    i2c_ticker.attach(&writeNBytes, 2.0f);
+    i2c_ticker.attach(&write_and_read, 2.0f);
     pc.baud(921600);
     pc.printf("Master says: Hello World!\n\r");
     for (uint8_t i = 0; i < DATA_SIZE; i++)
-        data[i] = i;
+        data[i] = i+65;
+    data[0]=0;
 }
\ No newline at end of file