Forum: Mikrocontroller und Digitale Elektronik AVR Multitasking verständnisfrage


von Cheater (Gast)


Lesenswert?

Guten Abend zusammen

Ich habe soeben das Multitaskingtutorial durchgeschaut und bin an einem 
Punkt hängengeblieben : 
https://www.mikrocontroller.net/articles/Multitasking#Verbesserter_Ansatz

Dort werden ja quasi die 3 verschiedenen Aufgaben die der MC zu 
erledigen hat in Funktionien verbaut und dann im Hauptprogramm diese 
einzeln aufgerufen, dann eine Milisekunde gewartet und dann alles wieder 
von vorne.

Wenn jetzt aber die LED schön im Takt blinken soll, dann verzögern ja 
die anderen 2 Funktionen die 1 ms Wartezeit bis zum erneuten Aufruf der 
Blinkfunktion, nicht? Der MC benötigt ja eine gewisse Zeit zusätzlich um 
die Funktionen abzuarbeiten. Und so dauert es minimal länger als 1 ms 
bis die Funktion wieder aufgerufen wird, oder?


Stimmt es das es nur sehr schwer möglich ist Zeitkritisches Multitasking 
auszuführen ohne Timer/Interrupts?

von Felix U. (ubfx)


Lesenswert?

Cheater schrieb:
> dann verzögern ja
> die anderen 2 Funktionen die 1 ms Wartezeit bis zum erneuten Aufruf der
> Blinkfunktion, nicht?

Das ist so.

Cheater schrieb:
> Und so dauert es minimal länger als 1 ms
> bis die Funktion wieder aufgerufen wird, oder?

ja

Cheater schrieb:
> Stimmt es das es nur sehr schwer möglich ist Zeitkritisches Multitasking
> auszuführen ohne Timer/Interrupts?

Zumindest eine generische Lösung lässt sich nicht so leicht finden.

von Cheater (Gast)


Lesenswert?

@ Felix U.

Top, vielen Dank für die Rasche Antwort. Jetzt verstehe ich das ganze 
langsam im gesamten.

von Falk B. (falk)


Lesenswert?

@Cheater (Gast)

>Blinkfunktion, nicht? Der MC benötigt ja eine gewisse Zeit zusätzlich um
>die Funktionen abzuarbeiten. Und so dauert es minimal länger als 1 ms
>bis die Funktion wieder aufgerufen wird,

Ja.

>Stimmt es das es nur sehr schwer möglich ist Zeitkritisches Multitasking
>auszuführen ohne Timer/Interrupts?

Ja, aber warum sollte man das? Einen Timer hat heute jeder uC.

von Purzel H. (hacky)


Lesenswert?

Das Konzept nennt sich Systemtick. Ein timer interrupt, der alle ms ein 
Flag setzt. Das mainfragt dieses Flag ab und fuehrt alle ms das passende 
aus. Gewartet wird nirgendwo. Strikt nirgendwo

von Thomas E. (thomase)


Lesenswert?

Zwölf M. schrieb:
> Das Konzept nennt sich Systemtick.

> Ein timer interrupt, der alle ms ein Flag setzt. Das mainfragt
> dieses Flag ab und fuehrt alle ms das passende aus.

Wenn es das einzige ist, was in der ISR passiert, kann man sich den 
Interrupt mit seinem ganzen Overhead auch sparen und das Timer-Flag 
direkt abfragen.

> Gewartet wird nirgendwo. Strikt nirgendwo

Doch, natürlich wird gewartet. Je nachdem wie lange das, was beim 
Systemtick abgearbeitet wird, dauert, wird entsprechend lange auf den 
nächsten Tick gewartet.

Aber genau das sorgt für ein vernünftiges Timing. Mit regelmäßig 
blinkenden Leds, flackerfreiem Multiplexing etc.

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.