simple_multicore_demo2.spin
Verfasst: Fr 21. Okt 2011, 20:44
Hallo,
ich habe mich mit dem "simple_multicore_demo2.spin" von Parallax angeschaut und binn dabei auf ein kleines Problem gestoßen.
wenn beide COG's syncronlaufen(aufgrund der gleichen Taktversorgung) besteht die Gefahr das beide in flag schreiben!
besser hier solte mit der Cogid gearbeitet werden
noch nicht getestet so sollte es aber aufgebaut werden.
ich habe mich mit dem "simple_multicore_demo2.spin" von Parallax angeschaut und binn dabei auf ein kleines Problem gestoßen.
Code: Alles auswählen
VAR 'Globally accessible variables
long flag <------ verwendet wird long
PUB Go 'First public method in the .spin file starts execution, runs in cog 0
flag := true <-----gesetzt wird aber nur True/False
PUB Parallel_Routine_1 | counter 'Starts the next available cog
repeat while flag
repeat 10
flag := true ''<-- FRAGE WELCHER COG HAT JETZT TRUE
besser hier solte mit der Cogid gearbeitet werden
Code: Alles auswählen
PUB Go 'First public method in the .spin file starts execution, runs in cog 0
flag := $FFFF <---- kein COG gesetzt
PUB Parallel_Routine_1 | counter 'Starts the next available cog
**** Programm ****
:Test
repeat while !flag=cogid <-- hatt Cog freigabe?
if flag==$FFFF <-- nein flag frei ? nein zurück zum Test
flag := cogid <-- ja wenn frei dann setzen
repeat 10 <-- warten und zurück zum Test
**** Programm ****
flag := $FFFF <-- wieder freigeben
**** Programm ****