Hallo Leute,
es hat sich bei mir die Notwendigkeit ergeben, in einem Programm nebst 74HCT595 Porterweiterungsbausteinen auch noch eine Hand voll WS2801 anzusteuern. Die Porterweiterungen hängen schon jeher auf Hard- SPI mit SS, MOSI, SCK. Dazugekommen sind die WS2801 auf Mosi=D.1, SCK=D.0. Das Pragramm dazu ist vereinfacht dieses: (ich habe alles was nicht den Übermittlungteil betrifft fürs Forum raus genommen)
$regfile = "m88def.dat"
$crystal = 8000000
'$baud = 38400
$hwstack = 40 ' default use 32 for the hardware stack
$swstack = 40 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
[...]
'WS2801#########################################################################
'Config Spi = Soft , Din = Portd.4 , Dout = Portd.1 , Ss = None , Clock = Portd.0
'Spiinit
Config Spi = Hard , Master = Yes
Spiinit
[...]
Dim Valves(3)as Byte
'#098765# 20-15
Valves(1) = &B00000000
'4321098# 14-8
Valves(2) = &B00000000
'7654321# 7-1
Valves(3) = &B00000000
Spiout Valves(1) , 3
[...]
Do
[Variablen füllen]
'SoftSPI#########################################################################
Config Spi = Soft , Din = Pind.4 , Dout = Portd.1 , Ss = None , Clock = Portd.0
Spiinit
Spiout Rgb(1) , 12
Waitms 1
'HardSPI########################################################################
Config Spi = Hard , Master = Yes
Spiinit
Spiout Valves(1) , 3
Waitms 20
'#098765# 20-15
Valves(1) = &B00000000
'4321098# 14-8
Valves(2) = &B00000000
'7654321# 7-1
Valves(3) = &B00000000
Spiout Valves(1) , 3
'###############################################################################
Loop
End
Alles anzeigen
Das Ziel war nun eigentlich in jedem Programmdurchlauf einmal den Porterweiterungen und einmal den WS2801 neue Daten zu übermitteln. Leider funktioniert das so nicht wie gedacht. So wie der vereinfachte Code jetzt oben steht werden offensichtlich Daten welche für die WS2801 bestimmt sind an die Porterweiterungen übermittelt (Ein Farbverlauf lässt meine Ventile binär hoch zählen). Je nachdem welchen Teil ich nun ausklammere geht der andere auch problemlos. Nehme ich SoftSPI- Übermittlung raus, bekommen die Ventile an der Hard SPI ihre Daten; nehme ich die HardSPI- Übermittlung aus dem Programm bekommen die WS2801 ihre Daten. Beides hintereinander geht halt nicht. Bestimmt muss da nur wieder irgenwo ein Register gesetzt oder geleert werden.? Hat jemand einen Verdacht woran das liegen könnte?
beste Grüße, Simon