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? :)
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.