Hallo! Ich arbeite mit dem uVision von Keil in c mit dem stm32f103vc. Ich habe 2 Tasks mit unterschiedlicher Prio, die unabhängig von einander laufen. Wie kann ich jetzt die Tasks kommunizieren lassen mit einander?? Mailbox?? Im einten Task wird der Ausgang geresetet , im 2. Gesetzt. Ich möchte jetzt im 2. Task mitteilen, er darf den Ausgang nicht setzten, da die Entscheidung des 1. Tasks wichtiger ist! Gibt es sinnvolle Lösungsansätze? Die Mailbox kenne ich eben nicht! Danke und Gruss! M.B.
Warum kann das zweite Unterprogramm nicht noch ein zusätzliches Sperrbit irgendwo abspeichern?
Die Ausgangsbasis ist schon etwas ungünstig, denn eigentlich sollten die selben Pins nicht gleichzeitig mehreren Tasks zugeordnet sein, d.h. ein Pin A.7 sollte von genau einer Task verwaltet werden, nicht von zweien. Andernfalls ist es etwas schwierig, Glitches auf den Pins zu verhindern, wenn also eine Task den Pin setzt bevor die andere die Kontrolle übernimmt und ihn sofort wieder löscht. Daher möchte ich ganz vorsichtlich mal die Frage stellen, ob die bestehende Konstellation wirklich der Stein der Weisen ist, oder ob man nicht vielmehr die Kontrolle über den Pin einer einzelnen Task überlassen sollte, die ggf. von der anderen über deren Zustand/Wünsche informiert wird.
Danke für die Tipps! @ A. K. : Ja, das sehe ich genau so! Ich möchte anstelle, dass ich direkt den Pin anspreche dem anderen Task mitteilen, dass er den Pin zu reseten soll. Wie geht das am besten? Danke und Gruss! M.B.
Das lässt sich ohne Kenntnis der Arbeitsweise der Tasks und der konkreten Zeitbedingungen und mit defekter Kistallkugel schlecht sagen. Wenn die Prio-Task beispielsweise ohnehin zyklisch irgendwelche Runden dreht, dann reicht es u.U. aus, einfach den Zustand einer gemeinsam genutzen Variablen (volatile) abzufragen.
Danke! Habe einen Variable in beiden c Files definiert, einmal als volatile. Sobald in Task2 die Variable gesetzt wird, wird der Pin von Task1 nicht mehr verändert! Gruss M.B.
M. B. schrieb: > Habe einen Variable in beiden c Files definiert, einmal als volatile. Aua! Nicht verschieden deklarieren. > Sobald in Task2 die Variable gesetzt wird, wird der Pin von Task1 nicht > mehr verändert! D.h. beide Tasks manipulieren doch den Pin? So riskierst du möglicherweise den erwähnten Glitch.
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.