loop
mov temp1, #32
mov temp2, ina
mov temp3, #2
M001
mov curx, temp1
cmp temp1, #8 wz
if_z sub temp3, #1
cmp temp1, #16 wz
if_z sub temp3, #1
cmp temp1, #24 wz
if_z sub temp3, #1
add curx, temp3
rcr temp2, #1 wc
if_c call #pri_1
if_nc call #pri_0
djnz temp1, #M001 wz
jmp #loop
twait jmp #twait
pri_0
mov char, #$30
call #M_print
pri_0_ret
ret
pri_1
mov char, #$31
call #M_print
pri_1_ret
ret
' ---------------------------------------------------------------------
' Ausgabe eines Zeichens an der cursor position ohne weiterschaltung
M_print
mov posxy, home
sub posxy, curx
cmp cury, #0 wz ' Überspringen wenn 1.zeile
if_z jmp #M_print_002
mov temp, cury
M_print_001
sub posxy, #50
djnz temp, #M_print_001
M_print_002
wrbyte char, posxy
M_print_ret ret
' ---------------------------------------------------------------------
stat long $7FFC ' Zeiger auf Statusregister
' = h7F7FF7F7 --> start
char long 0
temp long 0
temp1 long $00000001 ' System wartet bis start sequenz kommt
temp2 long $00FFFFFF
temp3 long 0
curx long 0
cury long 2
posxy long 0
home long $1FFF
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
' ======================================================================================
' SUBROUTINEN : Word auf BUS schreiben
' ======================================================================================
CC_BUS_w_W rdword CC_temp1, CC_db2A ' 16Bit Word holen
jmp #CC_BUS_w_W_1
' ======================================================================================
' SUBROUTINEN : COMANDO auf BUS schreiben
' ======================================================================================
CC_BUS_w_C rdlong CC_temp1, CC_db2A ' Commando holen
and CC_temp1, CC_M_17Bit ' 17Bit auswählen
CC_BUS_w_W_1 waitpeq CC_IORQ_QT, CC_IORQ_QT ' warten bis QT == 1
or outa, CC_IORQ_CT ' Steuersignale auf 1
andn outa, #$1FF ' Daten auf 0
or outa, CC_temp1 ' Daten 1 schreiben
or dira, CC_IORQ_DATA ' BUS auf Ausgabe schalten
andn outa, CC_IORQ_WR ' Schreibcommando
waitpeq CC_zero, CC_IORQ_QT ' warten bis QT == 0
or outa, CC_IORQ_WR ' Schreibcommando rücknahme
andn dira, CC_IORQ_DATA ' BUS deaktivieren
andn outa, #$1FF ' Daten auf 0
or outa, CC_IORQ_CT ' Steuersignale auf 1
waitpeq CC_IORQ_QT, CC_IORQ_QT ' warten bis QT == 1
CC_BUS_w_C_ret
CC_BUS_w_W_ret ret
CC_IORQ_CT long %00001011_00000000_00000000_00000000 ' IO-Control
CC_IORQ_DATA long %00001011_00000001_11111111_11111111 ' Datenbus
CC_IORQ_WR long %00001010_00000000_00000000_00000000 '/IORQ /WR
CC_IORQ_RD long %00001001_00000000_00000000_00000000 '/IORQ /RD
CC_IORQ_QT long %00000000_00000010_00000000_00000000 'QT Quittungssignal
CC_zero long %00000000_00000000_00000000_00000000 ' == 0
CC_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
Ich muss gestehen, ich verfolge das nicht bis ins letzte Detail, aber habe ein Auge drauf. Aber ich bin gespannt, was es zum nächsten KC-Treffen zu sehen gibt!
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Erstmal geht es für das Treffen mit der VGA_Karte weiter.
I2C und PCA9555 habe ich schon der Tastaturtreiber wird noch ein Stückchen auf sich warten lassen.
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
Im Moment wird der Befehl dem IO-COG übergeben und bis zu seiner Ausführung gewartet.
Die Änderung besteht darin das der COG die Übernahme der Parameter mit $01 Quittiert.
Das Programm kann jetzt weiterarbeiten und muss nicht mehr warten bis der IO-COG fertig ist.
(hRAM Veränderungen beachten)
Damit Ändert sich der Aufruf in SPIN
1. Testen ob COG frei ist $7FFF == $00 frei / $01 == in Arbeit / >$10 == Befehl (Störung)
2. Wenn $7FFF == $00 schreiben des neuen Befehls in $7FFF
3. Test auf Datenübernahme $7FFF == $01 (wenn nötig)
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
Da ich die im COG befindlichen Routinen einmal vom Sprungverteiler und auch intern anspreche gab es da erst mal Reichlich Änderungen.
Aber damit binn ich erstmal durch als ab an die VGA die wartet schon.
CC_CA_2 jmp #CC_NOP_BEF ' $00 (X) nichts Machen
call #Boot_c ' $01 ( ) Bootimage laden von EEPROM/SRAM/BUS/....
call #DMA_c ' $02 ( ) DMA-Transfer EEPROM/SRAM/BUS... <--> EEPROM/SRAM/BUS...
call #CC_I2C_T100 ' $03 (X) I²C Clock 100kHz initalisieren
call #CC_I2C_T400 ' $04 (X) I²C Clock 400kHz initalisieren
call #CC_I2C_sta ' $05 (X) I²C Startsequenz
call #CC_I2C_sto ' $06 (X) I²C Stopsequenz
call #CC_I2C_rb_ak ' $07 (X) I²C Eine Byte lesem
call #CC_I2C_rb_nak ' $08 (X) I²C Eine Byte lesem
call #CC_I2C_wb ' $09 (X) I²C Eine Byte senden
call #CC_I2C_rs ' $0A ( ) I²C Einen String lesem
call #CC_I2C_ws ' $0B ( ) I²C Einen String senden
call #CC_I2C_ledrg_00_c ' $0C (X) I²C LED R/G off
call #CC_I2C_ledrg_0x_c ' $0D (X) I²C LED R/_ off
call #CC_I2C_ledrg_x0_c ' $0E (X) I²C LED _/G off
call #CC_I2C_ledrg_11_c ' $0F (X) I²C LED R/G on
call #CC_I2C_ledrg_1x_c ' $10 (X) I²C LED R/_ on
call #CC_I2C_ledrg_x1_c ' $11 (X) I²C LED _/G on
call #CC_I2C_PCA_rd ' $12 (X) I²C Config lesen
call #CC_BUS_w_D ' $13 (X) DATEN auf BUS schreiben
call #CC_BUS_w_C ' $14 (X) COMANDO auf BUS schreiben
call #CC_BUS_r_W ' $15 ( ) Word vom BUS lesen
call #CC_BUS_r_C ' $16 ( ) COMANDO vom BUS lesen
call #CC_SRAM_r_B ' $17 ( ) Byte aus SRAM lesen
call #CC_SRAM_w_B ' $18 ( ) Byte in SRAM schreiben
call #CC_SRAM_r_W ' $19 (X) Word aus SRAM lesen
call #CC_SRAM_w_W ' $1A (X) Word in SRAM schreiben
call #CC_SRAM_r_L ' $1B (X) Long aus SRAM lesen
call #CC_SRAM_w_L ' $1C ( ) Long in SRAM schreiben
call #CC_SRAM_r_S ' $1D ( ) String aus SRAM lesen
call #CC_SRAM_w_S ' $1E ( ) String in SRAM schreiben
jmp #CC_ERROR_1 ' $1F (X) Commandofehler
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
Im Moment hängen alle Propeller am Rückwandbus gemeinsam an Reset.
Bespiele ich einen Propeller neu löst es bei allen ein Reset aus das ist bei der Entwicklung der Software doof.
Um das Problem zu umgehen werde ich beim neuen Rückwandbus die Resetleitung mit einer Brücke an den Propplug und Steckverbinder verbinden.
Wenn der Jumper gesteckt ist kann kein Propplug gesteckt werden.
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
Der Transfair zur VGA scheint zu gehen nur wird jedes Commando/Daten 2x ausgeführt.
Die Quelle habe ich noch nicht ausmachen können da dieses Fehlerbild bei den anderen Commandos/Daten keine erkennbaren zustände erreicht.
Ich werde heute Abend mal die einzelnen Schritte neu erstellen mal sehen ob da ein Fehler drin steckt.
Aber erst mal wird der Resetbus aufgetrennt damit ich mit SimpleIDE und BST vernünftig arbeiten kann.
<<Der sprungverteiler ist es erstmal nicht. so muss ich mich auf das Busprotokoll konzentrieren >>
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