Ich lerne, in diesem Fall ein RTOS, CMSIS RTOS, zu verwenden, daher ist meine Frage grundlegend. Ich möchte wissen, wie ich Informationen zwischen zwei Aufgaben am besten austauschen kann.
Was ich versuche, ist im Grunde ein Controller mit etwas externer Kommunikation. Dieses System hat zwei Aufgaben.
Aufgabe 1. Controller-Aufgabe:
Aufgabe 2. Kommunikationsaufgabe:
Wie sollen diese beiden Aufgaben kommunizieren? Wenn ich kein RTOS verwendet habe, werde ich private globale Variablen verwenden, die mit einigen öffentlichen Get/Set-Funktionen umschlossen sind. Aber soweit ich verstehe, ist das nicht der Weg, dies in einem RTOS zu tun.
Sollte ich eine Warteschlange verwenden, in der die Kommunikationsaufgabe eine Anforderungsnachricht schreibt, dass die Controller-Aufgabe jede Iteration überprüft? Das Problem, das ich bei dieser Lösung sehe, ist, dass die Controller-Task so schnell wie möglich ausgeführt werden muss, sodass entweder die Controller-Task nur auf eine Anfrage pro Iteration antwortet, wodurch die Kommunikationstask weniger reaktionsschnell wird, oder sie auf alle Anfragen antwortet, wodurch ihre Ausführungszeit länger wird .
Dies ist eine gute Möglichkeit, Daten zwischen Aufgaben zu übergeben, ja. Wenn es so etwas wie FreeRTOS ist, können Sie auch die empfangende Aufgabe blockieren, bis sich etwas in der Warteschlange befindet (wenn Sie möchten). Oder Sie können prüfen und durchspringen oder eine bestimmte Zeit warten, bevor Sie zur nächsten Anweisung in der Aufgabe wechseln. Diese Blockierung ist meiner Meinung nach eine der wahren Schönheiten beim Betrieb eines RTOS. In der Lage zu sein, eine Aufgabe darauf warten zu lassen, dass eine andere Aufgabe sie übergibt, kann Ihr Leben viel einfacher machen, und Warteschlangen ermöglichen dies auf Thread-sichere Weise.
Sie haben auch die Möglichkeit zu prüfen, ob eine Warteschlange voll ist, bevor Sie darauf schreiben, und wenn sie voll ist, die Möglichkeit zu warten, bis Platz ist, bevor Sie darauf schreiben.
Ich nehme an, Sie haben die Möglichkeit, viele verschiedene Arten von Daten in die Warteschlangen zu schreiben, einschließlich Strukturen. Warteschlangen sind sehr nützlich und eine sichere Möglichkeit, Daten zu übergeben.
DiBosco
jonk
krambo
JHG
JHG
JHG
jonk
krambo