program for I2C master device

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

main.cpp

Committer:
marcus255
Date:
2015-12-01
Revision:
4:1ec553356dcc
Parent:
3:df6232c70efd
Child:
5:8dc6d7d81250

File content as of revision 4:1ec553356dcc:

// I2C Master
#include "main.h"
 
int main() {
    init();
    while (1) {}
}

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");

    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;
}