Seite 1 von 2
Fragen zu SPIN
Verfasst: Sa 5. Okt 2013, 23:24
von PIC18F2550
Hi,
Ich hätte eine Frage zu dem outa[..] Befehl.
Ich habe volgende schreibweisen gefunden
out[10]:=%0 --> P10 auf 0 Setzen
out[10..8]:=%101 ---> P10 & P8 auf 1 und P9 auf 0 Setzen
Bis hier her ist alles Klar
Aber gibt es auch sowas?
out[22,7..0]:=%1_00000000 --> P22 auf 1 P7-P0 auf 0 Setzen
Re: Fragen zu SPIN
Verfasst: So 6. Okt 2013, 03:55
von kuroneko
PIC18F2550 hat geschrieben:Aber gibt es auch sowas?
out[22,7..0]:=%1_00000000 --> P22 auf 1 P7-P0 auf 0 Setzen
Nein. Wie sieht's hiermit aus?
Re: Fragen zu SPIN
Verfasst: So 6. Okt 2013, 11:12
von PIC18F2550
Hi kuroneko,
wackelt das nicht an den restlichen Pins?
z.Z. löse ich das noch so da der HIVE nur einen 8Bit Bus hatt (missbrauch der Taktleitung als 9. Bit)
Code: Alles auswählen
PUB putchar_adm(c) 'bus: byte an Administra senden
if c>255
outa[HW#DC]:=1
outa[HW#BUS_WR]:= 0 '/WR
outa[HW#DB]:= c &$FF 'daten --> dbus
dira[HW#DB]:= HW#DB 'Datenbus auf Ausgabe schalten
outa[HW#REG_ADM_CS]:= 0 '/CS
waitpeq(HW#BUS_HS,0,0) 'hs=0?
waitpeq(HW#BUS_HS,HW#BUS_HS,0) 'hs=1?
outa[HW#REG_ADM_CS]:= 1 '/CS
outa[HW#BUS_WR]:= 1 ' WR
dira[HW#DB]:= 0 'Datenbus auf Eingabe schalten
outa[HW#DC]:= 0
in PASM geht das mit 2 Befehlen ungefähr so:
...
andn outa, $FF
or outa, DC
...
DC long 22
Re: Fragen zu SPIN
Verfasst: So 6. Okt 2013, 12:26
von kuroneko
PIC18F2550 hat geschrieben:wackelt das nicht an den restlichen Pins?
Nur wenn noch andere Bits auf
Ausgang geschaltet sind (war nicht ganz so offensichtlich). Sonst ist es vollkommen egal was Du nach
outa schiebst.
Re: Fragen zu SPIN
Verfasst: So 6. Okt 2013, 12:39
von PIC18F2550
sorry

mein Ausdruck muss ich dringend Verbessern.
Ich versuche immer davon auszugehen das der Prop ja mehrere prozesse gleichzeitig macht.
Hatt mich auch eine Menge Lehrgeld gekostet wenn jedesmal ein anderer Prozess in sie Suppe gespuckt hatt.
Re: Fragen zu SPIN
Verfasst: So 6. Okt 2013, 14:21
von kuroneko
PIC18F2550 hat geschrieben:Ich versuche immer davon auszugehen das der Prop ja mehrere prozesse gleichzeitig macht.
Was in einem anderen cog passiert ist nicht relevant solange zwei oder mehrere cogs nicht die gleichen Pins ansteuern. Zum Beispiel, wenn cog 4 nur Pins 0 und 17 ansteuert (als einziger cog) dann wird
dira im cog 4 auf
(|< 17 | |< 0) gesetzt. Danach kannst Du beide Pins z.B. mit $00020001 auf 1 setzen oder aber auch mit -1.
Re: Fragen zu SPIN
Verfasst: So 6. Okt 2013, 14:41
von PIC18F2550
Ich glaub mal was gelesen zu haben das die logische verknüpfung(oder) der Ausgänge durch die Reihenfolge der einzelnen COG-I/O's das Ergebnis an den Pinns bestimmt.
Propeller Manual v1.1 Page 27 (Note unter Tabelle 1-4) ich hoffe ich hab das da richtig verstanden.
Kann das die ursache sein das andere Systeme versuchen die zuordnung der COG's zur Software selber zu bestimmen?
Mein Problem besteht aber nur in der tatsache das das 9 Bit nicht an das 8. Bit anreiht und sich dazwischen noch weitere outputpins befinden.
So jetzt schnell zu Mutti und Kaffe trinken dort warten schon alle auf mich.

Re: Fragen zu SPIN
Verfasst: So 6. Okt 2013, 14:56
von kuroneko
PIC18F2550 hat geschrieben:Ich glaub mal was gelesen zu haben das die logische verknüpfung(oder) der Ausgänge durch die Reihenfolge der einzelnen COG-I/O's das Ergebnis an den Pinns bestimmt.
Stimmt (wired-OR). Daher meine Einschraenkung bezueglich gleicher Pins von verschiedenen cogs.
PIC18F2550 hat geschrieben:Kann das die ursache sein das andere Systeme versuchen die zuordnung der COG's zur Software selber zu bestimmen?
???
PIC18F2550 hat geschrieben:Mein Problem besteht aber nur in der tatsache das das 9 Bit nicht an das 8. Bit anreiht und sich dazwischen noch weitere outputpins befinden.
Dumm gelaufen, dann musst Du alles von Hand machen. Aber man kann auch die Counter fuer derartige Dinge verwenden. In Deinem Fall glaub ich aber, dass
normales Zusammenstueckeln einfacher ist.
Re: Fragen zu SPIN
Verfasst: So 6. Okt 2013, 21:17
von PIC18F2550
So diese 2 Zeilen sollten das Proplem Lösen
Code: Alles auswählen
PUB putchar_adm(c)| d 'bus: byte an Administra senden
' ANPASSUNG AN HIVE HARTWARE +++++++++++++++++++++++++++++++++++++++++++++++++++++
outa[HW#DC] := ((c & %1_00000000) << HW#DC - 9)
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
outa[HW#BUS_WR]:= 0 '/WR
outa[HW#DB]:= c & $FF 'daten --> dbus
dira[HW#DB]:= HW#DB 'Datenbus auf Ausgabe schalten
outa[HW#REG_ADM_CS]:= 0 '/CS
waitpeq(HW#BUS_HS,0,0) 'hs=0?
waitpeq(HW#BUS_HS,HW#BUS_HS,0) 'hs=1?
outa[HW#REG_ADM_CS]:= 1 '/CS
outa[HW#BUS_WR]:= 1 ' WR
dira[HW#DB]:= 0 'Datenbus auf Eingabe schalten
outa[HW#DC]:= 0
PUB getchar_adm: wert 'bus: byte vom Administra empfangen
outa[HW#REG_ADM_CS]:= 0 '/CS
waitpeq(HW#BUS_HS,0,0) 'hs=0?
wert := ina[HW#DB] 'daten einlesen
outa[HW#REG_ADM_CS]:= 1 '/CS
waitpeq(HW#BUS_HS,HW#BUS_HS,0) 'hs=1?
' ANPASSUNG AN HIVE HARTWARE +++++++++++++++++++++++++++++++++++++++++++++++++++++
wert := (wert & $FF) + ((wert >> HW#DC - 9) & %1_00000000)
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Vieleicht lässt sich drohne235 überzeugen in einer neuen revision auf einem 9 Bit Bus zu setzen.
Da er die Parrameter und Commandos sowieso auslagert dürfte das kein Problem mehr sein.
Re: Fragen zu SPIN
Verfasst: Mo 7. Okt 2013, 00:43
von kuroneko
PIC18F2550 hat geschrieben:So diese 2 Zeilen sollten das Proplem Lösen
Denk nochmal in Ruhe darueber nach, besonders ueber das
spr[a..b] Format. Nebenbei, << ist staerker als +, davon abgesehen, ich glaube Du meinst
outa[HW#DC] := c >> 8.