-         
+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Was mach Ich falsch?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.05.2004
    Beiträge
    41

    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

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2004
    Ort
    HDN
    Alter
    35
    Beiträge
    102
    Währe vieleicht besser wenn du das ganze Prog reinstellst auser bloß einen auszug.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.788

    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

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    19.05.2004
    Beiträge
    41
    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

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    19.05.2004
    Beiträge
    41
    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

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.788

    Bits im SYSTEM_STATUS

    Hallo Henk,

    ... verstanden! Danke!

    Gruß Dirk

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •