mikrocontroller.net

Forum: Compiler & IDEs NEC Board - FreeRTOS


Autor: John (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke! Ich suche so eine Deutsche Anleitung mit ein paar Beispielen.

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Hauptprogramm selber steht sogar wie du den zweiten Task anbekommst, 
der läuft sogar schon!

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso mit "vStartSemaphoreTasks(main_PRIORITY1);" wird der andere Task 
aktiviert. Ja und warum wird nicht parallel im Hauptprogramm die 
while(1) Schleife ausgeführt?

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Susanne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du parallele Verarbeitung haben willst brauchst du ein FPGA.

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiss vielleicht einer ob es ein deutsches Skript zum FREERTOS gibt?

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
John will ein deutsches Skript? ;)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Hilfe.

Hat von euch mal einer mit QUEUE's von freeRTOS gearbeitet?

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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? 
;-)

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.