FreeRTOS + Queue oder FIFO Prozessdaten speichern / versenden

OP #3199403
Lesenswert?
• ▲
▼
Hallo,

Ich habe ein Alvidi Board mit einem AVR32 drauf.
Auf diesem läuft schon FreeRTOS und lwIP.

Nun habe ich einen Task (Regler) der momentan alle 10ms aufgerufen wird.
Jetzt würde ich gerne die Daten (IST/SOLL-Wert, Reglerabweichung, 
Reglerausgang, ...) per TCP versenden und / oder auf der SD Karte 
speichern.

Wie gehe ich das jetzt richtig an damit ich nicht alle 10ms Daten 
versende bzw auf die SD Karte schreibe sondern nur zb alle 100ms?

Meine Gedanken:

Mit FIFO:
Eigener Task der zb nur alle 100ms aufgerufen wird und aus einem FIFO 
die Werte ausliest und das so lange bis der FIFO leer ist. Der andere 
Task mit dem Regler schreibt bei jedem Aufruf Werte in den FIFO.
Können da Probleme entstehen wenn der eine Task gerade in den FIFO 
schreibt und der andere aus diesem liest?
Können bei dem FIFO aus dem Atmel Studio Framework auch andere 
Datentypen außer uint8 bis 32 gespeichert werden? (es stehen nur 
Methoden für diese Datentypen zur Verfügung) Oder ist es auch möglich 
ein Struct mit zb 10 float typen zu speichern?

Über Queue:
Im Regler-Task die Daten zusammenfassen bis zb 10 struct's zusammen sind 
und dann den Pointer über die Queue übergeben. Damit wird der Empfänger 
Task über die Queue aktiviert und der speichert / versendet die Daten.
Da muss ich dann aber mehrere Arrays mit den Struct's anlegen damit ich 
mir die Daten nicht selber wieder überschreibe. Wie kontrolliere ich 
dann ob die Daten schon gespeichert worden sind so dass ich ein altes 
Array wieder überschreiben kann?

Oder funktioniert das ganz anders und einfacher? :)

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.