program for I2C master device

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

Revision:
4:1ec553356dcc
Parent:
3:df6232c70efd
Child:
5:8dc6d7d81250
--- a/main.cpp	Fri Mar 27 20:14:09 2015 +0000
+++ b/main.cpp	Tue Dec 01 22:16:18 2015 +0000
@@ -1,41 +1,62 @@
-/* mbed Example Program
- * Copyright (c) 2006-2014 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "mbed.h"
+// I2C Master
+#include "main.h"
  
-// Read temperature from LM75BD
-
-I2C i2c(I2C_SDA , I2C_SCL ); 
+int main() {
+    init();
+    while (1) {}
+}
 
-const int addr7bit = 0x48;      // 7 bit I2C address
-const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
+void writeNBytes(){
+    //writing to slave
+    int write_ack = i2c.write(SLAVE_ADDR, data, 100);
+    if (!write_ack) {
+        i2c.stop();
+        pc.printf("<Writing> OK\n\r");
+    }
+    else 
+        pc.printf("<Writing> Error\n\r");
+    wait_ms(20);
+   i2c.stop();
+    /*
+    //reading from slave
+    char fromSlave[DATA_SIZE];
+    int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE);
+    if (!read_ack) 
+        pc.printf("<Reading> OK\n\r");
+    else 
+        pc.printf("<Reading> Error\n\r");
+    fromSlave[DATA_SIZE - 1] = '\0';
+    pc.printf("Data from Slave: %s\n\n\r", fromSlave);   
+    i2c.stop();*/
+}    
+/*
+void i2cReadWrite(void){
+    for(int a = 0; a < MSG_SIZE; a++) fromSlave[a] = 0;
+    
+    int ack = i2c.write(SLAVE_ADDR, data, strlen(data));
+    if (!ack) 
+        pc.printf("data send to slave\n\r");
+    else 
+        pc.printf("NACK!\n\r");
 
-int main() {
-    char cmd[2];
-    while (1) {
-        cmd[0] = 0x01;
-        cmd[1] = 0x00;
-        i2c.write(addr8bit, cmd, 2);
- 
-        wait(0.5);
- 
-        cmd[0] = 0x00;
-        i2c.write(addr8bit, cmd, 1);
-        i2c.read( addr8bit, cmd, 2);
- 
-        float tmp = (float((cmd[0]<<8)|cmd[1]) / 256.0);
-        printf("Temp = %.2f\n", tmp);
-    }
+    wait(0.1);
+    
+    int read_ack = i2c.read(SLAVE_ADDR, fromSlave, MSG_SIZE - 1);
+    if (!read_ack) 
+        pc.printf("data received from slave\n\r");
+    else 
+        pc.printf("data not received\n\r");
+        
+    pc.printf("Data from Slave: %s\n\r", fromSlave); 
+    
+    for(int y = 0; y < 32; y++) fromSlave[y]='x';   
+}*/
+
+void init(void){
+    i2c.frequency(100000);
+    i2c_ticker.attach(&writeNBytes, 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;
 }
\ No newline at end of file