program for conv2

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }