init update

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TLC5940.cpp Source File

TLC5940.cpp

00001 #include "TLC5940.h"
00002 
00003 int num_drivers = 1;
00004 
00005 void setup (SPI &driver, DigitalOut &vprg, DigitalOut &xlat, DigitalOut &blank, DigitalOut &dcprg, PwmOut &gsclk, int num_ics)
00006 {
00007     xlat = 0;               // hold GS/DC data constant
00008     blank = 0;
00009     blank = 1;
00010     blank = 0;              // Blank (squelch) all outputs
00011     dcprg = 1;              // dcprg points DC data to DC register.
00012     vprg = 0;               // sets drivers to GS mode. Set to 1 to change to DC mode
00013     gsclk.period_us (1);    // set grayscale clock to 1000 Hz
00014     gsclk = 0.5;            // turn on grayscale clock to 50% duty cycle at afore mentioned frequency
00015     
00016     if (num_ics <= 0)
00017     {
00018         num_drivers = 1;
00019     }
00020     else
00021     {
00022         num_drivers = num_ics;
00023     }
00024     
00025     
00026     driver.format (12,0);
00027     driver.frequency (30000000);
00028 }
00029 
00030 
00031 void update_led (SPI &driver, DigitalOut &xlat, DigitalOut &blank, unsigned short* LEDS)
00032 {
00033     blank = 1;
00034     blank = 0;
00035     for (int k = (num_drivers - 1); k >= 0; k--)
00036     {
00037         for (int i = (16 - 1); i >= 0; i--)
00038         {
00039             driver.write (*(LEDS + k + i));
00040         }
00041     }
00042     xlat = 1;
00043     xlat = 0;
00044 }