PCA9955A test program

Dependencies:   mbed

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 );
}