Forum: Compiler & IDEs LCD-Ansteuerung ohne delay()


von gast (Gast)


Lesenswert?

Hi,
hat jemand schon mal versucht ein LCD (HD44780) ohne die delay()-Fkt. 
anzusteuern???
Meine Vorstellung war die Pausen über einen Timer-Interrupt zu 
steuern...

Falls jemand dazu eine Idee oder schon Erfahrung damit hat, freue ich 
über die Beiträge und schon mal 'Danke' im voraus...

von micha (Gast)


Lesenswert?

Du kannst auch einfach das Status-Bit (Busy-Flag) abfragen....

von (prx) A. K. (prx)


Lesenswert?

Hab ich mal per RTOS-Timer gemacht. Hat den Vorteil, dass es haargenau 
so aussieht wie mit Delays, d.h. die Version unterscheidet sich von der 
Delay-Version nur durch die Art, wie die Delays implementiert sind, ist 
ansonsten der gleiche modifizierte Fleury-Code.

von hans (Gast)


Lesenswert?

Beim Start braucht man immer eine Zeitverzögerung. Ob man
diese mit delay, nem Timer oder schleife realisiert ist egal.

Danach kann man das Busyflaf des Displays benutzen. Man benötigt
dann jedoch den RW-Pin des Displays.
Sinnvoller als nach einem Schreibvorgang dann das Busy abzufragen
(Befehle können dauern!) ist es vor dem Schreiben zu
schauen, ob das Display bereit ist.
Durch diese Rückmeldung ist es auch moglich in gewissem Masse
zu testen, ob das Display richtig reagiert (Wartezeit beschränken
z.B. Watchdog).

gruß hans

von Peter D. (peda)


Lesenswert?

gast wrote:
> hat jemand schon mal versucht ein LCD (HD44780) ohne die delay()-Fkt.
> anzusteuern???


Beitrag "Formatierte Zahlenausgabe in C"


Peter

von Route_66 (Gast)


Lesenswert?

Hallo!
Ich habe die Displayansteuerung mal im Timerinterrupt gemacht.
So alle zwei ms ein neues Zeichen ausgeben wenn in einem Pufferbereich 
was neues verfügbar ist. Braucht wenig Zeit, nur Schreibzugriffe 
erforderlich, Busy muss nicht abgefragt werden. Man kann sogar ein 
"scrollen" ermöglichen, wenn das gesamte Display als "Bildspeicher" im 
internen RAM gespiegelt wird. Alle Ausgaben an das Display sind dann nur 
Speicherzugriffe auf die entsprechenden RAM-Zellen.
Wichtig: bei der Initialisierung müssen die Zeiten immer eingehalten 
werden. Also erst die übliche INIT-Sequenz und dann erst Interrupt 
freigeben.

von Sven (Gast)


Lesenswert?

Hallo und danke für die schnellen Antworten!

Ich bin im Augenblick soweit, dass die Zeichen in den Bytestrom 
umgewandelt werden und zwischen gespeichert werden. Dieser wird dann 
Timergesteuert übertragen.
Jetzt bleiben 'nur' noch die sinnvollen Ausgaben zu organisieren...

Viele Grüße Sven

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.