Forum: Mikrocontroller und Digitale Elektronik Mehrere Delays parallel


von Tallin (Gast)


Lesenswert?

Tach,

wenn ich mir die üblichen Delay Loop Routinen ansehe, dann vernichten 
sie einfach Zeit, während der man nichts anderes tun kann. In der 
Steuerungstechnik benötigt man jedoch die Möglichkeit, mehrere Delays 
parallel zur gleichen Zeit ablaufen zu lassen. So sind zum Beispiel in 
Speicherprogrammierbaren Steuerungen (SPS), wo diese delays "Timer" 
heißen (hat nichts mit den Timern in Microcontrollern zu tun), eine 
dreistellige Anzahl parallel laufender Timer keine Seltenheit. Dafür 
bieten diese SPS-Timer keine hundertprozentige Genauigkeit und können 
bisweilen ein wenig in der Dauer schwanken. (genauer gesagt, um eine 
Zykluszeit der SPS)

Es wird klar, dass die reine Zeitvernichtungsmethode in Loops hier nicht 
funktioniert, da dann nur eine Zeit und nicht mehrere parallel ablaufen 
können. Andere hier im Forum existierende Nachbildungen von SPS 
verbraten pro SPS Timer einen Hardware-Timer des AVR. Eine dreistellige 
Anzahl von Timern ist damit also nicht zu erreichen.

Kennt jemand ein Programmbeispiel, bei dem mehrere parallele "Timer" 
(delays) parallel ablaufen können? Um deren Funktionieren zu 
verifizieren, könnte ich dieses so umschreiben, dass man für 14 Timer 14 
Controller-Eingangspins als Timereingänge hernimmt und 14 
Controller-Ausgangspins als Timerausgänge. Dann könnte man mit einem 
Oszilloskop überprüfen, ob die Funktion korrekt ist.

von Gustav K. (hanibal)


Lesenswert?

du nimmst einen timer (den vom microkontroller) und lässt den jede ms 
ein interrupt auslösen. in dem interrupt setzt du ein flag. in der 
hautschleife liest du das flag aus, und wenn das flag gesetzt ist, 
variable hochzählen, und auf bestimmte zählerstände überprüfen. und flag 
zurücksetzten nicht vergessen, am besten direkt nach der überprüfung.

von Peter D. (peda)


Lesenswert?


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.