Hallo zusammen,
ich betreibe oben genanntes Display per SPI an einem Raspberry Pi (also
mit 3,3V-Beschaltung). Das lief auch bis gestern einwandfrei. Heute tun
sich mir jedoch Raetsel auf. Wenn die Schaltung stromlos war, also das
Display initialisiert werden muss, klappt das nur sehr sporadisch. Lasse
ich die Initialisierung 20 Mal laufen, kann es sein, dass es immernoch
nicht geht. War dann eben mal eine Stunde nicht dran und schon ging es
jetzt zufaellig beim ersten Versuch.
Schreibe ich dann Daten (RS auf High), also wenn das Display einmal
initialisiert ist, klappt jeder Schreibvorgang.
Hat jemand eine Idee, woran das liegen koennte? Verkabelung habe ich
mehrfach gecheckt, die ist in Ordnung, am SPI haengt direkt auch noch
ein DOG-L-Grafik-LCD dran und das funktioniert hervorragend.
Viele Gruesse und danke,
Martin
Anhang (Initialisierung laeuft wie im Datenblatt vorgegeben, habe es
auch mit Pausen zwischen den Befehlen probiert, das aendert nichts):
1 | rsPin = 0
|
2 | device = '/dev/spidev0.0'
|
3 | cmdFunctionSet = chr(0x39)
|
4 | cmdBiasSet = chr(0x1C)
|
5 | cmdPowerControl = chr(0x55)
|
6 | cmdFollowerControl = chr(0x6D)
|
7 | cmdContrastSet = chr(0x74)
|
8 | cmdInstructionTable = chr(0x38)
|
9 | cmdDisplayOnOff = chr(0x0C)
|
10 | cmdClearDisplay = chr(0x01)
|
11 | cmdEntryModeSet = chr(0x06)
|
12 |
|
13 | cmdSelectFirstLine = chr(0x80)
|
14 | cmdSelectSecondLine = chr(0xC0)
|
15 |
|
16 | def init(self):
|
17 | io.pinMode(self.rsPin, io.OUTPUT)
|
18 |
|
19 | io.pinMode(15, io.OUTPUT)
|
20 | io.pinMode(16, io.OUTPUT)
|
21 |
|
22 | io.digitalWrite(15, io.HIGH)
|
23 | io.digitalWrite(16, io.LOW)
|
24 |
|
25 | io.digitalWrite(self.rsPin, io.LOW)
|
26 |
|
27 | self.spiOutCommand(self.cmdFunctionSet)
|
28 | self.spiOutCommand(self.cmdBiasSet)
|
29 | self.spiOutCommand(self.cmdPowerControl)
|
30 | self.spiOutCommand(self.cmdFollowerControl)
|
31 | self.spiOutCommand(self.cmdContrastSet)
|
32 | self.spiOutCommand(self.cmdInstructionTable)
|
33 |
|
34 | self.spiOutCommand(self.cmdEntryModeSet)
|
35 | self.spiOutCommand(self.cmdClearDisplay)
|
36 | self.spiOutCommand(self.cmdDisplayOnOff)
|