Seite 1 von 1

simple_multicore_demo2.spin

Verfasst: Fr 21. Okt 2011, 20:44
von PIC18F2550
Hallo,

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
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

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 ****
noch nicht getestet so sollte es aber aufgebaut werden.
simple_multicore_demo2.spin

Re: simple_multicore_demo2.spin

Verfasst: Sa 22. Okt 2011, 12:34
von drohne235
Setz mal die Codefragmente in die Code-Tags, dann bleibt die Formatierung erhalten. Die Code-Tags findest du in der oberen Zeile im Forum-Editor. Mit Vorschau kannst du dann schauen wie das dann aussieht, im Bereich /dev/null im Forum kannst du ja mal testen.

Kannst du mal das Demo von Parallax packen und anhängen?

---

Edit: Ich finde dieses Framework für den Einstieg nicht geeignet. Im Blog habe ich mal einige passende Tutorials zusammengefasst.