PCA9955A test program

Dependencies:   mbed

Revision:
4:507e37f8008d
Parent:
3:dbe7902d4335
Child:
5:b93b28e126fe
--- a/main.cpp	Fri Jul 18 01:42:51 2014 +0000
+++ b/main.cpp	Fri Aug 01 07:11:31 2014 +0000
@@ -1,43 +1,38 @@
 #include "mbed.h"
+#include "PCA9955A_registers.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 );
-void manual_control( void );
-
 
 int main()
 {
-    char    init_data0[]    = { AUTO_INCREMENT | REGISTER_START, 0x00, 0x25, 0xAA, 0xAA, 0xAA, 0xAA };
-    char    init_data1[]    = { IREFALL_REGISTER_ADDR, 0x10 };
+    //  initialization
+
+    register_write( MODE1,      0x00 );
+    register_write( MODE2,      0x25 );
+    register_write( LEDOUT0,    0xAA );
+    register_write( LEDOUT1,    0xAA );
+    register_write( LEDOUT2,    0xAA );
+    register_write( LEDOUT3,    0xAA );
+    register_write( IREFALL,    0x10 );
+
+    //  operation loop
 
-    i2c.write( SLAVE_ADDR, init_data0, sizeof( init_data0 ) );
-    i2c.write( SLAVE_ADDR, init_data1, sizeof( init_data1 ) );
+    while ( 1 ) {
+        
+        for ( int i = 0; i < 256; i++ ) {
+            register_write( PWM0, i );
+            wait( 0.01 );
+        }
 
-    for ( int i = 0; i < 256; i++ ) {
-        register_write( PWMALL_REGISTER_ADDR, i );
-        wait( 0.01 );
+        for ( int i = 255; i >= 0; i-- ) {
+            register_write( PWM0, i );
+            wait( 0.01 );
+        }
     }
-
-
-#if 1
-
-    while(1) {
-        manual_control();
-    }
-
-#endif
-
 }
 
 void register_write( char addr, char data )
@@ -49,46 +44,3 @@
     i2c.write( SLAVE_ADDR, d, 2 );
 }
 
-
-
-Serial      pc(USBTX, USBRX);    // tx, rx
-
-void manual_control( void )
-{
-    static char     duty    = 0xFF;
-    static char     freq    = 0x00;
-
-    if ( pc.readable() ) {
-        switch ( pc.getc() ) {
-            case 'b' :
-                printf( "  [b] : blink on\r\n" );
-                register_write( 1, 0x25 );
-                register_write( LEDOUT_REGISTER_START, 0xFF );
-                register_write( LEDOUT_REGISTER_START + 2, 0xFF );
-                break;
-            case 'd' :
-                printf( "  [d] : blink off\r\n" );
-                register_write( 1, 0x05 );
-                register_write( LEDOUT_REGISTER_START, 0xFF );
-                register_write( LEDOUT_REGISTER_START + 2, 0xFF );
-                break;
-            case 'x' :
-                duty    = (duty == 0xFF) ? 0xFF : duty + 1;
-                register_write( 0x06, duty );
-                break;
-            case 'z' :
-                duty    = (duty == 0x00) ? 0x00 : duty - 1;
-                register_write( 0x06, duty );
-                break;
-            case '.' :
-                freq    = (freq == 0xFF) ? 0xFF : freq + 1;
-                register_write( 0x07, freq );
-                break;
-            case ',' :
-                freq    = (freq == 0x00) ? 0x00 : freq - 1;
-                register_write( 0x07, freq );
-                break;
-        }
-        printf( "  GRPPWM=0x%02X, GRPFREQ=0x%02X (period=%.3f)\r", duty, freq, (float)(freq + 1)/15.26 );
-    }
-}