www.mikrocontroller.net

Forum: Projekte & Code GOS: einfacher preemptive multitasking scheduler


Autor: Günter Greschenz (tcg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

erstmal vielen danke für alle beiträge hier, das ist alles sehr 
interessant :-)

ich dachte, ich revanchiere mich mal, und poste auch mal was kleines 
feines...
ich bin für jeden kommentar dankbar (optimierungen, verbesserungen, 
vorschläge)

das hier ist ein kleiner multitasking scheduler.
ein beispiel sagt mehr als 64738 worte, also hier mal ein kleines 
(sinnloses) sample:
#include "tasks.h"

TaskSignal s;

Task ts;
void fs()
{
  unsigned char d = 0;
  for (;;)
  {
    taskWait(&s);
    PORTB = d++;
  }
}

Task tw;
void fw()
{
  unsigned char d = 0;
  for (;;)
  {
    PORTB = d--;
    taskSignal(&s);
  }
}

int main()
{
  taskCreate(&ts, fs, TaskPrioHighHigh);
  taskCreate(&tw, fw, TaskPrioHighHigh);
  taskSwitch();
  return 0;
}

auch zu finden unter:
http://www.avrfreaks.net/index.php?module=Freaks%2...

Autor: Karoly Kovacs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Link:

"You must log in to access this area"

Karoly

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja und? Dann meldet man sich eben an, um Zugriff zu haben. Da lohnt 
sich.

MfG Paul

Autor: Günter Greschenz (tcg)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
da steht eh nix anderes drin, ich wollts nur auch den englisch 
sprechenden avr-fans unter uns verfügbar machen :-)
ich hab gesehen, dass ich ja gar kein attachment attached habe, sorry, 
hier isses...

Autor: Karoly Kovacs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Paul:
Es ist natürlich kein Problem, ich wollte bloß sagen, wenn man hier was 
veröffentlich macht, dann bitte wirklich um einen funktionierenden, 
"öffentlichen" Link einfügen.

@Günter:
Danke sehr für Attachment!

Karoly

Autor: Günter Greschenz (tcg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

50 downloads (und bei avrfreaks.net nochmal ca. 80) sind ja schon schön, 
und "no news is good news", d.h. keiner hat fehler entdeckt ?!?
aber hat denn keiner irgendwelche anregungen wünsche oder verbesserungen 
?
wenns alles perfekt geht, freut mich das, aber zumindest positives 
feedback für mein ego wäre schön :-)))

cu, gg

Autor: Karoly Kovacs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Günter,

Habe auch geladen, aber noch nicht getestet (morgen fahre ich nach 
Irland). Nach dem Urlaub kann ich es evtl. "besser" durchlesen, und/oder 
testen.

Zum ersten Blick ist es gar nicht schlecht. :)))

Karoly

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günter Greschenz wrote:

> 50 downloads (und bei avrfreaks.net nochmal ca. 80) sind ja schon schön,
> und "no news is good news", d.h. keiner hat fehler entdeckt ?!?

Naja, ich denke, die meisten gucken wien Schwein ins Uhrwerk und sagen 
deshalb nichts.


> ein beispiel sagt mehr als 64738 worte, also hier mal ein kleines
>(sinnloses) sample:

Würde ich daher nicht zustimmen.

Ne Erklärung (kann ruhig weniger als 64738 worte sein) und ein 
sinnvolles Beispiel wären äußerst hilfreich bei einem so komplizierten 
Thema.


Wenns ein taskCreate gibt, muß es dann nicht auch ein taskAnnihilate 
geben ?


Peter

Autor: Günter Greschenz (tcg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo peda,

ja, hast schon recht, eine kleine docu wäre schon angebracht...
leider hab ich nur noch 3 tage urlaub und die sind schon verplant :-)
ich denke ich komm demnächst mal dazu.
eine (mini) docu steht ja in den sourcen selbst drin, die werde ich dann 
mal erweitern...

kurz zum thema "taskAnnihilate":
da das für kleinst-systeme gedacht ist, die selten bis gar nicht in die 
verlegenheit kommen tasks dynamisch zu erzeugen und zu killen, habe ich 
nur ein create implementiert. das design eines programmes sollte also 
schon am anfang feststehen.

aber ich bin da ja zum glück recht flexibel :-) wenn jemand den 
dringenden bedarf nach dynamischen tasks hat: info zu mir ! ich mach mir 
dann mal gedanken.
allerdings isses (denk ich) dann nicht so einfach, mein ziel (möglichst 
kleiner speicherbedarf) beizubehalten. dynamisch hört sich für mich an 
wie "malloc" und "free", und das habe ich bewusst aussen vor gelassen.

cu, gg

Autor: Günter Greschenz (tcg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich habe den scheduler in mein anderes project (AvrWiz: 
Beitrag "AVR Code Wizard") eingebaut, ist evtl. ganz 
hilfreich (dort wird die benutzte speicher belegung berechnet und 
angezeigt...)

cu, gg

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.