init update
TLC5940.cpp@1:05d2234c0965, 2013-03-22 (annotated)
- Committer:
- slisgrinder
- Date:
- Fri Mar 22 16:46:41 2013 +0000
- Revision:
- 1:05d2234c0965
- Parent:
- 0:1fb7b50d16b1
v1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
slisgrinder | 0:1fb7b50d16b1 | 1 | #include "TLC5940.h" |
slisgrinder | 0:1fb7b50d16b1 | 2 | |
slisgrinder | 1:05d2234c0965 | 3 | int num_drivers = 1; |
slisgrinder | 0:1fb7b50d16b1 | 4 | |
slisgrinder | 1:05d2234c0965 | 5 | void setup (SPI &driver, DigitalOut &vprg, DigitalOut &xlat, DigitalOut &blank, DigitalOut &dcprg, PwmOut &gsclk, int num_ics) |
slisgrinder | 0:1fb7b50d16b1 | 6 | { |
slisgrinder | 0:1fb7b50d16b1 | 7 | xlat = 0; // hold GS/DC data constant |
slisgrinder | 1:05d2234c0965 | 8 | blank = 0; |
slisgrinder | 1:05d2234c0965 | 9 | blank = 1; |
slisgrinder | 1:05d2234c0965 | 10 | blank = 0; // Blank (squelch) all outputs |
slisgrinder | 0:1fb7b50d16b1 | 11 | dcprg = 1; // dcprg points DC data to DC register. |
slisgrinder | 0:1fb7b50d16b1 | 12 | vprg = 0; // sets drivers to GS mode. Set to 1 to change to DC mode |
slisgrinder | 1:05d2234c0965 | 13 | gsclk.period_us (1); // set grayscale clock to 1000 Hz |
slisgrinder | 0:1fb7b50d16b1 | 14 | gsclk = 0.5; // turn on grayscale clock to 50% duty cycle at afore mentioned frequency |
slisgrinder | 0:1fb7b50d16b1 | 15 | |
slisgrinder | 0:1fb7b50d16b1 | 16 | if (num_ics <= 0) |
slisgrinder | 0:1fb7b50d16b1 | 17 | { |
slisgrinder | 0:1fb7b50d16b1 | 18 | num_drivers = 1; |
slisgrinder | 1:05d2234c0965 | 19 | } |
slisgrinder | 0:1fb7b50d16b1 | 20 | else |
slisgrinder | 0:1fb7b50d16b1 | 21 | { |
slisgrinder | 0:1fb7b50d16b1 | 22 | num_drivers = num_ics; |
slisgrinder | 0:1fb7b50d16b1 | 23 | } |
slisgrinder | 0:1fb7b50d16b1 | 24 | |
slisgrinder | 0:1fb7b50d16b1 | 25 | |
slisgrinder | 1:05d2234c0965 | 26 | driver.format (12,0); |
slisgrinder | 0:1fb7b50d16b1 | 27 | driver.frequency (30000000); |
slisgrinder | 0:1fb7b50d16b1 | 28 | } |
slisgrinder | 0:1fb7b50d16b1 | 29 | |
slisgrinder | 0:1fb7b50d16b1 | 30 | |
slisgrinder | 1:05d2234c0965 | 31 | void update_led (SPI &driver, DigitalOut &xlat, DigitalOut &blank, unsigned short* LEDS) |
slisgrinder | 0:1fb7b50d16b1 | 32 | { |
slisgrinder | 0:1fb7b50d16b1 | 33 | blank = 1; |
slisgrinder | 1:05d2234c0965 | 34 | blank = 0; |
slisgrinder | 1:05d2234c0965 | 35 | for (int k = (num_drivers - 1); k >= 0; k--) |
slisgrinder | 0:1fb7b50d16b1 | 36 | { |
slisgrinder | 1:05d2234c0965 | 37 | for (int i = (16 - 1); i >= 0; i--) |
slisgrinder | 0:1fb7b50d16b1 | 38 | { |
slisgrinder | 1:05d2234c0965 | 39 | driver.write (*(LEDS + k + i)); |
slisgrinder | 0:1fb7b50d16b1 | 40 | } |
slisgrinder | 0:1fb7b50d16b1 | 41 | } |
slisgrinder | 0:1fb7b50d16b1 | 42 | xlat = 1; |
slisgrinder | 0:1fb7b50d16b1 | 43 | xlat = 0; |
slisgrinder | 0:1fb7b50d16b1 | 44 | } |