Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
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)