Marek Trojan
/
_8_CONV_2_MASTER
program for conv2
Fork of I2C_HelloWorld_Mbed by
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 // Conv2 Master 00002 #include "main.h" 00003 00004 int main() { 00005 init(); 00006 //conv2.printf("conv2 says: Hello World!\n\r"); 00007 while (1) {} 00008 } 00009 00010 void onUartChar(){ 00011 NVIC_DisableIRQ(UART0_IRQn); 00012 if (conv2.getc() == DATA_TO_WRITE_CHAR){ 00013 char received = conv2.getc(); 00014 //conv2.putc(received); 00015 if (received == RTC_ADDR){ // writing to slave 00016 if (!transmission) { 00017 i2c.start(); 00018 transmission = 1; 00019 } 00020 if (i2c.write((int)received)) 00021 conv2.putc(UART_CONFIRMATION_CHAR); 00022 else { 00023 conv2.putc(UART_NON_CONFIRMATION_CHAR); 00024 } 00025 while (conv2.getc() == DATA_TO_WRITE_CHAR){ 00026 received = conv2.getc(); 00027 if (i2c.write((int)received)) 00028 conv2.putc(UART_CONFIRMATION_CHAR); 00029 else { 00030 conv2.putc(UART_NON_CONFIRMATION_CHAR); 00031 break; 00032 } 00033 } 00034 } 00035 else if (received == (RTC_ADDR | 0x01)){ // reading from slave 00036 char rec; 00037 if (!transmission) { 00038 i2c.start(); 00039 transmission = 1; 00040 } 00041 if (i2c.write((int)rec)){ 00042 //conv2.putc(UART_CHAR_INCOMING); 00043 while (conv2.getc() == DATA_TO_READ_CHAR){ 00044 rec = (char)i2c.read(1); 00045 conv2.putc(UART_CHAR_INCOMING); 00046 conv2.putc(rec); 00047 } 00048 i2c.read(0); 00049 } 00050 else { 00051 conv2.putc(UART_NON_CONFIRMATION_CHAR); 00052 } 00053 conv2.putc(END_OF_TRANSMISSION); 00054 00055 } 00056 } 00057 // i2c.stop(); 00058 transmission = 0; 00059 NVIC_EnableIRQ(UART0_IRQn); 00060 } 00061 00062 void init(void){ 00063 i2c.frequency(100000); 00064 conv2.baud(921600); 00065 conv2.attach(&onUartChar); 00066 }
Generated on Fri Jul 15 2022 22:53:32 by 1.7.2