program for conv2

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

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