Propeller in 19"
Re: Propeller in 19"
offenbar bastelst Du an einem interessanten Projekt.
Ich bedauer es oft, dass wir von unseren Gedankengängen strukturell so verschieden sind - ich bin nicht in der Lage, aus deinen Postings ein klares Bild zusammen zu bekommen. Das ist wirklich schade
Trotzdem wünsch ich viel Spass weiterhin mit dem basteln und tüfteln...
Ich bedauer es oft, dass wir von unseren Gedankengängen strukturell so verschieden sind - ich bin nicht in der Lage, aus deinen Postings ein klares Bild zusammen zu bekommen. Das ist wirklich schade
Trotzdem wünsch ich viel Spass weiterhin mit dem basteln und tüfteln...
Also vonder Sache här tätch jetz ma behaupten "Mischn ägomplischd" un so...
- PIC18F2550
- Beiträge: 2832
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller in 19"
Ist doch kein Problem.
Der eine Baut etwas nach und Berichtet.
Der ander Baut auf bewerte Technik und stellt daraus was neues zusammen und berichtet.
Und wieder andere versuchen was vollkommen neues zu finden.
Bei diesen ist so. Ein Beitrag, ist wie die Spur zur Lösung mit allen Ecken und Kanten und das das ist nicht immer leicht zu Verstehen ist ist mir schon klaar.
Neue Erkenntnisse ersetzen alte Festlegungen oder Sie gehen gleich über Bord.
Bei den ersten Beiden wegen ist alles immer klar und deutlich da es kaum Umwege gibt.
Bei dem letzteren ist das wie Krautsalat da darf mann nicht versuchen was ganzes daraus Abzuleiten.
Auf Grund der vielen Unstimmigkeiten wird das Ergebnis immer niederschmetternd sein.
Viel mehr sollte mann sich daraus nur ein Stückchen entnehmen und dieses Betrachten und Bewerten.
Da sich so ein Projekt meist erstmals nur aus Bruchstücken bildet.
So wie diese SRAM Ansteuerung.
In diesen Treiber kommen auch noch die Busroutinen und die Abfrage des PCA9555D über I2C hinein.
Der Vorteil ist das der Speicher (hRAM) für das Programm freigehalten wird.
Der eine Baut etwas nach und Berichtet.
Der ander Baut auf bewerte Technik und stellt daraus was neues zusammen und berichtet.
Und wieder andere versuchen was vollkommen neues zu finden.
Bei diesen ist so. Ein Beitrag, ist wie die Spur zur Lösung mit allen Ecken und Kanten und das das ist nicht immer leicht zu Verstehen ist ist mir schon klaar.
Neue Erkenntnisse ersetzen alte Festlegungen oder Sie gehen gleich über Bord.
Bei den ersten Beiden wegen ist alles immer klar und deutlich da es kaum Umwege gibt.
Bei dem letzteren ist das wie Krautsalat da darf mann nicht versuchen was ganzes daraus Abzuleiten.
Auf Grund der vielen Unstimmigkeiten wird das Ergebnis immer niederschmetternd sein.
Viel mehr sollte mann sich daraus nur ein Stückchen entnehmen und dieses Betrachten und Bewerten.
Da sich so ein Projekt meist erstmals nur aus Bruchstücken bildet.
So wie diese SRAM Ansteuerung.
Code: Alles auswählen
<EDIT>delete</EDIT>
Der Vorteil ist das der Speicher (hRAM) für das Programm freigehalten wird.
Zuletzt geändert von PIC18F2550 am So 6. Jul 2014, 11:17, insgesamt 1-mal geändert.
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
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
- PIC18F2550
- Beiträge: 2832
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller in 19"
Das soll der Treiber mal alles können
(.) Quellcod fehlt noch
(A) Quellcod eingefügt aber noch nicht getestet
(X) Quellcode getestet IO
Code: Alles auswählen
PUB start_io:a
a:=cognew(@sram, 0)+1
DAT
' ======================================================================================
' ROUTINE : Initalisierung
' ======================================================================================
sram
cogid cogidm
add cogidm, #$1
wrlong cogidm, statusA ' Commando löschen
' ======================================================================================
' ROUTINE : Commandoauswertung
' ======================================================================================
TLOOP nop ' Hier wird der Call des Sprungverteilers eingetragen.
andn dira, SRAM_io ' BUS auf Eingabe schalten
rdlong command, statusA
shr command, #$3 ' command byte[2..0] 'vom COG belegt
and command, #$1F
add command, #SPRV
movs JUMPMOD, command
nop 'nop für pipeline
JUMPMOD mov TLOOP, TLOOP
jmp #TLOOP
SPRV call #dcall ' $00 (X) COGIDM 1..7 IO nichts Machen
call #dcall ' $08 (X) COGIDM 8 IO nichts Machen
call #BUS_read_W ' $10 (.) word vom BUS lesen
call #BUS_write_w ' $18 (.) word auf BUS schreiben
call #BUS_write_c ' $20 (.) COMANDO auf BUS schreiben
call #SRAM_read_B ' $28 (.) Byte aus SRAM lesen
call #SRAM_read_W ' $30 (X) Word aus SRAM lesen
call #SRAM_read_S ' $38 (.) String aus SRAM lesen (immer im Wordformat)
call #SRAM_write_B ' $40 (.) Byte in SRAM schreiben
call #SRAM_write_W ' $48 (X) Word in SRAM schreiben
call #SRAM_write_S ' $50 (.) String in SRAM schreiben (immer im Wordformat)
call #I2C_read_c ' $58 (.) I²C Config lesen
call #I2C_ledrg_00_c ' $60 (X) I²C LED R/G off
call #I2C_ledrg_0x_c ' $68 (X) I²C LED R/_ off
call #I2C_ledrg_x0_c ' $70 (X) I²C LED _/G off
call #I2C_ledrg_11_c ' $78 (X) I²C LED R/G on
call #I2C_ledrg_1x_c ' $80 (X) I²C LED R/_ on
call #I2C_ledrg_x1_c ' $88 (X) I²C LED _/G on
call #dcall_1 ' $90 (.) Commandofehler
call #dcall_1 ' $98 (.) Commandofehler
call #dcall_1 ' $A0 (.) Commandofehler
call #dcall_1 ' $A8 (.) Commandofehler
call #dcall_1 ' $B0 (.) Commandofehler
call #dcall_1 ' $B8 (.) Commandofehler
call #dcall_1 ' $C0 (.) Commandofehler
call #dcall_1 ' $C8 (.) Commandofehler
call #dcall_1 ' $D0 (.) Commandofehler
call #dcall_1 ' $D8 (.) Commandofehler
call #dcall_1 ' $E0 (.) Commandofehler
call #dcall_1 ' $E8 (.) Commandofehler
call #dcall_1 ' $F0 (.) Commandofehler
call #dcall_1 ' $F8 (.) Commandofehler
' ======================================================================================
' Initialized data
' ======================================================================================
bootA long $7FFC '
statusA long $7FF8 ' Statuszelle IO-Controll
db1A long $7FF4 ' Adresse (Zeiger)
db2A long $7FF0 ' Daten (Byte, Word und Long)
status long 1
command long 1
cogidm long 1
' ======================================================================================
' Uninitialized data (Variabeln)
' ======================================================================================
temp1 long 1
temp2 long 1
' ======================================================================================
' dummy CALL
' ======================================================================================
' Commando IO nichts löschen
dCall
dCall_ret ret
' ======================================================================================
' dummy CALL
' ======================================================================================
' Commandofehler nichts löschen LED Meldung
dCall_1
dCall_1_ret ret
(A) Quellcod eingefügt aber noch nicht getestet
(X) Quellcode getestet IO
Zuletzt geändert von PIC18F2550 am Do 17. Jul 2014, 14:21, insgesamt 2-mal geändert.
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
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
- PIC18F2550
- Beiträge: 2832
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller in 19"
Mit dem PASM Teil geht es irgend wie nicht vorwäts.
Da werd ich wohl oder übel auf die VGA warten müssen.
Mit dem PST.spin das zu suchen gestaltet sich schwierig da PASM wesendlich schneller ist.
Das ist meine Testroutine für den SRAM.Naja die Geschwindigkeit ist nicht gerade zum Abheben.
Wenn ich mich nicht verrechnet habe so braucht er ungefähr 2s für 32k ---------------------------------------------------------------------------------------------
Das ist der Code vom SRAM- Schreiben in PASM wie gesagt der klemmt irgend wie.
Da werd ich wohl oder übel auf die VGA warten müssen.
Mit dem PST.spin das zu suchen gestaltet sich schwierig da PASM wesendlich schneller ist.
Das ist meine Testroutine für den SRAM.
Code: Alles auswählen
CON
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
OBJ
pst : "PST"
pub main|adr,sadr,a,mee,zei
pst.start(115200)
sram_ini(0)
pst.Clear(0)
pst.Position(0,0)
pst.Str(@T000)
pst.Position(0,1)
sadr:=$0
adr:=sadr
mee:=$200000 ' 4Mb oder 2M Worde
zei:=0
repeat mee
sram_write(adr,adr)
adr++
sram_write($222, $6666) ' <----- Test Fehler
adr:=sadr
repeat mee
pst.hex(adr,8)
pst.Str(@T003)
a:=sram_read(adr)
pst.hex(a,8)
if a == adr & $0000FFFF
pst.PositionX(0)
else
zei++
pst.char(13)
if zei==16
repeat
adr++
repeat 1000
pri sram_ini(a)
outa[23..22]:=%00 ' ADRH, ADRL
outa[27..24]:=%1111 ' /IORQ, /MREQ, /WR, /RD
pri sram_write(adr,data)
dira[27..0 ]:=%1111_11000000_11111111_11111111
outa[15..0 ]:=adr
outa[23..22]:=%01 ' ADRL strobe
outa[23..22]:=%00 ' ADRL
outa[15..0]:=adr>>16
outa[23..22]:=%10 ' ADRH strobe
outa[23..22]:=%00 ' ADRH
outa[15..0 ]:=data
outa[27..24]:=%1001 ' /IORQ, /MREQ, /WR, /RD
outa[27..24]:=%1111 ' /IORQ, /MREQ, /WR, /RD
dira[27..0 ]:=%0000_00000000_00000000_00000000
pri sram_read(adr):data
dira[27..0 ]:=%1111_11000000_11111111_11111111
outa[15..0 ]:=adr
outa[23..22]:=%01 ' ADRL strobe
outa[23..22]:=%00 ' ADRL
outa[15..0]:=adr>>16
outa[23..22]:=%10 ' ADRH strobe
outa[23..22]:=%00 ' ADRH
dira[15..0 ]:=%00000000_00000000
outa[27..24]:=%1010 ' /IORQ, /MREQ, /WR, /RD
data:=ina[15..0 ]
outa[27..24]:=%1111 ' /IORQ, /MREQ, /WR, /RD
dira[27..0 ]:=%0000_00000000_00000000_00000000
DAT
T000 byte "HALLO PIC18F2550",0
T003 byte " ",0
Wenn ich mich nicht verrechnet habe so braucht er ungefähr 2s für 32k ---------------------------------------------------------------------------------------------
Das ist der Code vom SRAM- Schreiben in PASM wie gesagt der klemmt irgend wie.
Code: Alles auswählen
' ======================================================================================
' SUBROUTINEN : Word in SRAM schreiben
' ======================================================================================
' SPIN write db1 Adresse
' SPIN write db2 Daten bit 15..0
' SPIN write command := $5
' SPIN read command == $0 wenn Daten geschrieben sonnst immer noch $5
' --------------------------------------------------------------------------------------
' PASM read command == $5 Daten & Adresse holen
' PASM write command := $0 wenn Daten geschrieben
' --------------------------------------------------------------------------------------
SRAM_write_W call #SRAM_adr
rdlong temp1, db2A ' 16Bit Word holen
and temp1, M_16Bit ' 16Bit auswählen
andn outa, M_16Bit ' BUS auf $0000 setzen
or outa, temp1 ' einzen setzen
andn outa, MREQ_WR ' auf 0 setzen aktiv
nop ' 50ns sind zu wehnig
or outa, MREQ_WR ' auf 1 setzen inaktiv
andn outa, M_16Bit ' BUS auf $0000 setzen
wrlong cogidm, statusA ' Commando löschen
andn dira, SRAM_io ' BUS auf Eingabe schalten
SRAM_write_W_ret ret
' ======================================================================================
' SUBROUTINEN : Setzt die 24Bit Adresse immer im Wordformat
' ======================================================================================
SRAM_adr or dira, SRAM_io ' BUS auf Ausgabe schalten
rdlong temp1, db1A ' 24Bit adresse holen
' shr temp1, #1 ' Bit's um 1 stellen nach unten
' Verschieben SRAM word-format
and temp1, M_16Bit ' Low-Teil auswählen
andn outa, M_16Bit ' BUS auf $0000 setzen
or outa, temp1 ' Einzen setzen
or outa, ADRL_strobe ' auf 1 setzen aktiv
nop
andn outa, ADRL_strobe ' auf 0 setzen inaktiv
rdlong temp1, db1A ' 24Bit adresse holen
shr temp1, #16 ' Bit's um 16 stellen nach unten Verschieben
andn outa, M_16Bit ' BUS auf $0000 setzen
or outa, temp1 ' einzen setzen
or outa, ADRH_strobe ' auf 1 setzen aktiv
nop
andn outa, ADRH_strobe ' auf 0 setzen inaktiv
SRAM_adr_ret ret
' ======================================================================================
' Initialized data
' ======================================================================================
bootA long $7FFC '
statusA long $7FF8 ' Statuszelle IO-Controll
db1A long $7FF4 ' Adresse (Zeiger)
db2A long $7FF0 ' Daten (Byte, Word und Long)
status long 1
command long 1
cogidm long 1
' **************************************************************************************
' SRAM Interface
' **************************************************************************************
ADRL_strobe long %00000000_01000000_00000000_00000000
ADRH_strobe long %00000000_10000000_00000000_00000000
MREQ_WR long %00000110_00000000_00000000_00000000 '/MREQ /WR
MREQ_RD long %00000101_00000000_00000000_00000000 '/MREQ /RD
SRAM_io long %00000111_00000000_11111111_11111111
BUS_D_io long %00001011_00000000_11111111_11111111
BUS_C_io long %00001011_00000001_11111111_11111111
M_16Bit long $0000FFFF
M_17Bit long $0001FFFF
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
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
Re: Propeller in 19"
Das getestet nehm' ich Dir nicht ab.PIC18F2550 hat geschrieben:(.) Quellcod fehlt nochCode: Alles auswählen
SPRV call #dcall ' $00 (X) COGIDM 1..7 IO nichts Machen call #dcall ' $08 (X) COGIDM 8 IO nichts Machen ' ====================================================================================== ' dummy CALL ' ====================================================================================== ' Commando IO nichts löschen dCall dCall_ret ret ' ======================================================================================
(A) Quellcod eingefügt aber noch nicht getestet
(X) Quellcode getestet IO
- PIC18F2550
- Beiträge: 2832
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller in 19"
in welchem zusammenhang ? läuft er nicht über das Ret?kuroneko hat geschrieben:Das getestet nehm' ich Dir nicht ab.
Habe bei mir gerade die zwei CALLs durch NOPs ersetzt Die wahren eh nur zu Testzwecke vorhanden.
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
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
Re: Propeller in 19"
call modifiziert ret, da Dein Unterprogramm aber leer ist folgt ret direkt auf call. Selbstmodifizierender Code braucht aber mindestens einen Befehl dazwischen ...
- PIC18F2550
- Beiträge: 2832
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller in 19"
Wieder was dazu gelernt
Das könnte das nicht funktionieren schon etwas erklähren.
Habe erstmal bei den Leeren CALLs ein NOP eingebaut.
Das könnte das nicht funktionieren schon etwas erklähren.
Habe erstmal bei den Leeren CALLs ein NOP eingebaut.
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
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
- PIC18F2550
- Beiträge: 2832
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller in 19"
Der Fehler warum der PASM-Teil nicht funktionierte war meine schussligkeit.
In der Konstante SRAM_io fehlten die Pinns für die beiden Adresslatches.
Das ist der ganze SPIN-Block um in den SRAM zu schreibenSpäter wird daraus So jetzt geht es erstmal mit dem lesen weiter.
Schließlich will ich ja den SPIN-Teil vom IO-Interface Abkoppeln.
for maximum speet
Schreibtest 15sec for 512kx16Bit ~1Mbit
In der Konstante SRAM_io fehlten die Pinns für die beiden Adresslatches.
Code: Alles auswählen
SRAM_io long %00000111_11000000_11111111_11111111
Code: Alles auswählen
io.start_io(0)
repeat 10000 ' warten bis das der IO-COG gestartet ist
adr:=0
repeat 16
long[$7FF4]:=adr
long[$7FF0]:=data
long[$7FF8]:=$48
adr++
Code: Alles auswählen
repeat while io.start_io(0) > 0 ' warten bis das der IO-COG gestartet ist
' (irgendwo habe ich schonmal so was gesehen weis nicht ob das so funktioniert)
adr:=0
repeat 16
SRAM_write(comando,adresse,data)
adr++
Schließlich will ich ja den SPIN-Teil vom IO-Interface Abkoppeln.
for maximum speet
Schreibtest 15sec for 512kx16Bit ~1Mbit
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
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
- PIC18F2550
- Beiträge: 2832
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller in 19"
So die sache mit dem SPIN und dem SRAM (16Bit) hatt sich erledigt
Dieser Teil vom PASM geht schonmal.
Jetzt muss ich mich erstmal um die Busroutinen kümmern.
Dieser Teil vom PASM geht schonmal.
Code: Alles auswählen
' ein Word auf dem SRAM schreiben
long[$7FF4]:=adr
long[$7FF0]:=data_w
long[$7FF8]:=$38
' ein Word vom SRAM lesen
long[$7FF4]:=adr
long[$7FF8]:=$30
data_w:=long[$7FF0]
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
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