I2C-LCD-Problem

Gast #2759252
Hallo Leute,

ich versuche gerade ein LCD (44780 Kompatibel von Pollin)) über 
I2C(PCA8574) anzusteuern. Vorher habe ich das Display über 7 Pins (4 bit 
Modus) betrieben, was auch einwandfrei geht. Aus reiner Neugierde will 
ich das Display mittels eines I2C Expanders PCA8574 ansteuern.

Nun zum Problem:
Ich kann das Display mit 100 bzw. 400 KHz Busgeschwindigkeit im 
Debugging Modus einwandfrei ansteuern. Im Standalone-Betrieb passiert 
rein gar nichts bzw. keine Pin-Pegeländerung am PCA8574. Ich habe nach 
jeder Befehlszeile eine Pause von 1 Sekunde eingebaut, um irgendwelche 
Timing-Probleme zu verhindern. Aber das Problem besteht immer noch. Weil 
ich keine Fehlermeldung wie Ack, Bus bekomme, bin ich etwas ratlos.
#2759271
der PCA8574 hat eine Portstruktur wie die 8051, also Pull-Up-Widerstände 
und einen Transistor, der gegen Masse schaltet. Wenn Du auf die 
Datenleitungen 1-Pegel legst, dann kannst Du den Status sehr wohl 
auslesen.

Ansonsten ist das LCD über I2C eigentlich kaum schwieriger, als 
parallel. Ich habe allerdings einen PCA9555 (16Bit 
Portexpander)verwendet, weil noch 5 Navigationstaster dabei sein. Da 
habe ich mir den Luxus gegönnt und verwende das Display im 8-Bit Modus.

tschuessle
Bernhard
Gast #2759286
Der I2C Expander PCA8574 hat die Pins P0 bis P7 ( P0 = RS / P1 = RW / P2 
= E / P3 = Backlight on/Off / P4 = DB4... P7 = DB7). Die Pins können 
durch das Senden eines Bytes (LSB = P0, MSB =P7) die jeweiligen Pins auf 
high oder low Pegel gesetzt werden. Im Debugging Modus setzt der 
Expander die Pins, nur im Standalone Betrieb nicht. Und da ich keine 
Fehlermeldung wie NAck oder Buserror bekomme, müsste der Expander die 
Befehle erhalten haben und dementsprechend die Pins auf high oder low 
setzen. Tut er aber nicht.
Gast #2761538
der unterschied zwischen wanzenmodus und alleinbetrieb ist, dass 
praktisch alle register ausgelesen werden. ich würde also alle i2c 
status register nach jeder i2c befehlszeile auslesen. guck einfach in 
dein handbuch rein, in dem die ereignisabfolge genau beschrieben wird...

Lang lebe die Biene Maya!!!!!!!!!!!!!!!!!!!!!einseinseins...
Gast #2762092
@Das_Warzenschwein

Danke für deinen Tipp! Das Auslesen des Status Registers in der while 
Schleife war die Lösung, d.h. nach bestimmten Events muss das Register 
ausgelesen werden, z.B. Start Bit in der while-Schleife überprüfen. Im 
Handbuch steht das nicht explizit, aber wurde empfohlen... darauf muss 
man erst kommen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.