Tedd OKANO
/
PCA9955A_simple
PCA9955A test program
main.cpp@1:0a5e299bf3ef, 2014-07-18 (annotated)
- 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?
User | Revision | Line number | New 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 |