Vorige keer TLC5940 niet aan de praat gekregen, nu weer maar eens opgepakt maar lukt niet om het goed te krijgen. Hieronder mijn programma, er zal iets met GSCLK en BLANK niet goed gaan. maar omdat ik er zo lang mee bezig ben heb je kans dat ik veel te moeilijk ga denken. I s er iemand hier die kan zien waar het fout gaat?

FlowChart:

http://www.ti.com/lit/sw/slvc106/slvc106.pdf

Code:



'****************************************************************
'*  Name    : 00000_0.0.1_PI_TLC5940                            *
'*  Author  : Martin Molendijk                                  *
'*  Notice  : Copyright (c) 2011 Molendijk Pic programming      *
'*          : All Rights Reserved                               *
'*  Date    : 01-12-2015                                        *
'****************************************************************
'*                       PIC16F887                              *
'*            MCLR = E3 -|        |- B7 =                       *                                 
'*                 = A0 -|        |- B6 =                       *
'*                 = A1 -|        |- B5 =                       * 
'*                 = A2 -|        |- B4 =                       *                             
'*                 = A3 -|        |- B3 =                       *                                      
'*                 = A4 -|        |- B2 =                       *                                 
'*                 = A5 -|        |- B1 =                       *
'*                 = E0 -|        |- B0 =                       * 
'*                 = E1 -|        |- Vdd                        *                             
'*                 = E2 -|        |- Vss                        *
'*                  Vdd -|        |- D7 =                       *                                 
'*                  Vss -|        |- D6 = GSCLK                 *
'*      xtal 20MHZ = A7 -|        |- D5 = DCPRG                 * 
'*      xtal 20MHZ = A6 -|        |- D4 = BLANK                 *                             
'*                 = C0 -|        |- C7 = RX                    *
'*                 = C1 -|        |- C6 = TX                    *                                 
'*                 = C2 -|        |- C5 = XLAT                  *
'*                 = C3 -|        |- C4 = SCLK                  * 
'*                 = D0 -|        |- D3 = SIN                   *                            
'*                 = D1 -|________|- D2 = VPRG                  *
'*                                                              *
'****************************************************************
Device = 16F887
 
Config1 DEBUG_OFF , LVP_OFF , FCMEN_OFF , IESO_OFF ,BOR_OFF ,CPD_OFF , CP_OFF , MCLRE_off , PWRTE_ON , WDT_OFF , HS_OSC ;INTRC_OSC_NOCLKOUT 
Config2 WRT_OFF , BOR21V    
                     
Declare Xtal = 20
;===============================================================================
;Symbolen
;===============================================================================
Symbol VPRG  = PORTD.2
Symbol SDIN  = PORTD.3
Symbol SCLK  = PORTC.4
Symbol XLAT  = PORTC.5
Symbol BLANK = PORTD.4
Symbol DCPRG = PORTD.5
Symbol GSCLK = PORTD.6
;===============================================================================
;Variabelen
;===============================================================================
Dim Index           As Byte
Dim SpiTemp         As Word
Dim SpiData         As Word
Dim GSCLK_count     As Word
Dim Data_count      As Word
Dim c1              As Byte
Dim c2              As Word
Dim FirstCycleFlag  As Bit
Dim n               As Byte
;===============================================================================
;Poort instellingen
;===============================================================================
Clear
              ;76543210
TRISA       = %11111010    ;TRIS instellingen : 1 is ingang - 0 is uitgang                            
TRISB       = %11111111                        
TRISC       = %00000000                         
TRISD       = %00000000                         
TRISE       =      %000 

              ;76543210
PORTA       = %00000000    ;PORT instellingen : 1 is hoog - 0 is laag                     
PORTB       = %11111111                         
PORTC       = %00000000                         
PORTD       = %00000000                          
PORTE       =      %000                            
;===============================================================================
;Declares
;===============================================================================
All_Digital TRUE
Declare PortB_Pullups   = On              ;Zet PoortB pullups aan
On_Interrupt OnInter                      ;Bij een overflow naar OnInter
;===============================================================================
;Includes
;===============================================================================
Include "Timer2 @20MHZ Inter 1mS.bas"
;===============================================================================
;Instellingen
;===============================================================================                                   
Cls

PEIE     = 1      ;
GIE      = 1      ; Enable interrupt
TMR2IF   = 0      ; TIMER2 interrupt vlag
TMR2IE   = 1      ; TIMER2 interrupt enable

GSCLK    = 0
SCLK     = 0
DCPRG    = 0
VPRG     = 1
XLAT     = 0
BLANK    = 1

DelayMS 1000
GoTo Main
;===============================================================================
;Main
;===============================================================================
Main:


GoSub PRESET

While 1 = 1

SpiData = %1111111111111111
GoSub SPIout
 
Wend
;===============================================================================
;SPIout
;===============================================================================
SPIout:


If VPRG = 1 Then                    ;Als VPRG 1 is
    VPRG = 0                        ;Reset VPRG
    FirstCycleFlag = 1              ;Set FirstCylceFlag
EndIf

GSCLK_count = 0                     ;Reset GSCLK_count
Data_count = 0                      ;Reset Data_Count
BLANK = 0                           ;Zet BLANK op 0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

For Data_count = 0 To (n*16 - 1) 
    GoSub Spi
    Inc Data_count
Next

While GSCLK_count < 4095
    GoSub pulseGSCLK
    Inc GSCLK_count
Wend

BLANK = 1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

GoSub pulseXLAT                     ;Geef puls XLAT

If FirstCycleFlag = 1 Then          ;Als FirstCycleFlag 1 is
    GoSub pulseSCLK                 ;Geef puls SCLK
EndIf

FirstCycleFlag = 0                  ;FirstCycleFlag op 0

Return
;===============================================================================
;pulseXLAT
;===============================================================================
pulseXLAT:

High XLAT                           ;Puls XLAT     
Low  XLAT                           ;Puls XLAT       
Return
;===============================================================================
;pulseSCLK
;===============================================================================
pulseSCLK:

High SCLK                           ;Puls SCLK
Low SCLK                            ;Puls SCLK
Return    
;===============================================================================
;pulseGSCLK
;===============================================================================
pulseGSCLK:

High GSCLK                          ;Puls GSCLK
Low GSCLK                           ;Puls GSCLK
Return 
;===============================================================================
;PRESET
;===============================================================================
PRESET:


n = 1                               ;aantal TLC5940 in serie
High DCPRG                          ;Geen eeprom
High VPRG                           ;Dot correction mode

For c1 = 0 To (n*16 - 1)            ;n*16 Ports
    SHOut SDIN,SCLK,1,[%111111\6]   ;6 bits voor Dot Correction per pin
Next
GoSub pulseXLAT                     ;Zet om

Return
;===============================================================================
;OnInter
;===============================================================================
OnInter:
   

Context Save


Bcf PIR1,1                          ;TMR2IF = 0 ;TIMER2 Interrupt vlag wissen

Context Restore                     ;Terug naar programma

Return
;===============================================================================
;Spi
;===============================================================================
Spi:


Index = 15 
Repeat
    SDIN = SpiTemp.15               ;SDIN = SpiTemp.
    GoSub pulseSCLK                 ;Geef puls SCLK
    SpiTemp = SpiTemp << 1          ;Verschuif 1 bit
    Dec Index                       
    
    Inc GSCLK_count                 ;Verhoog GSCLK_count                
    GoSub pulseGSCLK                ;Geef puls GSCLK
Until Index = 3

Return

Op dit moment branden de laatste 3 ledjes, en op GSCLK heb ik een freq. van 169Khz

Bij voorbaat dank,