PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was mach Ich falsch?



rnhvw
11.07.2004, 19:18
Hallo Robotiker,

Mein Program: (setzt 3 mahl ACS und liest dann die Register aus)

gosub SUBSYS_PWR_ON 'power on
SYS ACS_LO 'ACS power niedrich
SYS COMNAV_STATUS 'abfragen systemstatus
gosub PrintRegister 'print alle 5 register
SYS ACS_HI 'ACS power hoch
SYS COMNAV_STATUS 'abfragen systemstatus
gosub PrintRegister 'print alle 5 register
SYS ACS_MAX 'ACS power maximal
SYS COMNAV_STATUS 'abfragen systemstatus
gosub MeinPrintRegister 'print alle 5 register
end

Auskunft:
LBYTE=0 HBYTE=4 SUBCMD=4 EXTPORT=12 SYSTEM_STATUS=64
LBYTE=0 HBYTE=4 SUBCMD=4 EXTPORT=10 SYSTEM_STATUS=32
LBYTE=0 HBYTE=4 SUBCMD=4 EXTPORT= 8 SYSTEM_STATUS= 0

1. Der HBYTE soll der MODE wiedergeben. Was heisst hier 4? (Ich erwarte 2, 4 und 0 fur ACS_LO/HI/MAX)

2. Der STATUS soll in LBYTE sein und gelichzeitig ubertragen sein in SYSTEM_STATUS, aber Ich sehe nur Nul in LBYTE (vielleicht gelost?) und was sind die (ubertragene?) 64, 32 und 0 in SYSTEM_STATUS? (Sind dass vielleicht die ACS_LO/HI/MAX?)

Die SYS COMNAV_STATUS ruft vermutlich (SUBCMD=4 / SYS COMNAV) an und lasst 4 zuruck im SUBCMD. Ich verstehe.

Die SYS ACS_LO/HI/MAX nutz vermutlich die EXTPORT port und die 12, 10 und 8 verstehe Ich.

Wer weiss bescheid?

Gruss

Henk

Smi
12.07.2004, 23:10
Währe vieleicht besser wenn du das ganze Prog reinstellst auser bloß einen auszug.

Dirk
13.07.2004, 20:58
Hi Henk,

nach "sys COMNAV_STATUS" soll lt. Doku der Status in LBYTE und der Mode in HBYTE stehen.
-> Mode: Hier steht der "Subsystem Mode"! Bit 2 ist ja bei Deinen Ausgaben gesetzt (=4), also dürftest Du "ACS Interrupt Enable" gewählt haben und "RC5" (da Bit 0 nicht gesetzt).
-> Status: Hier ist LBYTE = 0, weil vom Subsystem dynamisch wieder verwendet! Sein Wert wurde aber in SYSTEM_STATUS abgelegt. Hier sind nur die Bits 0..2 (ACSL_F, ACSR_F, IR_F) dokumentiert. Ich weiß nicht, was in den Bits 6 und 7 passiert, die bei Dir offenbar gesetzt sind, aber das ist ja auch nicht wichtig!
-> EXTPORT: Die Bits deutest Du richtig!

Gruß Dirk

rnhvw
13.07.2004, 23:42
Hallo Dirk,

Ich glaube, da hast Du ganz recht. Jetzt verstehe Ich's.

Wass die bits 6 und 7 (Du meinst wahrscheinlich 5 und 6 (bei 0-7 zahlung) dezimal 32 und 64) angeht im SYSTEM_STATUS, Ich habe herausgefunden dass wenn man ACS_LO/HI/MAX benutzt, dass danach immer im SYSTEM_STATUS die bits 5 und 6 ubereinstimmen mit bit 1 und 2 (bei 0-7 zahlung) im EXTPORT benutzte ACS_HI_F und ACS_LO_F bits.
So in meinem vorgestern gepostete ACS-program nutze Ich immer diesen SYSTEM_STATUS bits 5 und 6 um die actuelle ACS_LO/HI/MAX mode zu detectieren!
Das program lauft ohne geringsten Fehler (so weit Ich entdecken konnte).
Ich weiss, Wissenschaftlich nicht verantwortet, aber es functioniert.

Gruss

Henk

rnhvw
15.07.2004, 22:56
Hallo Dirk,

Nochmal was die ASC_HI und ACS_LO bits betrifft die Ich check im SYSTEM_STATUS (zufallich gefunden) aber nirgend im documentation steht.

Ich hab kein disassembler gefunden aber mich die p5driv.s19 mahl handmassig bisschen disassembliert und fand da bei z.B. ACS_LO (addresse 0x01E9) folgendes.

Annahme memory A4 = EXTPORT
Annahme memory A5 = SYSTEM_STATUS

0x01E9 --- ACS_HI ---
AD 0A BSR (gosub CLR_ACS_BITS)
12 A4 BSET1 (set bit 1 in EXTPORT)
1A A5 BSET5 (set bit 5 in SYSTEM_STATUS) <===!!!
20 D8 (goto SYSTEM)

0x01F1 --- ACS_MAX ---
AD 02 BSR (gosub CLR_ACS_BITS)
20 D4 (goto SYSTEM)

0x01F5 ---CLR_ACS_BITS--- (meine benahmung)
15 A4 BCLR4 (clear bit 2 in EXTPORT)
13 A4 BCLR3 (clear bit 1 in EXTPORT)
1D A5 BCL6 (clear bit 6 in SYSTEM_STATUS) <===!!!
1B A5 BCL5 (clear bit 5 in SYSTEM_STATUS) <===!!!
81 RTS (return)

Du siehst, es wird wirklich im SYSTEM_STATUS die ACS_HI/LO/MAX bits auf bitplatz 5 und 6 notiert!

Gruss

Henk

Dirk
16.07.2004, 17:29
Hallo Henk,

... verstanden! Danke!

Gruß Dirk