- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 8 von 8

Thema: Scheduler

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.06.2006
    Beiträge
    478

    Scheduler

    Hallo, hier soll es um die Erarbeitung gehen, wie auf einem AVR (hier ein Mega ein Scheduler implementiert werden kann. Im unteren ausklappbarem Code steht der Post, wie ich diesen Thread ursprünglich angefangen habe. Die eigentlichen Aktionen gehen erst bei Eintrag #6 los.

    Vorraussetzung für diesen Thread ist, dass man Assembler versteht und weiß, was bei einem Interrupt im AVR vor sich geht.
    Auch sollen hier nicht die Philosophien diverser Scheduler, Multitasksystem oder Betriebssysteme erörtert werden.
    ich denke allerdings nicht, das eine Vorstellung davon, was ein Scheduler ist zwangsweise nötig ist. Im Sinne des induktiven Lernens also villeicht interessant. Es soll um ein How-To gehen, das ganz unten anfängt - weil das auch mein Startpunkt in Sachen Scheduler auf AVR ist
    Es sei nur kurz gesagt, dass die Grundidee eines Schdulers ist folgende ist:

    Es gibt ein Sammelsorium an Aufgaben/Funktionen. In bestimmten Zeitabständen wird ein so genannter Scheduler aufgerufen, oft in Form einer ISR. Dadurch wird natürlich ein gerade laufende Funktion unterbrochen. Der Scheduler in der ISR kann dann anhand "irgendwelcher" Informationen entscheiden, ob es villeicht sinnvoll ist, erstmal eine andere Funktion aufzurufen, bevor zur ersten zurückgeprungen wird.


    Code:
    Hallo da, 
    
    ich bin auf dem Weg zum ersten mal zu einem Scheduler zu greifen. Ich weiß wohl, dass das was ich erreichen will der Norm nach aus Scheduler und Dispatcher besteht. 
    
    Hintergrund:
    Ich habe an der UART vom Mega8 eine GPS Antenne und will auf Basis eines Zielortes, des eigenen Standortes und dem Kurs über Grund eine Zielpeilung machen. Das geht auch schon und man kann sich vorstellen, dass die Aufgabe in Funktionen unterteilt ist "gathering_data()", "compute_lan_lon_diff();", "divide_y_by_x"();" usw...
    
    Jetzt soll das Teil aber bald noch mehr können. Ich habe vor einen Interrupt auf Basis des Timer2 mit 20kHz laufen zu lassen, wo der Scheduler läuft und entscheidet, wenn etwas anderes anliegt, ob zuerst das erledigt werden sollte. 
    
    Problem:
    Jetzt komm ich gedanklich nicht weiter, wie ich das tatsächlich umsetzte. Ich habe etwas Bauchschmerzen mit der Idee, aus der ISR heraus vom Scheduler/Dispatcher eine Funktion aufzurufen. 
    Wie bekomme ich es also hin, dass nach Ablauf der ISR nicht in eine der GPS Funktionen zurückgesprungen wird, sondern erstmal an eine andere Stelle?
    Muss ich da am Stack für den Programmcounter rumspielen und die Adresse einer anderen Funktion "reinmogeln"?
    
    viele Grüße, 
    The Man
    Geändert von The Man (26.02.2012 um 11:21 Uhr)
    Chuck Norris kann Windows Vista auf einem Atmel in Assembler implementieren!
    Chuck Norris coded mit 3 Tasten:"1","0" und "compile"

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test