Seite 1 von 1

synchronisation von mehreren COGs

Verfasst: So 20. Mär 2016, 23:03
von PIC18F2550
Hallo,

Wie synchronisiere ich mit PASM 4 COGs.

Ideal wäre wenn alle Flankengleich laufen würden.
Ich glaube aber das das nicht möglich ist.

Also suche ich nach einer Variante wo der Versatz bekannt ist.

Mir fällt nur eine externe Methode mit waitpeq ein.
Ich glaub das auch einige VGA-Treiber so was benutzen nur aber wie?

Es werden nur Daten eingelesen und keine Ausgegeben.

Re: synchronisation von mehreren COGs

Verfasst: Mo 21. Mär 2016, 06:14
von yeti
Theoretisch müsste CNT zum Synchronisieren reichen.

...aber z.B. Hub-Zugriffe haben variable Längen und das ist Teufelszeuch fürs Cog-Synchronschwimmen...

Der Thread "Propeller DEMO: SYNCing multiple COGs together...and...SYNCing multiple Propell###!!!Titel-zu-lang-Mööööp!!!###" macht sich darüber Gedanken...

Re: synchronisation von mehreren COGs

Verfasst: Mo 21. Mär 2016, 09:34
von PIC18F2550
Danke yeti,

An das CNT habe ich erst mal nicht gedacht.
Das werde ich nächstes Wochenende mal Testen.

Auf dem ersten Blick sieht es aber gut aus.

Re: synchronisation von mehreren COGs

Verfasst: Mo 21. Mär 2016, 10:13
von yeti
PIC18F2550 hat geschrieben:An das CNT habe ich erst mal nicht gedacht.
Das werde ich nächstes Wochenende mal Testen.
...und dann erfahren wir auch, woran Du in Deiner Häxxerküche köchelst?

Ich sterb doch jetzt schon fast ganz nah an bald mal kurz vor Neugier...

Re: synchronisation von mehreren COGs

Verfasst: Mo 21. Mär 2016, 13:38
von PIC18F2550
4x 8.42 Meg Baud als 4Bit Parallelbus. :SCHRAUBEN

<EDIT>
Die Variante mit mehreren Cogs ist gerade in den Eimer gerutscht.
Das Testmodul für den HIVE kann ca 32Mb mit nur einem COG auf dem Bus schaufeln.

Code: Alles auswählen

DAT
              org 0
RXPropeller
              rdlong    tempRx, DataIndexRx     wz
        if_z  jmp       #RXPropeller

SYNC_Start    waitpeq   $0001, $0001            'Wait for SYNC - HIGH
              waitpne   $0001, $0001            'Wait for SYNC - LOW

              mov       tempRx, ina        '  4
              and       tempRx, #$0FF      '  8
              mov       BuffRx, #0         ' 12
              or        BuffRx, tempRx     ' 16
              mov       tempRx, ina        ' 20
              and       tempRx, #$0FF      ' 24
              shl       BuffRx, #8         ' 28
              or        BuffRx, tempRx     ' 32
              mov       tempRx, ina        ' 36
              and       tempRx, #$0FF      ' 40
              shl       BuffRx, #8         ' 44
              or        BuffRx, tempRx     ' 48
              mov       tempRx, ina        ' 52
              and       tempRx, #$0FF      ' 56
              shl       BuffRx, #8         ' 60
              or        BuffRx, tempRx     ' 64

              wrlong    BuffRx, DataIndexRx'Write Data Value to Indexed location

              mov       tempRx, #0         'Clear the Ready Flag
              wrlong    tempRx, DataIndexRx

              jmp       #RXPropeller

'initialized variables

'uninitialized variables
DataIndexRx   long      0
BuffRx        long      0

'aliased variables
tempRx
              fit
Irgend wie fehlt noch der Quittungsimpuls. :shock:
</EDIT>