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

Dependencies:   mbed

Fork of PCA9955_simple by InetrfaceProducts NXP

Committer:
nxp_ip
Date:
Wed Oct 10 00:48:16 2012 +0000
Revision:
0:3afedead559b
Child:
1:2a3b314f4996
initial version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nxp_ip 0:3afedead559b 1 /*
nxp_ip 0:3afedead559b 2 * very simple sample code for PCA9955 LPD driver
nxp_ip 0:3afedead559b 3 *
nxp_ip 0:3afedead559b 4 * 10-Oct-2012
nxp_ip 0:3afedead559b 5 * NXP Semiconductors - Interface Products
nxp_ip 0:3afedead559b 6 */
nxp_ip 0:3afedead559b 7
nxp_ip 0:3afedead559b 8 #include "mbed.h"
nxp_ip 0:3afedead559b 9
nxp_ip 0:3afedead559b 10 #define PCA9955_ADDRESS 0xC0
nxp_ip 0:3afedead559b 11
nxp_ip 0:3afedead559b 12 I2C i2c( p28, p27 );
nxp_ip 0:3afedead559b 13
nxp_ip 0:3afedead559b 14 char init_array[] = {
nxp_ip 0:3afedead559b 15 0x80, // Command
nxp_ip 0:3afedead559b 16 0x00, 0x05, // MODE1, MODE2
nxp_ip 0:3afedead559b 17 0xAA, 0xAA, 0xAA, 0xAA, // LEDOUT[3:0]
nxp_ip 0:3afedead559b 18 0x80, 0x00, // GRPPWM, GRPFREQ
nxp_ip 0:3afedead559b 19 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PWM[7:0]
nxp_ip 0:3afedead559b 20 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PWM[15:8]
nxp_ip 0:3afedead559b 21 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // IREF[7:0]
nxp_ip 0:3afedead559b 22 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // IREF[15:8]
nxp_ip 0:3afedead559b 23 0x08 // OFFSET: 1uS offsets
nxp_ip 0:3afedead559b 24 };
nxp_ip 0:3afedead559b 25
nxp_ip 0:3afedead559b 26
nxp_ip 0:3afedead559b 27 int main()
nxp_ip 0:3afedead559b 28 {
nxp_ip 0:3afedead559b 29 char data[ 2 ];
nxp_ip 0:3afedead559b 30 int i = 0;
nxp_ip 0:3afedead559b 31
nxp_ip 0:3afedead559b 32 i2c.write( PCA9955_ADDRESS, init_array, sizeof( init_array ) );
nxp_ip 0:3afedead559b 33
nxp_ip 0:3afedead559b 34 while ( 1 ) {
nxp_ip 0:3afedead559b 35 if ( !(i & 0xFFF) ) {
nxp_ip 0:3afedead559b 36 data[ 0 ] = 0x42;
nxp_ip 0:3afedead559b 37 data[ 1 ] = 0x00;
nxp_ip 0:3afedead559b 38 i2c.write( PCA9955_ADDRESS, data, 2 );
nxp_ip 0:3afedead559b 39
nxp_ip 0:3afedead559b 40 } else {
nxp_ip 0:3afedead559b 41 data[ 0 ] = 0x0A + ((i >> 8) & 0xF);
nxp_ip 0:3afedead559b 42 data[ 1 ] = i & 0xFF;
nxp_ip 0:3afedead559b 43 i2c.write( PCA9955_ADDRESS, data, 2 );
nxp_ip 0:3afedead559b 44
nxp_ip 0:3afedead559b 45 }
nxp_ip 0:3afedead559b 46 wait_ms( 1 );
nxp_ip 0:3afedead559b 47 i++;
nxp_ip 0:3afedead559b 48 }
nxp_ip 0:3afedead559b 49 }
nxp_ip 0:3afedead559b 50