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?
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.
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
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); |
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.
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"
>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.
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.
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
>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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.