Tedd OKANO
/
PCA9955A_simple
PCA9955A test program
main.cpp
- Committer:
- okano
- Date:
- 2014-07-18
- Revision:
- 1:0a5e299bf3ef
- Parent:
- 0:a173ba5ecb1a
- Child:
- 2:ead3652b6fd2
File content as of revision 1:0a5e299bf3ef:
#include "mbed.h" I2C i2c( p28, p27 ); // SDA, SCL #define SLAVE_ADDR 0x02 #define AUTO_INCREMENT 0x80 #define REGISTER_START 0x00 #define LEDOUT_REGISTER_START 0x02 #define PWM_REGISTER_START 0x08 #define IREF_REGISTER_START 0x18 #define PWMALL_REGISTER_ADDR 0x44 #define IREFALL_REGISTER_ADDR 0x45 void register_write( char addr, char data ); int main() { char init_data0[] = { AUTO_INCREMENT | REGISTER_START, 0x00, 0x05, 0xAA, 0xAA, 0xAA, 0xAA }; char init_data1[] = { IREFALL_REGISTER_ADDR, 0x10 }; char data[ 2 ]; i2c.write( SLAVE_ADDR, init_data0, sizeof( init_data0 ) ); i2c.write( SLAVE_ADDR, init_data1, sizeof( init_data1 ) ); for ( int i = 0; i < 256; i++ ) { register_write( PWMALL_REGISTER_ADDR, i ); wait( 0.01 ); } #if 1 while(1) { for ( int port = 0; port < 16; port++ ) { for ( int i = 0; i < 256; i++ ) { if ( !port && !i ) register_write( PWMALL_REGISTER_ADDR, 0 ); else register_write( port + PWM_REGISTER_START, i );; } } } #endif } void register_write( char addr, char data ) { char d[ 2 ]; d[ 0 ] = addr; d[ 1 ] = data; i2c.write( SLAVE_ADDR, d, 2 ); }