LCD-Anwendungen und Delay-Methoden

OP #2164986
Lesenswert?
• ▲
▼
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
Gast #2165012
Lesenswert?
• ▲
▼
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!
Gast #2165015
Lesenswert?
• ▲
▼
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.
#2165028
Lesenswert?
• ▲
▼
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.