Marek Trojan
/
_8_CONV_2_MASTER
program for conv2
Fork of I2C_HelloWorld_Mbed by
Diff: main.cpp
- Revision:
- 4:35e714396141
- Parent:
- 3:df6232c70efd
- Child:
- 5:759439e9e976
--- a/main.cpp Fri Mar 27 20:14:09 2015 +0000 +++ b/main.cpp Tue Dec 01 22:15:31 2015 +0000 @@ -1,41 +1,100 @@ -/* 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" - -// Read temperature from LM75BD - -I2C i2c(I2C_SDA , I2C_SCL ); +// Conv2 Master +#include "main.h" + +int main() { + init(); + //conv2.printf("conv2 says: Hello World!\n\r"); + while (1) {} +} -const int addr7bit = 0x48; // 7 bit I2C address -const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90 +void onUartChar(){ + NVIC_DisableIRQ(UART0_IRQn); + if (conv2.getc() == DATA_TO_WRITE_CHAR){ + char received = conv2.getc(); + //conv2.putc(received); + if (received == SLAVE_ADDR){ // writing to slave + if (!transmission) { + i2c.start(); + transmission = 1; + } + if (i2c.write((int)received)) + conv2.putc(UART_CONFIRMATION_CHAR); + else { + conv2.putc(UART_NON_CONFIRMATION_CHAR); + } + while (conv2.getc() == DATA_TO_WRITE_CHAR){ + received = conv2.getc(); + if (i2c.write((int)received)) + conv2.putc(UART_CONFIRMATION_CHAR); + else { + conv2.putc(UART_NON_CONFIRMATION_CHAR); + break; + } + } + } + else if (received == (SLAVE_ADDR | 0x01)){ // reading from slave + char rec; + if (!transmission) { + i2c.start(); + transmission = 1; + } + if (i2c.write((int)rec)) + conv2.putc(UART_CONFIRMATION_CHAR); + else { + conv2.putc(UART_NON_CONFIRMATION_CHAR); + } + while (conv2.getc() == DATA_TO_READ_CHAR){ + rec = (char)i2c.read(1); + conv2.putc(UART_CHAR_INCOMING); + conv2.putc(rec); + } + + }/* + else{ + conv2.putc((char)0x12); + } */ + } + + /* + while (conv2.getc() == DATA_TO_WRITE_CHAR){ + char received = conv2.getc(); + if (received & 0x01 == 0x00){ // writing to slave + if (!transmission) { + i2c.start(); + transmission = 1; + } + if (i2c.write((int)received)) + conv2.putc(UART_CONFIRMATION_CHAR); + else { + conv2.putc(UART_NON_CONFIRMATION_CHAR); + break; + } + } + else if (received & 0x01 == 0x01){ // reading from slave + + } + else{} + + } */ + /*if (first_rec == DATA_TO_READ_CHAR){ + char sec_rec = conv2.getc(); + if (i2c.write((int)sec_rec)) + conv2.putc(UART_CONFIRMATION_CHAR); + else { + conv2.putc(UART_NON_CONFIRMATION_CHAR); + break; + } + while (conv2.getc()) == DATA_TO_READ_CHAR){ + + } + }*/ + i2c.stop(); + transmission = 0; + NVIC_EnableIRQ(UART0_IRQn); +} -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); - } -} \ No newline at end of file +void init(void){ + i2c.frequency(100000); + conv2.baud(921600); + conv2.attach(&onUartChar); +} \ No newline at end of file