Re: hwcomm und multithreading Kategorie: Programmierung (von André H. - 4.04.2004 11:50) | ||
Als Antwort auf hwcomm und multithreading von Johannes - 3.04.2004 13:04 | ||
| ||
Hallo Johannes, > langsam nervt mich dieses hwcomm-modul. Kann mir jemand sagen, wie ich hwcomm aus mehreren > threads aus verwenden kann? Oder wo dabei genau die Probleme liegen? Das Problem liegt nicht an HWCOM, sondern eher 100%ig an Deinen Routinen. Ich wei� nicht, warum immer mehr glauben, die Probleme lägen an den Modulen und nicht an den eigene Routinen ! Prinzipiell gilt für Schnittstellen immer: Max. Ein Zugriff zur selben Zeit. Das gilt für die CC2 genauso wie für jeden X-beliebigen PC ! Oder hast Du schonmal erfolgreich versucht eine serielle Schnittstelle am PC von zwei Programmen gleichzeitig zu öffnen ? Man kann zwar bei der CC2 bei der seriellen Schnittstelle aus mehreren Threads schreibend zugreifen, aber beim lesen geht das natürlich nur aus einem Thread. Sonst kommt es zu Datensalat. Damit es beim Senden aus mehreren Thread nicht auch zu Datensalat kommt, wie es jetzt der Fall ist, mu�t Du als erstes ein Protokoll defnieren, welches die Gegenseite auch versteht. Zudem mu� dieser Protokoll-Datenrahmen komplett gecaptured werden. Dazu bnötigst Du jedoch ein erweitertes Capture aus dem Modul cap.c2 . In jedem Thread sehe dann die koplette Senderoutine so aus: thread xy { //... cap.Capture(0) // hier wird auf HWCOM schreibend zugegriffen //... cap.Release(0); // Andere Aufgaben/Routinen im Thread //... } Allerdings ist es wirklich einfacher und sinnvoller einen eigenen Kommunikationsthread zu betreiben, als mit 100 Thread je einen Datenwert kompliziert zu senden. Denn auch, wenn die CC2 Multithreading unterstützt, hei�t es: Nur so viele Thread wie nötig. Oft ist weniger mehr. :-) Und um ein kleines Beispiel mit einer komplexeren Heizungsregelung zu nennen: Hier würde man sinnvollerweise folgende Threads einsetzen: 1x Kommunikation (pro Schnittstelle) 1x Display & Menü (incl. Eingaben/Tastatur) (evtl. zusätzliche Threads für Terminals am I²C-Bus) 1x Zyklus (allgemeine kleine Aufgaben. Watchdog, �berwachung von I²C-INT-Leitungen etc.) 1x Regelung 1x Heizungsmischer (pro Mischer) 1x Auswertung von Sensoren (kann allerdings ggf. auch im Regelungsthread erfolgen) MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: hwcomm und multithreading (von Johannes - 4.04.2004 16:45) Re: hwcomm und multithreading (von André H. - 10.04.2004 9:47) Re: hwcomm und multithreading (von Johannes - 12.04.2004 18:09) |