AVR Multitasking verständnisfrage

Gast #5186544
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?
#5186548
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.
#5186573
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.
#5186638
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren