Forum: Mikrocontroller und Digitale Elektronik EA DOG-M162 initialisiert nur sporadisch


von Martin S. (tungl)


Lesenswert?

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)

: Bearbeitet durch User
von Jibi (Gast)


Lesenswert?

Da fehlen mit Sicherheit Pausen.

von Martin S. (tungl)


Lesenswert?

Jibi schrieb:
> Da fehlen mit Sicherheit Pausen.

Danke, aber ich zitiere mich eben mal selbst:

> Anhang (Initialisierung laeuft wie im Datenblatt vorgegeben, habe *es
> auch mit Pausen* zwischen den Befehlen probiert, das aendert nichts):

von holger (Gast)


Lesenswert?

> Anhang (Initialisierung laeuft wie im Datenblatt vorgegeben, habe *es
> auch mit Pausen* zwischen den Befehlen probiert, das aendert nichts):

Und wo sind diese Pausen? Vieleicht ist dein SPI auch zu schnell.

von spess53 (Gast)


Lesenswert?

Hi

>Anhang (Initialisierung laeuft wie im Datenblatt vorgegeben, habe es
>auch mit Pausen zwischen den Befehlen probiert, das aendert nichts):

Welches Datenblatt? Display oder Displaycontroller?

MfG Spess

von Martin S. (tungl)


Lesenswert?

@holger: Testweise hatte ich die nach jedem Command drin. Und mit der 
SPI-Uebertragung scheint ja alles zu passen, denn die Daten kommen ja 
dann anschliessend in jedem Fall und immer richtig an.

@Spess: Beides. Im Datenblatt des Displays steht nichts von Pausen, in 
dem vom Controller sind 26µs gefordert. Aber auch damit - wie gesagt - 
keine Aenderung. Dadurch, dass das ganze unter Linux laeuft und Python 
auch nicht besonders schnell ist, dauert das vermutlich eh schon laenger 
als die 26µs. Jedenfalls geht es so oder so nicht.

von spess53 (Gast)


Lesenswert?

Hi

>dauert das vermutlich eh schon laenger
>als die 26µs. Jedenfalls geht es so oder so nicht.

Hältst du wenigstens die 40ms vor der Initialisierung ein?

MfG Spess

von holger (Gast)


Lesenswert?

>Hältst du wenigstens die 40ms vor der Initialisierung ein?

So ein Raspi starte sicher nicht in weniger als 40ms durch;)

Wie sieht es mit der Verkabelung aus?

von Martin S. (tungl)


Lesenswert?

Ja, habe wirklich ueberall grosszuegig Pausen verteilt (zu Beginn, aber 
der RPi ist da ja eh schon ne Weile an, und nach jedem Command). Null 
Effekt. Ich frage mich langsam, ob es nicht irgendeine Hardware-Sache 
ist (zumal es gestern ja hervorragend lief). Das Display braucht zum 
Betrieb an 3,3V ja zwei externe Kondensatoren, vielleicht sollte ich die 
mal tauschen.

@holger: Wie gesagt, ein anderes Display haengt direkt parallel an 
diesem und das funktioniert einwandfrei. Leitungen haben alle Durchgang, 
auch die Chip Enable-Leitung, die sich das Display ja nicht mit dem 
anderen teilt.

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

>(zumal es gestern ja hervorragend lief)

Dann solltest du dich mal fragen was du gestern noch geändert hast.

von spess53 (Gast)


Lesenswert?

Hi

Was ist mit dem Reset-Eingang und dem SPI-Mode?

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.