Fragen zu SPIN

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Fragen zu SPIN

Beitrag 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
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: Fragen zu SPIN

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

Code: Alles auswählen

dira := |< 22 | %11111111
outa := -256
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: Fragen zu SPIN

Beitrag 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
Dateianhänge
HW-DEF.spin
(3.76 KiB) 555-mal heruntergeladen
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: Fragen zu SPIN

Beitrag 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.
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: Fragen zu SPIN

Beitrag von PIC18F2550 »

sorry :oops: 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.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: Fragen zu SPIN

Beitrag 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.
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: Fragen zu SPIN

Beitrag 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. :lol:
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: Fragen zu SPIN

Beitrag 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.
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: Fragen zu SPIN

Beitrag 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.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: Fragen zu SPIN

Beitrag 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.
Antworten