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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Leute, > für mich habe ich trotz offener Frage die Lösung. > Die eigentlich emfach, fast offensichtlich. > > Situation: > - Einsatz einer IO-Portkarte mit Schieberegister (SR). Das SR ist die Basis, die Daten, die ich da reinschiebe verarbeite ich dann mit 2 weiteren Ports und funktionen. > - folgende Funktionen werden genutzt: > a) Schieberegister füllen > b) Port einlesen: nutzt a) und ports.c2 > c) Port schreiben: nutzt auch a) und ports.c2 > > Problem: b wird nun von verschiedenen Funktionen und threads aufgerufen. Ein gleichzeitiger Aufruf ist also denkbar. Es liegt also nahe, b mit capture und release zu schützen. Das gleiche Argument gilt auch für c, also auch hier capture und release rein. > b und c greifen wiederum beide auf a zu. Um auch hier einen parallelen Zugriff zu vermeiden dachte ich, ebenfalls capture und release reinzuschreiben. > Sollte die Aussage (andere Antworten auf meine Frage hier im Forum) stimmen, dass die Funktion erst neu nach dem release abgearbeitet wird, so müsste es funktionieren. > LEIDER BLEIBT DAS PROGRAMM DANN EINFACH STEHEN; ALS WÜRDE IRGENDWO ETWAS NICHT FREIGEGEBEN. Scheint also am Aufruf einer einfach geschützten Funktion einer zweiten geschützten zu liegen. (Verstehen kann ich das noch immer nicht) > > MEINE LÖSUNG: > Die ist nun ganz einfach. Die implizite Form funktioniert ja wie oben beschrieben nicht, doch es ist wichtig, dass nicht b und c gleichzeitig a aufrufen und je b und auch c nicht mehrfach abgearbeitet werden. > Die EXPLIZITE Form funktioniert auch in Funktionen, so dass ich einfach a ungeschützt gelassen habe und b und c, wie bei threads, mittels globaler Variable/Flag gegeneinander schütze. Funktioniert gut, da a von keiner weiteren Funktion aufgerufen wird. > > ALTERNATIVEN / VERSTÄNDNIS: > Weshalb es implizit nicht funktioniert, habe ich noch immer nicht verstanden. Ich befürchte, dass ich noch öffter eine solche Situation komme und bin für jeden Tip dankbar. Was mein Verständniss noch erschwehrt, ist, dass doch auch z.B. hwcom functionen implizite geschützt sind. Die müsste man ja dann auch nicht aus einer weiteren geschützten aufrufen können, dass kann doch nicht sein. > > Dank an alle! > Klaus > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB