www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik scheduler


Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

programmiere auf einen cc2431 mit einem 8051 prozessor.
habe mir einen scheduler geschrieben nach dem folgenden prinzip:
1. 4 prioritäten
2. jede prioritätsstufe arbeitet mit einem fifo
3. 4 ist die höchste priorität
4. es kommt immer der task mit der höchsten prioritätsstufe an die
reihe und ist nicht preemtiv.

jetzt möchte ich gerne noch ein zeitverhalten über timer einbauen.
kann mir da jemand vielleicht einen ansatz dafür liefer, dh. ne idee
welchen timer man dafür verwendet usw.

vielen dank im voraus

gruß

jimbo

Autor: LC-HC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI, das Thema interessiert mich auch ziemlich, kannst Du mir evtl. ein
paar Links geben, oder entpsrechende Literatur ? Wieso lässt du nicht
einfach einen der Timer laufen und generierst so einen konstanten
Interruptinterval, bei dem jedesmal die Priorität der Prozesse und die
Bearbeitung festgelegt werden ?
mfg

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

mh literatur hab ich keine dazu. hab mir das "selber" ausgedacht,
bzw. das angewendet was ich noch aus dem studium weiß.

wegen timer:
ja einen timer möchte ich verwenden. weiß bloß noch nicht genau wie.

ablauf meines schedulers.

1. starte tasks lege sie in ein task-pool ab. dieser besitzt vier
prioritätsklassen.
 1. T T T T (niedrig)
 2. T T T
 3. T T T T T
 4. T T T T T (hoch)
 jeweils ein fifo.
2. überprüfe nun ob im fifo mit der höchsten priorität ein task
vorhanden ist, wenn ja führe ihn aus (non-preemptiv) und wenn er fertig
ist lege ihn in eine timer queue. wenn nicht suche in nächster stufe
usw.
3. jeder task besitzt eine zeit-dauer, nun soll die timer queue einen
interrupt generieren wenn eine zeit-dauer eines tasks abgelaufen ist
und ihn wieder in den obigen fifo einhängen (je nach prioritätsstufe).
ist nötig da manche tasks nur alle zwanzig minuten arbeiten müssen und
deshalb nicht in den fifo gehören, sonst bekomme ich probleme mit
meinem power management.

hoffe das war verständlich. aber soweit die theorie. funktioniert auch
so weit bis auf die timer-queue.
finde keinen richtigen ansatz wie ich anfangen kann?!?!?!

hoffe mir kann da jemand weiter helfen.

gruß

jimbo

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo PeDa,

vielen dank für den link. werd mir das mal anschauen.
bin mit meinem ansatz auch schon weiter gekommen.
hab mir jetzt eine callbackfunktion geschrieben die mir die daten aus
dem fifo holt, und in eine struktur ablegt, und einen zeitstempel mit
übergeben bekommt.
ist dieser abgelaufen wird eine funktion aufgerufen (callback) die die
daten der task wieder aus der struktur holt und wieder in den fifo
einhängt. läuft aber noch nicht einwandfrei.

gruß

jimbo

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.