program for I2C master device

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

Revision:
7:b07706b16279
Parent:
6:6ee93a0f8d24
Child:
8:3e6945d5d9a1
--- a/main.cpp	Mon Dec 07 21:45:21 2015 +0000
+++ b/main.cpp	Tue Dec 15 22:44:03 2015 +0000
@@ -9,33 +9,47 @@
 void write_and_read(){
     write_data();    
     wait_ms(20);
-    //read_data();
-    //wait_ms(20);
+    char regaddr = 0x24;
+    read_data(&regaddr); // works OK (pure read, without pointer setting)
+    wait_ms(20);
 }  
 
 void write_data(){
      //writing to slave
-    int write_ack = i2c.write(SLAVE_ADDR, data, DATA_SIZE-1);
+    int write_ack = i2c.write(SLAVE_ADDR, data, DATA_SIZE);
     if (!write_ack) {
-        i2c.stop();
-        pc.printf("<Writing> OK\n\r");
+        //i2c.stop();
+        pc.printf("<Writing>    OK\n\r");
     }
     else 
-        pc.printf("<Writing> Error\n\r");
+        pc.printf("<Writing>    Error\n\r");
     //wait_ms(20);   
 }
 
-void read_data(){
+void read_data(char* cell_addr){     
+    /*int write_ack = i2c.write(SLAVE_ADDR, cell_addr, 1);
+    if (!write_ack) {
+        //i2c.stop();
+        pc.printf("<Addressing> OK\n\r");
+    }
+    else {
+        pc.printf("<Addressing> Error\n\r");
+        return;
+    }
+    //wait_ms(5);   
+    */
     //reading from slave
-    char fromSlave[DATA_SIZE];
-    int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE - 1);
+    char fromSlave[DATA_SIZE + 1];
+    int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE);
     if (!read_ack) {
-        pc.printf("<Reading> OK\n\r");
-        fromSlave[DATA_SIZE - 1] = '\0';
+        //i2c.stop();
+        pc.printf("<Reading>    OK\n\r");
+        fromSlave[DATA_SIZE] = '\0';
         pc.printf("Data from Slave: %s\n\n\r", fromSlave);  
+        
         }
     else 
-        pc.printf("<Reading> Error\n\r");   
+        pc.printf("<Reading>    Error\n\r");   
 }
   
 /*
@@ -65,8 +79,8 @@
     i2c.frequency(100000);
     i2c_ticker.attach(&write_and_read, 2.0f);
     pc.baud(921600);
-    pc.printf("Master says: Hello World!\n\r");
+    //pc.printf("Master says: Hello World!\n\r");
     for (uint8_t i = 0; i < DATA_SIZE; i++)
         data[i] = i+65;
-    data[0]=0;
+    //data[0]=0;
 }
\ No newline at end of file