only for LPC824 chip to match hardware I2C channels(2->4)

Dependencies:   mbed

Revision:
5:655e58295f1e
Parent:
4:bbea62f185e1
Child:
6:9368ba5f485c
--- a/main.cpp	Thu Oct 23 16:18:03 2014 +0000
+++ b/main.cpp	Fri Oct 24 09:27:38 2014 +0000
@@ -1,4 +1,5 @@
 #include "mbed.h"
+#include "i2c_api.h"
 
 Serial pc(USBTX,USBRX);
 /*
@@ -16,7 +17,7 @@
 I2C dev2(A0,A1);//6,14
 I2C dev3(A2,A3);//23,22
 I2C dev4(A4,A5);//21,20
-//BusOut bus(LED1,LED2,LED3,LED4);
+BusOut bus(LED1,LED2,LED3,LED4);
 DigitalOut led1(LED1);
 //DigitalOut led2(LED2);
 //DigitalOut led3(LED3);
@@ -42,9 +43,28 @@
     dev3.frequency(100000);//100k
     dev4.frequency(100000);//100k
 
+/** debug code
+pc.printf("assign0: %08X\n\r",LPC_SYSCON->PRESETCTRL );//??_??_??_(?|4)?
+pc.printf("enable I2C0: %08X\n\r",LPC_SWM->PINENABLE0);//????_(C|?)???
 pc.printf("assign1: %08X\n\r",LPC_SWM->PINASSIGN[9] );//23_14_06_??
 pc.printf("assign2: %08X\n\r",LPC_SWM->PINASSIGN[10] );//??_20_21_22
 pc.printf("clock: %08X\n\r",LPC_SYSCON->SYSAHBCLKCTRL );// ??_(?|E)?_??_(?|2)?
+pc.printf("dev1: %08X\n\r",dev1 );
+pc.printf("LPC_I2C1: %08X, ",LPC_I2C1 );
+pc.printf("dev2: %08X\n\r",dev2 );
+pc.printf("LPC_I2C2: %08X, ",LPC_I2C2 );
+pc.printf("dev3: %08X\n\r",dev3 );
+pc.printf("LPC_I2C3: %08X, ",LPC_I2C3 );
+pc.printf("dev4: %08X\n\r",dev4 );
+pc.printf("dev: %08X\n\r",*dev );
+dev=&dev2;
+pc.printf("dev: %08X\n\r",*dev );
+dev=&dev3;
+pc.printf("dev: %08X\n\r",*dev );
+dev=&dev4;
+pc.printf("dev: %08X\n\r",*dev );
+dev=&dev1;
+*/
 //    int data=0x50;
 //    int ack=0;
     int plength=0;
@@ -92,25 +112,25 @@
                     channel=recieve[i+1];
                     switch(channel) {
                         case I2C0adr:
-////                            bus=0x01;
+                            bus=~0x01;
 //pc.printf("ch0 is selected,");
                             channel='0';
                             dev=&dev1;
                             break;
                         case I2C1adr:
-////                            bus=0x02;
+                            bus=~0x02;
 //pc.printf("ch1 is selected,");
                             channel='1';
                             dev=&dev2;
                             break;
                         case I2C2adr:
-////                            bus=0x04;
+                            bus=~0x04;
 //pc.printf("ch2 is selected,");
                             channel='2';
                             dev=&dev3;
                             break;
                         case I2C3adr:
-////                            bus=0x08;
+                            bus=~0x08;
 //pc.printf("ch3 is selected,");
                             channel='3';
                             dev=&dev4;
@@ -127,30 +147,30 @@
                     address=recieve[i+1];
                     length=recieve[i+2];
 //pc.printf("addr=%02X, length=%d,",address,length);
-dev1.start();
-dev1.write(address);
-////                    dev->start();
-////                    dev->write(address);
+//dev1.start();
+//dev1.write(address);
+                    dev->start();
+                    dev->write(address);
                     if( (address&0x01)) {//read
 //pc.printf("read from ch%c,",channel);
                         for(int j=0; j<length; j++) {
-//pc.putc(dev->read(0));
                             pc.printf("%02X,",dev->read(0));
+//pc.printf("%02X,",dev1.read(0));
                         }
                         i+=(3);
                     } else {//write
 //pc.printf("write to ch%c, ",channel);
                         for(int j=0; j<length; j++) {
 //pc.printf("%02X,",recieve[3+j]);
-dev1.write(recieve[3+j]);
-////                            dev->write(recieve[3+j]);
+//dev1.write(recieve[3+j]);
+                            dev->write(recieve[3+j]);
                         }
                         i+=(3+length);
                     }
                     break;
                 case 'P':
-dev1.stop();
-////                    dev->stop();
+//dev1.stop();
+                    dev->stop();
                     i=plength;
                     pc.printf("ok\n\r");
                     break;