blablabla

TLC5940.cpp

Committer:
kohacraft
Date:
2015-07-29
Revision:
0:2a7734c01842

File content as of revision 0:2a7734c01842:

#include "TLC5940.h"

int num_drivers = 1;

void setup (SPI &driver, DigitalOut &vprg, DigitalOut &xlat, DigitalOut &blank, PwmOut &gsclk, int num_ics)
{
    driver.format (6,0);
    driver.frequency (20000000);
    if (num_ics <= 0)
    {
        num_drivers = 1;
    }
    else
    {
        num_drivers = num_ics;
    }

    xlat = 0;               // hold GS/DC data constant
    blank = 0;
    blank = 1;
    blank = 0;              // Blank (squelch) all outputs
    
    //補正データを最大に設定
    vprg = 1;
    for (int i = 0; i<16*num_ics; i++)
    {
        driver.write (0x3F);   //最大
    }
    xlat = 1;
    xlat = 0;               // hold GS/DC data constant
    
    driver.format (12,0);
    vprg = 0;               // sets drivers to GS mode. Set to 1 to change to DC mode
    gsclk.period_us (1.0);    // set grayscale clock to 1000 Hz
    gsclk = 0.5;            // turn on grayscale clock to 50% duty cycle at afore mentioned frequency
    
    
    
}


void update_led (SPI &driver, DigitalOut &xlat, DigitalOut &blank, PwmOut &gsclk, unsigned short* LEDS)
{
    blank = 1;
    for (int k = (num_drivers - 1); k >= 0; k--)
    {
        for (int i = (16 - 1); i >= 0; i--)
        {
            driver.write (*(LEDS + k + i));
        }
    }
    wait_us(10);
    xlat = 1;
    xlat = 0;
    blank = 0;
    driver.format (12,0);

}

void offDisp(DigitalOut &blank , PwmOut &gsclk)
{
    blank = 1;
}