I2C K8003

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
eric11fr
Date:
Wed Feb 13 23:23:12 2019 +0000
Commit message:
i2c

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 7cbdb79aafea main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Feb 13 23:23:12 2019 +0000
@@ -0,0 +1,82 @@
+#include "mbed.h"
+#include <I2C.h>
+
+I2C i2c(p28,p27);
+Serial pc(USBTX, USBRX);
+//Serial uart(p28, p27);
+char buffer[128];
+        
+    
+DigitalOut myled(LED1);
+void funct_in(int adress, char *data)
+{
+ 
+    i2c.read(adress,data,1);
+}
+
+void funct_out(int adress,char *data)
+{
+    i2c.write(adress,data,1);
+}
+
+void can_in(int adress,char control, char *data)
+{
+    i2c.write(adress, &control,1);
+    i2c.read(adress,data,1);
+}
+
+void dac_out(int adress,char *data)
+{
+    i2c.write(adress, data,2);
+}
+
+int main() {
+   // pc.gets(buffer,4);
+   //if(uart.readable()) {
+    //pc.putc(uart.getc());
+    
+    int adress_out=0x70;//pcf_out
+    int adress_in=0x72;// pcf_in
+    int adress_can=0x90;//4 can/ 1 cna 8bits
+    int adress_dac=0x40;//dac 6bits 8 voies
+    char x,*tab;
+    char cmd[2];
+    tab=cmd;
+    while(1) 
+    {
+        if(pc.readable()) 
+        {
+            if(pc.getc()=='i')
+                {
+                    funct_in(adress_in,&x);
+                    pc.printf("in=%d",x);
+                }
+            if (pc.getc()=='o')
+                {cmd[0]=pc.getc();
+                cmd[1]=pc.getc();
+                    funct_out(adress_out,tab);//get binary value form labview: 0x00 to 0xFF
+                }
+            if (pc.getc()=='a')// frame : a<control><data> : a<0 OUT IN1 IN0 0 I CH1 CH0><D7 D6 D5 D4 D3 D2 D1 D0>
+                {   cmd[0]=0;
+                    cmd[0]|=pc.getc()-48;//channel number
+                    cmd[0]|=(pc.getc()-48)<<2;//auto iteration channel
+                    cmd[0]|=(pc.getc()-48)<<4;//input type diff/single ended
+                    cmd[0]|=(pc.getc()-48)<<6;//dac active
+                
+                    can_in(adress_can,cmd[0],&x);
+                    pc.printf("%x ",cmd[0]);
+                    pc.printf("can=%d\n",x);
+                }
+            if(pc.getc()=='d')//frame : d<control><data> : d<I3 I2 I1 I0 SD SC SB SA><x x D5 D4 D3 D2 D1 D0>
+            //SD to SA : Valid subaddresses are: 0H to 7H. The subaddresses correspond to DAC0 to DAC7 channel
+            //I3 to I0 : 0 or F
+                {   cmd[0]=(pc.getc()-48); //DAC0 to DAC7
+                    cmd[0]|=0x0F<<4;//0 or F >> send F
+                    //sprintf(cmd[1],"%d",pc.gets());// data to convert
+                    cmd[1]=pc.getc();// data to convert
+                   // pc.printf("%x %x\n",cmd[0],cmd[1]);
+                    dac_out(adress_dac,cmd);
+                }
+        }  
+    }
+}
diff -r 000000000000 -r 7cbdb79aafea mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Feb 13 23:23:12 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc
\ No newline at end of file