Servus, ich nutze gerade die LCD-Bibliothek von master.andre: Beitrag "GLCD Routinen ( KS0108, HD61202 )". In dieser Lib werden zahlreiche Delay-Methoden aufgerufen, wie z.B. _delay_us() und _delay_ms(). Die Frage ist, was passiert wenn es noch andere Tasks gibt, z.B. Datenverarbeitung, Komminikationen usw. Das Programm hält an bei diesen Delay-Mothoden und kann weitere Aktionen nicht mehr ausführen. Ist dies üblich in LCD-Anwendungen? Cu Owen
Du arbeitest mit GCC? IIRC sind diese _delay...() Funktionen sowas wie
NOP-Schleifen, die Rechenzeit verbraten sollen.
Du schreibst aber:
> was passiert wenn es noch andere Tasks gibt
Meinst Du mit "Tasks" 'andere Aufgaben' oder nutzt Du Tasks eines RTOS?
Wenn Du ein präemptives RTOS nutzt, dann kann dieses die delay-Schleifen
unterbrechen und andere Aufgaben ausführen. Aaaabber: die delay-Schleife
weiss nix von der Unterbrechung, d.h. die Zeit, in der ein anderer Task
läuft, kommt zur delay-Zeit hinzu! Du wartest also >= der delay-Zeit!
Ich frage bei LCDs immer das Statusflag ab. Damit haben sich viele Delays schon von vornherein erübrigt. Ansonsten mache ich nur ganz kurze Sachen mit einer Delay-Loop, z.B. die Verzögerung zwischen Daten ausgeben und CE toogeln. Für alles andere setze ich ein Flag und aktiviere den Timerinterupt. Damit wird kaum Rechenzeit sinnlos verbraten und die Programmabarbeitung ist effektiver, aber auch umständlicher zu programmieren.
Jens schrieb: > Ich frage bei LCDs immer das Statusflag ab Das abwarten verbrät Rechenzeit. Das ganze dauert dann oft länger als eine delay Zeit. us kann man in Kauf nehmen. bei ms Sekunden wird es verschwänderisch. Entweder programierst du etwas (zum Beisiel eine Berechnung) die in etwa diese Zeit verbraucht und setzt diese anstelle des delays ein oder du benutzt ein RTOS und sagst ihm, dass diese Task jetzt verlassen werden kann, jeodch nach sovielen ms wieder zurückspringen soll. Du musst dabei achten, das die Priorität der Task hoch ist, damit garanitert wird, dass nach der abgelaufenden Zeit wieder die Display-Task weiterläuft.
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.