Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Revision 0:e573ba46ffc6, committed 2015-02-04
- Comitter:
 - wataaki
 - Date:
 - Wed Feb 04 06:06:42 2015 +0000
 - Commit message:
 - Initial version
 
Changed in this revision
diff -r 000000000000 -r e573ba46ffc6 PCA9626B.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PCA9626B.cpp	Wed Feb 04 06:06:42 2015 +0000
@@ -0,0 +1,95 @@
+#include "mbed.h"
+#include "PCA9626B.h"
+ 
+I2C i2c(p28,p27);        // sda, scl
+Serial pc(USBTX, USBRX); // tx, rx
+//LM75B tmp(p28,p27);
+    char cmd[32];
+int i;
+ 
+void set_ch(char sel)
+{    // PCA9541のサンプル
+        // MST_0側の自分にスレーブ側の制御権を得る場合
+    cmd[0] = 1;                     // PCA9541 コマンドコード Cont Reg
+    i2c.write( 0xe2, cmd, 1);       // Cont Regを指定
+    i2c.read( 0xe2, cmd, 1);        // Cont Regを読込み
+    wait(0.1);                      // 0.1s待つ
+    switch(cmd[0] & 0xf)
+    {
+    case 0:                         // bus off, has control
+    case 1:                         // bus off, no control
+    case 5:                         // bus on, no control
+        cmd[0] = 1;                 // PCA9541 コマンドコード Cont Reg
+        cmd[1] = 4;                 // bus on, has control
+        i2c.write( 0xe2, cmd, 2);   // Cont Regにcmd[1]を書込み
+        i2c.read( 0xe2, cmd, 1);    // Cont Regを読込み
+        break;
+    case 2:                         // bus off, no control
+    case 3:                         // bus off, has control
+    case 6:                         // bus on, no control
+        cmd[0] = 1;                 // PCA9541 コマンドコード Cont Reg
+        cmd[1] = 5;                 // bus on, has control
+        i2c.write( 0xe2, cmd, 2);   // Cont Regにcmd[1]を書込み
+        i2c.read( 0xe2, cmd, 1);    // Cont Regを読込み
+        break;
+    case 9:                         // bus on, no control
+    case 0xc:                       // bus on, no control
+    case 0xd:                       // bus off, no control
+        cmd[0] = 1;                 // PCA9541 コマンドコード Cont Reg
+        cmd[1] = 0;                 // bus on, has control
+        i2c.write( 0xe2, cmd, 2);   // Cont Regにcmd[1]を書込み
+        i2c.read( 0xe2, cmd, 1);    // Cont Regを読込み
+        break;
+    case 0xa:                       // bus on, no control
+    case 0xe:                       // bus off, no control
+    case 0xf:                       // bus on, has control
+        cmd[0] = 1;                 // PCA9541 コマンドコード Cont Reg
+        cmd[1] = 1;                 // bus on, has control
+        i2c.write( 0xe2, cmd, 2);   // Cont Regにcmd[1]を書込み
+        i2c.read( 0xe2, cmd, 1);    // Cont Regを読込み
+        break;
+    default:
+        break;
+    }
+
+    cmd[0] = sel;                   // PCA9546 Cont Reg sel channel enabled
+    i2c.write( 0xe8, cmd, 1);       // Send command string
+}
+
+int main ()
+{
+   i2c.frequency(100000);
+    pc.printf("PCA9626B Sample Program\r\n");
+     
+    set_ch(1);              // PCA9626Bはch0に接続
+
+  // PCA9626B
+  cmd[0] = MODE1;           // MODE1
+  cmd[1] = 0x0;           // SLEEP = 0
+  i2c.write(PCA9626B_ADDR, cmd, 2);   // cmd[0]Regにcmd[1]を書込み
+
+  cmd[0] = LEDOUT0 + 0x80;   // LEDOUT0, Auto incriment
+  cmd[1] = 0xaa;          // LED3,2,1,0 10= PWM
+  cmd[2] = 0xaa;          // LED7,6,5,4 10= PWM
+  cmd[3] = 0xaa;          // LED11,10,9,8 10= PWM
+  cmd[4] = 0xaa;          // LED15,14,13,12 10= PWM
+  cmd[5] = 0xaa;          // LED19,18,17,16 10= PWM
+  cmd[6] = 0xaa;          // LED23,22,21,20 10= PWM
+  i2c.write( 0x8, cmd, 7);   // cmd[0]Regにcmd[1-6]を書込み
+
+
+  cmd[0] = PWM0 + 0x80;           // PWM0, Auto incriment
+  for(i=0; i<24; i++)  cmd[i+1] = 0x80;   // PWM = 50%
+  i2c.write(PCA9626B_ADDR, cmd, 25);   // cmd[0]Regにcmd[1-25]を書込み
+
+  while(1)
+  {
+    if (i>30) i = 7;                    // LTR_0_ON
+    cmd[0] = 0x1c;        // CHASE
+    cmd[1] = i++;         // LTR_x_ON
+    i2c.write(PCA9626B_ADDR, cmd, 2);   // cmd[0]Regにcmd[1]を書込み
+    wait(0.5);
+  }
+}
+
+
diff -r 000000000000 -r e573ba46ffc6 PCA9626B.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PCA9626B.h Wed Feb 04 06:06:42 2015 +0000 @@ -0,0 +1,41 @@ +#define PCA9626B_ADDR 0x8 + +#define MODE1 0x00 +#define MODE2 0x01 +#define PWM0 0x02 +#define PWM1 0x03 +#define PWM2 0x04 +#define PWM3 0x05 +#define PWM4 0x06 +#define PWM5 0x07 +#define PWM6 0x08 +#define PWM7 0x09 +#define PWM8 0x0a +#define PWM9 0x0b +#define PWM10 0x0c +#define PWM11 0x0d +#define PWM12 0x0e +#define PWM13 0x0f +#define PWM14 0x10 +#define PWM15 0x11 +#define PWM16 0x12 +#define PWM17 0x13 +#define PWM18 0x14 +#define PWM19 0x15 +#define PWM20 0x16 +#define PWM21 0x17 +#define PWM22 0x18 +#define PWM23 0x19 +#define GRPPWM 0x1a +#define GRPFREQ 0x1b +#define CHASE 0x1c +#define LEDOUT0 0x1d +#define LEDOUT1 0x1e +#define LEDOUT2 0x1f +#define LEDOUT3 0x20 +#define LEDOUT4 0x21 +#define LEDOUT5 0x22 +#define SUBADR1 0x23 +#define SUBADR2 0x24 +#define SUBADR3 0x25 +#define ALLCALLADR 0x26
diff -r 000000000000 -r e573ba46ffc6 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Feb 04 06:06:42 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/552587b429a1 \ No newline at end of file