Forum: Mikrocontroller und Digitale Elektronik Busy-Flag bei LCDs


von Stefan H. (Firma: dm2sh) (stefan_helmert)


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?

von Christian Erker (DL3CE) (Gast)


Lesenswert?

Du musst jedesmal mit Enable lesen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von spess53 (Gast)


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

von Bernhard M. (boregard)


Lesenswert?

Christian Erker (DL3CE) wrote:
> Du musst jedesmal mit Enable lesen.

Nein, brauchst Du bei HD44780 nicht, mache ich mit (4-bit mode):
1
    // set enable bit
2
    LCD_PORT |= (1 << LCD_EN);
3
4
    do {
5
        lcd_e_delay();
6
7
        // read high nibble
8
        // (we do not need to shift it in high-place, because we need only 
9
        // check one bit..)
10
    } while (LCD_PORT_IN & 0x08);
11
12
    // and clear enable
13
    LCD_PORT    &= ~(1<<LCD_EN);

von spess53 (Gast)


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.

von Bernhard M. (boregard)


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"

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

Dann sieh dir mal S.200 Figure18 an.

MfG Spess

von Bernhard M. (boregard)


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.

von spess53 (Gast)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von spess53 (Gast)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ja. Genau.

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.