Marek Trojan
/
_8_KL46_M_simple_write
program for I2C master device
Fork of I2C_HelloWorld_Mbed by
Diff: main.cpp
- 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(®addr); // 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