Hi Micha,
tja ...
... das ist der Multitasking-Kern
(grob erklärt)
So etwas hat glaube ich Oskar ? Markus ? Knickohr ? schon mal erklärt und
benutzt.
Der Sheduler ist eine Routine die Zeitkontingente an Programme vergibt.
Ganz einfach kann man sich das bauen, in dem man einen Timer anlegt, der
sagen wir mal alle 100µS einen Interrupt erzeugt. In der Interrupt-Service-Routine
des Timers läßt man eine Taskliste und einen Zeitzähler ablaufen. Man hat also
eine Taskliste, in der angegeben ist, welches Programm wieviele Ticks
(Zeiteinheiten - also Anzahl Aufrufe der Timer-ISR) laufen darf.
Das sieht dann zB so aus ...
Tastaturabfrage - 1 Tick
Sensorenabfrage - 2 Ticks
Ausgabe auf LCD - 1 Tick
...
..
Dann wird also für einen Tick (in dem Beispiel 100µs) die Tastatur abgefragt,
die Sensorenroutine hat 200µs zur Verfügung, ...
Wenn man für bestimmte Wartezeiten - zB 1sec - etwas verzögern will, dann
trägt man das auch in der Liste ein und der entsprechende Programmteil
wird für (1sec / 100µs = ) 1000 Ticks nicht aufgerufen . Die restlichen Teile
haben dann diese Zeit zusätzlich zur Verfügung. Man kann damit dann
feste Raster aufbauen (alle 10ms) oder man verteilt Rechenzeit, oder, oder ...
So ein Sheduler kann recht kompliziert werden
je nach Anforderungen die
man da hat. Aber ne schöne Sache um die Prozessorleistung optimal nutzen
zu können.
Gruß
Dino