-
-
Was mach Ich falsch?
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
-
Erfahrener Benutzer
Fleißiges Mitglied
Währe vieleicht besser wenn du das ganze Prog reinstellst auser bloß einen auszug.
-
Erfahrener Benutzer
Robotik Einstein
sys COMNAV_STATUS
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
-
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
-
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
-
Erfahrener Benutzer
Robotik Einstein
Bits im SYSTEM_STATUS
Hallo Henk,
... verstanden! Danke!
Gruß Dirk
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen