RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO 2 Multitasking

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Multitasking

Multitasking 10 Jahre 11 Monate her #2533

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Hallo
wieder etwas neues für euch. Wie der Titel schon sagt, geht es um Multitasking. Es gibt auch Beispiele dazu bei den Programmen. Besonders empfehle ich das Menueprogramm und Ein-Knopf-Bedienung :welcome: Versucht es mal


Dateianhang:

Dateiname: TutorialTeil8PrgMultitasking.pdf
Dateigröße: 745 KB


wünsche viel spass dabei
Wie siehts aus mit einer Rückmeldung?
achim
Letzte Änderung: 10 Jahre 11 Monate her von achim S..
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Multitasking 10 Jahre 10 Monate her #2534

Also, meines Wissens kann man auf dem AVR auch "echtes" Multitasking machen - muss halt bisschen tricksen, aber das muss man auf fast allen Architekturen ;-) Ich hatte das mal für die Diplomarbeit für den XE167er, ein 16 Bit Mikrocontroller, gemacht.

Meist muss man die gesicherten Flags und den PC des vorher ausgeführten Task vom Stack klauben und das Zeug vom neuen Task auf den Stack legen und ein return machen - und den Stackpointer anpassen. Spaß macht das ganze aber erst mit 2...4 KB RAM, weil man dann für jeden Task ein paar 100 Byte Stack reservieren kann.
Und der Scheduler ist kein Hexenwerk - Round-Robin reicht erstmal völlig.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Multitasking 10 Jahre 10 Monate her #2535

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Hi Achim, so richtig Multitasking ist das m.E. aber noch nicht.. :dry: das beschriebene E-V-A habe ich jedenfalls in den Beispielprojekten 10..6 nicht erkannt.

Versuch doch mal das Projekt myWorx zu zerlegen - der nibo2 fährt (ein bisschen) die Headlights flashen, auf dem Display läuft eine Animation und es wird La Cucuracca gepiepst (gleichzeitig).

Der große Zeitfresser in der Nibo Lib ist das Grafikdisplay, aber ich habe noch keine andere Lib gesehen, in der diese Drawmodes mit XOR OR und Invers unterstützt werden. Und wenn alles nach EVA laufen soll, müssten auch die Displayausgaben zwischengespeichert werden, und erst am "Ende" der main-loop an das Display ausgegeben werden, ebenso die Werte für die LEDs an die Ports, die Daten an die Seriellen Schnittstellen... dann sind die Pins einzulesen und zwischenzuspeichern. Und wenn man eine feste Zykluszeit 10..100ms hinbekommt und die Pins auf steigende oder fallende Flanken abfragt ist das Thema Entprellen auch schon gegessen.

Bitte fass' das nicht als Mecker auf - ich wünschte, ich hätte auch die Zeit und die Gabe solche Tutorials zu schreiben..

Und wie geht's weiter?
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Multitasking 10 Jahre 10 Monate her #2536

Ah, wird das Display von der Nibo2 direkt vom Hauptmikrocontroller gesteuert? Da finde ich das bei der Biene aber wesentlich besser, wo ein AVR zwischenhängt und dem man nur via I2C die Kommandos schickt ;)

@echtes Multitasking: Schaut euch mal FreeRTOS ( www.freertos.org/ ) an, das sieht recht nett aus.
Letzte Änderung: 10 Jahre 10 Monate her von mifritscher.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Multitasking 10 Jahre 10 Monate her #2537

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Hallo
mein Tut und die Programme sind als Beispiel zu sehen. Bei meiner suche im Netz habe ich verschiedene Möglichkeiten gefunden Multitasking, als echtes, oder "fast echtes" zu machen. Manche waren sehr kompliziert, andere so gross, andere in einer anderen Sprache geschrieben. Leider fehlt mit das Wissen um solche Sachen anzupassen oder einzubauen. Es geht mir einzig darum, zu zeigen was auch mit einfachen Mitteln möglich ist. Es soll einfach und nachvollziehbar sein. Auch bei der Tastenentprellung benutze ich ein erprobtes Programm. Auch dabei gibt es wieder verschiedene Versuche etwas zu machen. Mit mehr oder minder Erfolg. Gerade das ich z.B. 4 Taster verwenden kann und noch unterscheide wie lang der Taster gedrückt wurde, gefällt mir sehr gut. Da Nibo im ori nur S3 hat, möchte ich ihn für verschiedene Sachen nutzen. Bis her habe ich kein Programm gesehen, was Laufschrift und verschiedene Zeiten bei LED machen kann, alles gleichzeitig. Das EVA wurde bei meiner Ausbildung so gelehrt. So viel ich weiss ist Windows auch kein Echtzeit System. Das Systen arbeitet so immer im Hintergrund.
Nochmal. Das sind alles Beispiel, wie man es machen kann. Es steht jedem frei, es so zu machen oder etwas anderes zu machen. Nehmt es als Anregung um eigene Sachen zu machen.
achim
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Multitasking 10 Jahre 10 Monate her #2538

Wir möchten deine Tutorials nicht kritisieren oder so, sondern nur weitere Anregungen geben ;-)

Ich bin auch ein wenig vorbelastet, weil "echtes" preämptives Multitasking ein wichtiger Teil meiner Diplomarbeit war. Ich weiß wie schwierig das ist - ich habe meine Flüche nicht gezählt *g*

Was auch oft gemacht wird ist kooperatives Multitasking, wo die einzelnen Tasks nur eine kleinigkeit machen und danach ihren Status speichern und die Kontrolle abgegeben - dann kann die CPU schlafen, bis der Timer wieder zuschlägt. Gerade bei Tasks, die nicht viel rechnen, sondern hauptsächlich kontrollieren und so möchten ist das ziemlich effizient.

dunkels.com/adam/pt/ klingt relativ gut - verwendet kein preämptives Multitasking, hat aber sehr wenig Overhead

www.avrfreaks.net/modules/FreaksArticles/files/14/Multitasking%20on%20an%20AVR.pdf - eine ganz gute Beschreibung, wie man preämptives Multitasking in 99% C hinbekommt ;-) Man muss da glaube ich nur in wenig mit dem Tick aufpassen. Das kritischte, der Kontextwechsel an sich, kann man aber so übernehmen - und der ist der einzige Teil, der in Assembler geschrieben ist

www.mikrocontroller.net/topic/74026 - gefällt mir persönlich am besten. Das sollte einfach so laufen, und macht nichts anderes als präemptives Taskwechseln. Die Signalimplementierung finde ich auch schön. Dabei kann sich ein Task schlafenlegen, bis er von einem anderen Task (oder IRQ) aufgeweckt wird. Weiter unten gibts auch eine zip-Datei zum herunterladen, man muss sich also nicht registrieren. Da muss man höchstens noch der avr atmega1284 eingetragen werden.
Letzte Änderung: 10 Jahre 10 Monate her von mifritscher.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Ladezeit der Seite: 0.045 Sekunden

Werbung