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.
<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.
</EDIT>