Marek Trojan
/
_8_CONV_2_MASTER
program for conv2
Fork of I2C_HelloWorld_Mbed by
main.cpp@6:35640814d53b, 2015-12-15 (annotated)
- Committer:
- marcus255
- Date:
- Tue Dec 15 22:44:19 2015 +0000
- Revision:
- 6:35640814d53b
- Parent:
- 5:759439e9e976
- Child:
- 7:04a1f5398882
memore read/write works fine
Who changed what in which revision?
User | Revision | Line number | New 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 | 6:35640814d53b | 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 | 6:35640814d53b | 48 | i2c.read(0); |
marcus255 | 5:759439e9e976 | 49 | } |
marcus255 | 4:35e714396141 | 50 | else { |
marcus255 | 4:35e714396141 | 51 | conv2.putc(UART_NON_CONFIRMATION_CHAR); |
marcus255 | 4:35e714396141 | 52 | } |
marcus255 | 5:759439e9e976 | 53 | conv2.putc(END_OF_TRANSMISSION); |
marcus255 | 5:759439e9e976 | 54 | |
marcus255 | 5:759439e9e976 | 55 | } |
marcus255 | 4:35e714396141 | 56 | } |
marcus255 | 5:759439e9e976 | 57 | // i2c.stop(); |
marcus255 | 4:35e714396141 | 58 | transmission = 0; |
marcus255 | 4:35e714396141 | 59 | NVIC_EnableIRQ(UART0_IRQn); |
marcus255 | 4:35e714396141 | 60 | } |
mbed_official | 0:f76c26307f9a | 61 | |
marcus255 | 4:35e714396141 | 62 | void init(void){ |
marcus255 | 4:35e714396141 | 63 | i2c.frequency(100000); |
marcus255 | 4:35e714396141 | 64 | conv2.baud(921600); |
marcus255 | 4:35e714396141 | 65 | conv2.attach(&onUartChar); |
marcus255 | 4:35e714396141 | 66 | } |