mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD im 4Bit-Modus


Autor: Sebastian Fahrner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab mal ein LCD wie im Tutorial beschrieben angeschlossen. 
Allerdings hab ich auch das Read/Write-Signal angeschlossen, weil ich 
das Busy-Flag abfrage, anstatt eine feste Zeit zu warten.

Im Buch "AVR-Risc Microcontroller" von Trampert heißt es auf Seite 344 
über den 4-Bit-Mode:
"Die beiden Halbbytes dürfen in diesem Fall [4-Bit-Modus] unmittelbar 
nacheinander übertragen, das Busy-Flag muß erst nach der Übertragung des 
gesamten Befehls abgefragt werden."
Wenn ich die beiden Nibble direkt hintereinander (ohne Wartezeit) 
rausgebe, geht's nicht. Wenn ich aber nach jedem Nibble auf das 
Busy-Flag warte, geht's. Also genau anders rum wie im Buch beschrieben.
Es wundert mich jetzt schon irgendwie, weil ich also nach jedem 
geschriebenen Nibble ein ganzes Byte rauslesen muß, um das Busyflag zu 
kriegen. Naja, wie auch immer, hat jemand Erfahrungen damit?

MfG,

Sebastian

Autor: Phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab mal ein LCD wie im Tutorial beschrieben angeschlossen. 
Allerdings hab ich auch das Read/ Write-Signal angeschlossen, weil ich 
das Busy-Flag abfrage, anstatt eine feste Zeit zu warten.
Im Buch "AVR-Risc Microcontroller" von Trampert heißt es auf Seite 344 
über den 4-Bit-Mode:
"Die beiden Halbbytes dürfen in diesem Fall [4-Bit-Modus] unmittelbar 
nacheinander übertragen, das Busy-Flag muß erst nach der Übertragung des 
gesamten Befehls abgefragt werden."

Wenn ich die beiden Nibble direkt hintereinander (ohne Wartezeit) 
rausgebe, geht's nicht. Wenn ich aber nach jedem Nibble auf das 
Busy-Flag warte, geht's. Also genau anders rum wie im Buch beschrieben.
Es wundert mich jetzt schon irgendwie, weil ich also nach jedem 
geschriebenen Nibble ein ganzes Byte rauslesen muß, um das Busyflag zu 
kriegen. Naja, wie auch immer, hat jemand Erfahrungen damit?
MfG,
Sebastian

Ja hatte ich auch das problem.
Allerdings stimmt die aussage im Buch schon

Im Samsung KS0070B Datenblatt ist ein Timing Diagramm für den 4 bit 
modus abgebildet

"Busy Flag outputs "1" after the second transfer are ended"

Du musst 2 mal den Enable pulsen lassen währen der LCD contr im Read 
mode ist.

Ich hatte das problem das die Busy flag abfrage durch den AVR input 
gestöhrt wurde.
Musste den AVR Input auf High Z bringen dann hatts geklappt.

Soll ich dir mal den code (asm) rüberlassen ?

Phagsae

Autor: Phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab den code in die sammlung gestellt

Autor: Sebastian Fahrner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Problem ist: wenn ich beide Nibbles direkt hintereinander sende, 
zeigt das Display nur noch Müll an. Wenn ich dazwischen etwas warte (ca. 
20-30µs) oder eben das Busyflag abfrage, funktioniert es.
Laut Buch muß ich die beiden Nibbles ja direkt hintereinander senden 
dürfen.
Oder ist das vielleicht eine Macke des Display-Controllers (ich weiß den 
genauen Typ nicht, weil schin eingelötet)?

MfG,

Sebastian

Autor: Phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das timing beachtet ?
Zuerst RW/RS setzten
Dann 40ns warten bis Enable gesetzt wird
Enable nicht kürzer als 220ns
Enable muss ca 180 ns anliegen bevor Die Daten akzeptiert werden
Die Daten müssen 60 ns anliegen

Phagsae

Autor: Sebastian Fahrner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja, du hast Recht. Es hat wirklich am Timing gelegen.
Ich hab meine LCD-Routinen jetzt mal umgeschrieben,
und siehe da - jetzt funktioniert es so, wie beschrieben.
Danke für den Tip.

MfG,

Sebastian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.