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?
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.
@ Felix U. Top, vielen Dank für die Rasche Antwort. Jetzt verstehe ich das ganze langsam im gesamten.
@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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.