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