Hallo ich habe auf einem NEC Board das FreeRTOS importiert. Eine Task läuft ohne Probleme. Nun habe ich aber zwei Tasks die hin und her springen sollen. Was muss dafür im Code abändern?
Was du tun musst, steht ganz oben in deinem Code, sogar noch im
Kommentar in Menschensprache :)
> ... take a look at the FreeRTOS eBook ...
Multitasking ist einer der Hauptgründe, warum Leute sich FreeRTOS antun,
dazu sollte man innerhalb von Minuten was finden.
Wenn ich das Programm so teste, dann wird zwar die Task1 reingesprungen aber im Hauptprogramm wird nicht in die while(1) Schleife reingesprungen. Eigentlich müsste dies doch parallel laufen oder?
Im Hauptprogramm selber steht sogar wie du den zweiten Task anbekommst, der läuft sogar schon!
Achso mit "vStartSemaphoreTasks(main_PRIORITY1);" wird der andere Task aktiviert. Ja und warum wird nicht parallel im Hauptprogramm die while(1) Schleife ausgeführt?
>Achso mit "vStartSemaphoreTasks(main_PRIORITY1);" wird der andere Task >aktiviert. Ja und warum wird nicht parallel im Hauptprogramm die >while(1) Schleife ausgeführt? Nein wirds nicht. Schau dir die main() doch mal an, da werden zwei Tasks angemacht. Und les dich mal ein bisschen über Multitasking ein, du hast null Ahnung.
Was ich eigentlich möchte ist, dass die zwei Task unabhängig voneinander laufen sowie die while(1) Schleife im Hauptprogramm. Das müsste doch machbar sein. Ich schonmal unter einem Embedded PC mit VxWorks gearbeitet. Da konnte man Tasks erzeugen und diese liefen auch parallel.
John schrieb: > Achso mit "vStartSemaphoreTasks(main_PRIORITY1);" die Funktion betrifft einen Beispieltask in den FreeRTOS Demoprogrammen. >wird der andere Task aktiviert. Was gemacht wird, steht recht ausführlich im Kopf der Datei semtest.c (demos/common). Es werden sogar zwei Tasks angelegt. Aber das hilft wenig für die eigene Anwendung, es sei den man schreibt an der Beispieldatei herum. > Ja und warum wird nicht parallel im Hauptprogramm die > while(1) Schleife ausgeführt? Der Scheduler ist das "Hauptprogramm". Wenn man Abläufe quasi-parallel haben möchte, legt man dafür tasks an. Im einfachsten Fall (=meist nicht die beste Lösung) Task mit gleichen Prioritäten, damit der Scheduler sich alleine um die Rechenzeitzuweisung kümmert. Ohne bisher mit NEC-Controllern gearbeitet zu haben, dafür ein wenig mir FreeRTOS, etwas zum Ausprobieren: (1) entfernen der Aufrufe von vStartSemaphoreTasks, vStartBlockingQueueTasks und vStartSemaphoreTasks, es sei denn man will die Demo-Tasks aus den FreeRTOS-Beispielen in der eigenen Anwendung (2) Bei xTaskCreate für vTask1 und vTask2 gleiche Werte für Prioritätsparameter verwenden z.B. indirekt über Makro main_PRIORITY1
John schrieb:
> Weiss vielleicht einer ob es ein deutsches Skript zum FREERTOS gibt?
Lies die englische Doku.
Und wenn es am Anfang mit dem Wörterbuch daneben ist. Keine Angst, das
ist kein Shakespear Englisch. Das lässt sich ziemlich leicht lesen und
das meiste, was du am Anfang nicht verstehst erschliesst sich aus dem
Zusammenhang bzw. beim Studium der Beispiele. Das wäre bei einem
deutschen Skript auch nicht anders und die Fachbegriffe sind sowieso
alle Englisch.
Und ausserdem kann es nicht schaden, sein Englisch zumindest soweit
aufzupolieren um technische Doku im Bereich Informatik lesen zu können.
Man weiß nie, wozu man das noch brauchen kann.
Danke für eure Hilfe. Hat von euch mal einer mit QUEUE's von freeRTOS gearbeitet?
John schrieb:
> Hat von euch mal einer mit QUEUE's von freeRTOS gearbeitet?
Sicher noch einige ausser mir.
Aber die Fragerei bringt in der Art nichts. Erstmal die FreeRTOS.org
Seite ansufen, dort ist die Dokumentation online verfügbar. Für Queues
siehe u.a. Gettings-Started/inter-task-Comm. und API reference/Queues.
Ansonsten Anleitungen im PDF-Format kaufen. Ja, das ist alles in
englisch. Nein, ich kenne keine deutsche Übersetzung (man kann es mit
einem online-Übersetzer versuchen). In der Dokumentation sind
Codeausschnitte und in den Demoprojekten im FreeRTOS-Paket gibt es
diverse Beispiele.
Karl heinz Buchegger schrieb: > Und ausserdem kann es nicht schaden, sein Englisch zumindest soweit > aufzupolieren um technische Doku im Bereich Informatik lesen zu können. > Man weiß nie, wozu man das noch brauchen kann. Och, zum Beispiel - für jeden einzelnen verdammten Tag im Berufsleben? ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.