program for conv2

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

Committer:
marcus255
Date:
Sun Dec 06 21:24:46 2015 +0000
Revision:
5:759439e9e976
Parent:
4:35e714396141
Child:
6:35640814d53b
still not complete write-read sequence

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcus255 4:35e714396141 1 // Conv2 Master
marcus255 4:35e714396141 2 #include "main.h"
marcus255 4:35e714396141 3
marcus255 4:35e714396141 4 int main() {
marcus255 4:35e714396141 5 init();
marcus255 4:35e714396141 6 //conv2.printf("conv2 says: Hello World!\n\r");
marcus255 4:35e714396141 7 while (1) {}
marcus255 4:35e714396141 8 }
mbed_official 0:f76c26307f9a 9
marcus255 4:35e714396141 10 void onUartChar(){
marcus255 4:35e714396141 11 NVIC_DisableIRQ(UART0_IRQn);
marcus255 4:35e714396141 12 if (conv2.getc() == DATA_TO_WRITE_CHAR){
marcus255 4:35e714396141 13 char received = conv2.getc();
marcus255 4:35e714396141 14 //conv2.putc(received);
marcus255 4:35e714396141 15 if (received == SLAVE_ADDR){ // writing to slave
marcus255 4:35e714396141 16 if (!transmission) {
marcus255 4:35e714396141 17 i2c.start();
marcus255 4:35e714396141 18 transmission = 1;
marcus255 4:35e714396141 19 }
marcus255 4:35e714396141 20 if (i2c.write((int)received))
marcus255 4:35e714396141 21 conv2.putc(UART_CONFIRMATION_CHAR);
marcus255 4:35e714396141 22 else {
marcus255 4:35e714396141 23 conv2.putc(UART_NON_CONFIRMATION_CHAR);
marcus255 4:35e714396141 24 }
marcus255 4:35e714396141 25 while (conv2.getc() == DATA_TO_WRITE_CHAR){
marcus255 4:35e714396141 26 received = conv2.getc();
marcus255 4:35e714396141 27 if (i2c.write((int)received))
marcus255 4:35e714396141 28 conv2.putc(UART_CONFIRMATION_CHAR);
marcus255 4:35e714396141 29 else {
marcus255 4:35e714396141 30 conv2.putc(UART_NON_CONFIRMATION_CHAR);
marcus255 4:35e714396141 31 break;
marcus255 4:35e714396141 32 }
marcus255 4:35e714396141 33 }
marcus255 4:35e714396141 34 }
marcus255 4:35e714396141 35 else if (received == (SLAVE_ADDR | 0x01)){ // reading from slave
marcus255 4:35e714396141 36 char rec;
marcus255 4:35e714396141 37 if (!transmission) {
marcus255 4:35e714396141 38 i2c.start();
marcus255 4:35e714396141 39 transmission = 1;
marcus255 4:35e714396141 40 }
marcus255 5:759439e9e976 41 if (i2c.write((int)rec)){
marcus255 5:759439e9e976 42 conv2.putc(UART_CHAR_INCOMING);
marcus255 5:759439e9e976 43 while (conv2.getc() == DATA_TO_READ_CHAR){
marcus255 5:759439e9e976 44 rec = (char)i2c.read(1);
marcus255 5:759439e9e976 45 conv2.putc(UART_CHAR_INCOMING);
marcus255 5:759439e9e976 46 conv2.putc(rec);
marcus255 5:759439e9e976 47 }
marcus255 5:759439e9e976 48 }
marcus255 4:35e714396141 49 else {
marcus255 4:35e714396141 50 conv2.putc(UART_NON_CONFIRMATION_CHAR);
marcus255 4:35e714396141 51 }
marcus255 5:759439e9e976 52 conv2.putc(END_OF_TRANSMISSION);
marcus255 5:759439e9e976 53
marcus255 5:759439e9e976 54 }
marcus255 4:35e714396141 55 }
marcus255 5:759439e9e976 56 // i2c.stop();
marcus255 4:35e714396141 57 transmission = 0;
marcus255 4:35e714396141 58 NVIC_EnableIRQ(UART0_IRQn);
marcus255 4:35e714396141 59 }
mbed_official 0:f76c26307f9a 60
marcus255 4:35e714396141 61 void init(void){
marcus255 4:35e714396141 62 i2c.frequency(100000);
marcus255 4:35e714396141 63 conv2.baud(921600);
marcus255 4:35e714396141 64 conv2.attach(&onUartChar);
marcus255 4:35e714396141 65 }