www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Busy-Flag bei LCDs


Autor: Stefan Helmert (Firma: dm2sh) (stefan_helmert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie ist das eigentlich beim Auslesen des Busy-Flags bei z. B. HD44780 
oder T6963C - reicht es einmal die Daten zu lesen und wenn das Busy-Flag 
wechselt, stellt man das fest oder muss man immer wieder einen 
Enable-Impuls geben?

Autor: Christian Erker (DL3CE) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst jedesmal mit Enable lesen.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Busy-Flag braucht man nicht abzufragen, wenn man zyklisch auf das 
Display schreibt und die Zyklen mehr als 50µs auseinander liegen. Dies 
kann beispielsweise durch eine im Hintergrund laufende und durch 
Timer-Interrupt ausgelöste Routine geschehen.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Das Busy-Flag braucht man nicht abzufragen,

Bei größeren Datenmengen, z.B. Grafikdisplays ist es durchaus sinnvoll 
das Busy-Flag zu benutzen. Auch bei Text-Lcds hat das Busy-Flag seine 
Berechtigung, da die HD44780-Kompatiblen bei näheren Hinsehen gerade im 
Timing gar nicht so kompatibel sind.

MfG Spess

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Erker (DL3CE) wrote:
> Du musst jedesmal mit Enable lesen.

Nein, brauchst Du bei HD44780 nicht, mache ich mit (4-bit mode):
    // set enable bit
    LCD_PORT |= (1 << LCD_EN);

    do {
        lcd_e_delay();

        // read high nibble
        // (we do not need to shift it in high-place, because we need only 
        // check one bit..)
    } while (LCD_PORT_IN & 0x08);

    // and clear enable
    LCD_PORT    &= ~(1<<LCD_EN);

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Nein, brauchst Du bei HD44780 nicht, mache ich mit (4-bit mode):

Zufällig schon mal die Timing-Diagramme im Datenblatt angesehen. Im 
Lesemodus werden die Datenleitungen mit der steigenden Flanke von E 
aktualisiert. Ohne passiert gar nichts. Wahrscheinlich ist deine Routine 
so schnarchlangsam, das eine Enable-Flanke ausreicht. In Assembler und 
ab eine gewissen Taktfrequenz funktioniert das so auf keinen Fall.

MfG Spess

P.S. Weil etwas funktioniert, muss es noch lange nicht richtig sein.

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich gehe nicht davon aus, daß meine Routine so schnarchlangsam ist....
...ich habe es ausprobiert, wenn ich nicht in der Schleife loope, bis 
das bit gesetzt ist, dann funktioniert die Displayausgabe nicht. Ich 
habe da wirklich einige Tests durchgeführt.
Im Datenblatt habe ich dazu nichts gefunden, allerdings habe ich nicht 
das Datenblatt zum Controller, nur zu Displays mit diesem Controller.
Ich ging auch davon aus, daß der Controller ohne irgendeine 
Pegeländerung seine Ausgabe nicht ändert, aber das ist wohl nicht so..

Im übrigen bin ich nicht der einzige...
Beitrag "LCD 4Bit modus und BF flag mit Menue Text ausgabe  AVR Assem"

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bei größeren Datenmengen, z.B. Grafikdisplays ist es durchaus sinnvoll
>das Busy-Flag zu benutzen. Auch bei Text-Lcds hat das Busy-Flag seine
>Berechtigung, da die HD44780-Kompatiblen bei näheren Hinsehen gerade im
>Timing gar nicht so kompatibel sind.#

Ist schon richtig, was Du sagst, kostet aber auch einen Pin mehr (R/W) 
und man muß die Display-Datenleitungen bidirektional gestalten. Mit 
Porterweiterungsregistern ist das Essig.

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Dann sieh dir mal S.200 Figure18 an.

MfG Spess

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, damit dürfte es nicht funktionieren.
Dann sind wir bei "funktioniert anders als dokumentiert"....und das 
sowohl auch mit original HD44780 (ich habe da noch einige Displays 
Baujahr 1990 - 1993) und neuen kompatiblen. Wahrscheinlich gehts nur 
"zufällig" weil man intern ein Latch eingespart hat und das Signal dann 
direkt durchreicht.

Vielleicht sollte ich meinen Code dann mal ändern.
Danke für die Spec.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Ist schon richtig, was Du sagst, kostet aber auch einen Pin mehr (R/W)
>und man muß die Display-Datenleitungen bidirektional gestalten. Mit
>Porterweiterungsregistern ist das Essig.

Wenn du Grafikdisplays halbwegs optimal nutzen willst, bist du mit 
Pin-Knausereien sowieso schlecht bedient. Ausserdem bin ich der Meinung, 
das ein Großteil der 'Hilfe mein LCD...'-Beiträgen aus solchen 
halbseidenen Lösungen resultiert.
Ich habe solche Erfahrungen selbst gemacht. Vor Jahren LCD-Routinen 
gestrickt, die auch jahrelang liefen. Dann kam ROHS. Gleiches Display, 
und es ging fast nichts mehr.
Seit dem bin ich schlauer.

MfG Spess

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn du Grafikdisplays halbwegs optimal nutzen willst, bist du mit
>Pin-Knausereien sowieso schlecht bedient. Ausserdem bin ich der Meinung,
>das ein Großteil der 'Hilfe mein LCD...'-Beiträgen aus solchen
>halbseidenen Lösungen resultiert.

Leider sieht die Realität oft anders als optimal aus. Wenn das Display 
nicht 1000-e Male pro Sekunde neu geschrieben werden muß, kann man auf 
Busy verzichten. Außerdem war nicht die Rede von Grafikdisplays.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

> Außerdem war nicht die Rede von Grafikdisplays.

Doch, siehe ganz oben:

>wie ist das eigentlich beim Auslesen des Busy-Flags bei z. B. HD44780
>oder T6963C

>nicht 1000-e Male pro Sekunde

Das ist gar nicht der Punkt. Wenn zusehen kann man, wenn z.B. ein 
240x128 Display komplett beschrieben oder bei Grafikfonts das Display 
gelesen, Bytes verknüpft und wieder zurück geschrieben werden, finde ich 
das nicht so prickelnd. Und unsere Kunden auch nicht. Die Auswertung des 
Busy-Flags ist nun mal die schnellste und sicherste Methode.
Ich plane lieber ein paar Pins mehr ein, und liege auf der sicheren 
Seite.  Deswegen hatte ich, bis auf oben beschrieben Fall, auch nie 
Probleme, egal ob mit Text- oder Grafikdisplays.
Aber das ist halt Ansichtssache.

MfG Spess

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Genau.

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.