very simple sample code for PCA9956A (24 channel current control LED driver)

Dependencies:   mbed

Fork of PCA9955_simple by InetrfaceProducts NXP

Revision:
0:3afedead559b
Child:
1:2a3b314f4996
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Oct 10 00:48:16 2012 +0000
@@ -0,0 +1,50 @@
+/*
+ *  very simple sample code for PCA9955 LPD driver
+ *
+ *      10-Oct-2012
+ *      NXP Semiconductors - Interface Products
+ */
+
+#include "mbed.h"
+
+#define     PCA9955_ADDRESS     0xC0
+
+I2C     i2c( p28, p27 );
+
+char    init_array[] = {
+    0x80,                                           //  Command
+    0x00, 0x05,                                     //  MODE1, MODE2
+    0xAA, 0xAA, 0xAA, 0xAA,                         //  LEDOUT[3:0]
+    0x80, 0x00,                                     //  GRPPWM, GRPFREQ
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //  PWM[7:0]
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //  PWM[15:8]
+    0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, //  IREF[7:0]
+    0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, //  IREF[15:8]
+    0x08                                            //  OFFSET: 1uS offsets
+};
+
+
+int main()
+{
+    char    data[ 2 ];
+    int     i   = 0;
+
+    i2c.write( PCA9955_ADDRESS, init_array, sizeof( init_array ) );
+
+    while ( 1 ) {
+        if ( !(i & 0xFFF) ) {
+            data[ 0 ]   = 0x42;
+            data[ 1 ]   = 0x00;
+            i2c.write( PCA9955_ADDRESS, data, 2 );
+
+        } else {
+            data[ 0 ]   = 0x0A + ((i >> 8) & 0xF);
+            data[ 1 ]   = i & 0xFF;
+            i2c.write( PCA9955_ADDRESS, data, 2 );
+
+        }
+        wait_ms( 1 );
+        i++;
+    }
+}
+