PCA9955A test program

Dependencies:   mbed

Committer:
okano
Date:
Fri Jul 18 00:57:21 2014 +0000
Revision:
1:0a5e299bf3ef
Parent:
0:a173ba5ecb1a
Child:
2:ead3652b6fd2
simple sample

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 0:a173ba5ecb1a 1 #include "mbed.h"
okano 0:a173ba5ecb1a 2
okano 0:a173ba5ecb1a 3 I2C i2c( p28, p27 ); // SDA, SCL
okano 0:a173ba5ecb1a 4
okano 0:a173ba5ecb1a 5 #define SLAVE_ADDR 0x02
okano 0:a173ba5ecb1a 6
okano 0:a173ba5ecb1a 7 #define AUTO_INCREMENT 0x80
okano 0:a173ba5ecb1a 8 #define REGISTER_START 0x00
okano 0:a173ba5ecb1a 9 #define LEDOUT_REGISTER_START 0x02
okano 0:a173ba5ecb1a 10 #define PWM_REGISTER_START 0x08
okano 0:a173ba5ecb1a 11 #define IREF_REGISTER_START 0x18
okano 0:a173ba5ecb1a 12 #define PWMALL_REGISTER_ADDR 0x44
okano 0:a173ba5ecb1a 13 #define IREFALL_REGISTER_ADDR 0x45
okano 0:a173ba5ecb1a 14
okano 1:0a5e299bf3ef 15 void register_write( char addr, char data );
okano 0:a173ba5ecb1a 16
okano 0:a173ba5ecb1a 17 int main()
okano 0:a173ba5ecb1a 18 {
okano 0:a173ba5ecb1a 19 char init_data0[] = { AUTO_INCREMENT | REGISTER_START, 0x00, 0x05, 0xAA, 0xAA, 0xAA, 0xAA };
okano 0:a173ba5ecb1a 20 char init_data1[] = { IREFALL_REGISTER_ADDR, 0x10 };
okano 0:a173ba5ecb1a 21 char data[ 2 ];
okano 0:a173ba5ecb1a 22
okano 0:a173ba5ecb1a 23 i2c.write( SLAVE_ADDR, init_data0, sizeof( init_data0 ) );
okano 0:a173ba5ecb1a 24 i2c.write( SLAVE_ADDR, init_data1, sizeof( init_data1 ) );
okano 0:a173ba5ecb1a 25
okano 1:0a5e299bf3ef 26 for ( int i = 0; i < 256; i++ ) {
okano 1:0a5e299bf3ef 27 register_write( PWMALL_REGISTER_ADDR, i );
okano 1:0a5e299bf3ef 28 wait( 0.01 );
okano 1:0a5e299bf3ef 29 }
okano 1:0a5e299bf3ef 30
okano 1:0a5e299bf3ef 31
okano 1:0a5e299bf3ef 32 #if 1
okano 1:0a5e299bf3ef 33
okano 0:a173ba5ecb1a 34 while(1) {
okano 0:a173ba5ecb1a 35 for ( int port = 0; port < 16; port++ ) {
okano 0:a173ba5ecb1a 36 for ( int i = 0; i < 256; i++ ) {
okano 0:a173ba5ecb1a 37 if ( !port && !i )
okano 1:0a5e299bf3ef 38 register_write( PWMALL_REGISTER_ADDR, 0 );
okano 0:a173ba5ecb1a 39 else
okano 1:0a5e299bf3ef 40 register_write( port + PWM_REGISTER_START, i );;
okano 0:a173ba5ecb1a 41 }
okano 0:a173ba5ecb1a 42 }
okano 0:a173ba5ecb1a 43 }
okano 1:0a5e299bf3ef 44
okano 1:0a5e299bf3ef 45 #endif
okano 1:0a5e299bf3ef 46
okano 0:a173ba5ecb1a 47 }
okano 1:0a5e299bf3ef 48
okano 1:0a5e299bf3ef 49 void register_write( char addr, char data )
okano 1:0a5e299bf3ef 50 {
okano 1:0a5e299bf3ef 51 char d[ 2 ];
okano 1:0a5e299bf3ef 52
okano 1:0a5e299bf3ef 53 d[ 0 ] = addr;
okano 1:0a5e299bf3ef 54 d[ 1 ] = data;
okano 1:0a5e299bf3ef 55 i2c.write( SLAVE_ADDR, d, 2 );
okano 1:0a5e299bf3ef 56 }
okano 1:0a5e299bf3ef 57