Pausen in c

Gast #238971
Lesenswert?
• ▲
▼
Hallo


In meinen Augen ist der Delay-Befehl ebenso zu sehen wie der
goto-Befehl: Finger weg !
Damit wird der Controller nur zum nichtstun verdonnert !
Je komplexer das Programm wird, desto wichtiger wird es, Wartezeiten
für andere Aufgaben zu nutzen, um die Effizienz zu erhöhen.

Statt einem Delay sollte man unbedingt auf Timer zurückgreifen. Ich
selbst habe mir ein Zeitscheibensystem gebastelt, in der ich mittels
eines Timers verschiedene "Zeitscheiben" (10ms, 20ms, 40ms...)
verwende. Dieses System dient bei mir als Betriebssystem des
Controllers. Innerhalb der einzelnen Zeitscheiben werden die
Funktionsaufrufe eingebaut.

Zum Beispiel: Abfrage eines Temperatursensors wird in der 1280 ms -
Zeitscheibe aufgerufen. Zeitkritischere Anwendungen werden dann in der
10 ms-Zeitscheibe angestoßen.

Damit lassen sich auch wunderbar Wartezeiten realisieren, die die
anderen Funktionalitäten nicht zum Stillstand zwingen.

Gruß
Detlef
Gast #238972
Lesenswert?
• ▲
▼
Mache ich auch so wie Detlef.

Die Funktion setzt eine Variable auf die Wartezeit und der
Timerinterrupt zählt diese runter.
In der Mainloop machst Du die anderen Sachen und testest nebenbei die
Variable auf 0 und dann erst gehts weiter.
Mit 10ms Interrutpzeit kannst Du mit einem Byte max 2,55s warten.

Wenn Du allerdings 16Bit-Zählvariablen nimmst, muß das Testen und
Setzen immer unter Interruptverbot erfolgen, da ein 16Bit-Zugriff nicht
atomar ist !


Peter
Gast #238974
Lesenswert?
• ▲
▼
@Thomas,

natürlich nicht.

Für kurze Zeiten (SW-I2C) sind Delay-Loops durchaus sinnvoll.

Aber alles über 1ms ist in meinen Augen CPU-Zeitverschwendung und kann
besser genutzt werden.


Peter

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.