lemonadez
Online PCB Service @ https://www.mijnprintplaat.nl/
Beste CO'ers,
Onderstaande schakeling is op breadboard opgebouwd met de TLC5947 en de PIC16F648A. Uitgangen OUT0..OUT23 sturen de cathodes van 8 RGB LEDs aan.
Met bijhorende code in PIC Basic:
Device=16F648A
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF
; alles digitaal
ALL_DIGITAL TRUE
; alles is output
TRISA = %00000000
TRISB = %00000000
; poorten resetten
PORTA = 0
PORTB = 0
DelayMS 500
; counter
Dim i As Word
; 12 bits waarde per kleur
Dim array[12] As Word
array[0] = %0000000000000000
; pinnen aanwijzen
Symbol datapin = PORTB.1
Symbol clockpin = PORTB.0
Symbol latchpin = PORTB.2
Symbol blankpin = PORTB.3
main:
; display is aan
Low blankpin
; 288 bits inklokken
For i = 0 To 24
SHOut datapin,clockpin,msbfirst,[array[0]]
Next
; display uitschakelen
High latchpin
High blankpin
DelayMS 100
; display inschakelen en latchen op neergaande flank van XLAT
Low latchpin
Low blankpin
DelayMS 100
; delays zorgen ervoor dat de TLC niet overhit raakt tijdens testen
GoTo main
Ik krijg het echter niet voor elkaar om de TLC via de SPI te programmeren.. probleem is dat alle leds aan blijven (wit; 0xFFF).
Als blank hoog is zijn bijna alle LEDs uit, behalve 1 LED die constant rood blijft weergeven (OUT1).
Weet iemand hoe ik de TLC juist kan aansturen? Ik heb alle solderingen al nagekeken, en niets vreemds gemeten.
benleentje
Golden Member
Het is geen SPI maar gewoon seriële data overdracht. Het is gewoon op de input de data klaarzetten wen daarna een klokpuls geven en dat 12 x 24 = 288 keer. Dan staan alle gegevens in het data shift register. Met een klok puls op Xlat (latch) neemt het latch register alle informatie uit het schift register over.
Spi werkt enkel met stukjes van 8 bit en verwacht daarna een acknoledge signaal. Hier moet je in 1 keer 288 bitjes serieel inschuiven.
lemonadez
Online PCB Service @ https://www.mijnprintplaat.nl/
even een verwarring met SPI en seriële data overdracht. Ik krijg nog steeds geen data in de TLC geklokt, misschien ook wel, maar de output van de TLC is altijd 0xFFF. Ik ga zometeen nog even het latch signaal anders proberen aan te sturen.