Hi Sheff,
ich hab mal ein Programm geschrieben (bin ja auch schon ne Weile weg vom RP5), in dem man *meiner Meinung nach* ganz gut erkennen kann, wie die einzelnen Befehle arbeiten.
Code:
'nötige Definitonen am Anfang, können direkt übernommen werden:
'--------------------------
'------ I/O PORTS ---------
'--------------------------
'- INTERFACE LCD/EXTPORT --
Define Sdio Port[1]
Define Sclio Port[3]
Define Strobe Port[4]
'-- INTERFACE COM/NAV -----
Define Dataline Port[1]
Define Clockline Port[2]
'---- FREIE PORTS ---------
'hier gegebenenfalls andere Namen für die einzelnen Ports verwenden
Define Freip7 Port[7]
Define Freip8 Port[8]
Define Freip9 Port[9]
Define Freip10 Port[10]
Define Freip11 Port[11]
Define Freip12 Port[12]
Define Freip13 Port[13]
Define Freip14 Port[14]
Define Freip15 Port[15]
Define Freip16 Port[16]
'--------------------------
'------ SENSORS ---------
'--------------------------
Define Freiad8 Ad[8] 'freier A/D-Wandler
Define Light_l Ad[7]
Define Light_r Ad[6]
Define Sys_volts Ad[3]
Define Chrg_current Ad[2]
Define Sys_current Ad[1]
Define Mic Ad[4]
Define Touch Ad[5]
'---------------------------
'------ DRIVE -------------
'---------------------------
Define Speed_l Da[1]
Define Speed_r Da[2]
Define Rev_l Port[6]
Define Rev_r Port[5]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
'--- INTERFACE BUFFER ----
Define Lbyte Byte[1]
Define Hbyte Byte[2]
Define Subcmd Byte[3]
'---- OPERATION DATA ------
Define Extport Byte[4]
Define Led1_f Bit[29]
Define Led2_f Bit[30]
Define Led3_f Bit[31]
Define Led4_f Bit[32]
Define System_status Byte[5]
Define Acsl_f Bit[33]
Define Acsr_f Bit[34]
Define Ir_f Bit[35]
'--------------------------
'---- USER MEMORY -------
'--------------------------
Define Deviceaddress Byte[6]
'User Memory ab BYTE[7] frei!
'--- SYSTEMROUTINEN -----------
Define Plm_slow &H01C4
Define System &H01C9
Define Comnav &H0154
'- ERWEITERTE SYSTEM ROUTINEN -
Define Revr &H0101 'ANTRIEB RECHTS RÜCKWÄRTS
Define Revl &H0106 'ANTRIEB LINKS RÜCKWÄRTS
Define Fwdr &H010B 'ANTRIEG RECHTS VORWÄRTS
Define Fwdl &H0110 'ANTRIEB LINKS VORWÄRTS
Define Rotr &H0115 'RECHTS DREHEN
Define Rotl &H0119 'LINKS DREHEN
Define Rev &H011D 'RÜCKWÄRTS
Define Fwd &H0121 'VORWÄRTS
Define Comnav_status &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER
Define Acs_lo &H01E1 'ACS POWER LO
Define Acs_hi &H01E9 '
Define Acs_max &H01F1 '
Define Send_tlm &H014A 'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE)
Define Send_speedr &H0134 'SENDET TLM KANAL 8,PLM RECHTS
Define Send_speedl &H013A 'SENDET TLM KANAL 7,PLM LINKS
Define Send_sysstat &H0144 'SENDET TLM KANAL 0,SYSTEM STATUS
(flags Für Acs , Fwd / Rev , Acs_lo / Hi / Max)
'---------- INIT---------------'
'Freie Ports initialisieren (Namensänderung beachten):
FREIP7=off
Freip8 = Off
Freip9 = Off
Freip10 = Off
Freip11 = Off
Freip12 = Off
Freip13 = Off
Freip14 = Off
Freip15 = Off
Freip16 = Off
' Subsysteme einschalten:
Gosub Subsys_pwr_on
Beep 368 , 10 , 0 : Pause 50
Gosub Ledsoff 'Alle LEDs auf Robby aus
' ACS initialisieren:
Gosub No_acs_int : Beep 368 , 10 , 0 : Sys Acs_lo 'Kein Interrupt, Power LO
'------------ ANTRIEB -------------------------
Rev_l = On : Rev_r = On : Sys Plm_slow
'----------------
' HAUPTPROGRAMM:
'----------------
'Sprungmarke (einfache Schleife)
#loop
'Quellcode
Goto Loop
'Abfrage des IR-Sensors:
Sys Comnav_status
If Acsl_f = On Then Gosub Unterroutine 'Sensor für linke Seite spricht an, verzweigen ins Unterprogramm
If Acsr_f = On Then Gosub Andere_unterroutine 'Sensor für rechte Seite spricht an
'Geschwindigkeitskontrolle
Speed_l = 100 'geschwindigkeit linke Kette
Speed_r = 100 'Geschwindigkeit rechte Kette
'Ab hier Unterroutinen für LED-Ansteuerung sowie IR-System
'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII
#led1on
Led1_f = On : Goto Extport_write
#led1off
Led1_f = Off : Goto Extport_write
#led2on
Led2_f = On : Goto Extport_write
#led2off
Led2_f = Off : Goto Extport_write
#led3on
Led3_f = On : Goto Extport_write
#led3off
Led3_f = Off : Goto Extport_write
#led4on
Led4_f = On : Goto Extport_write
#led4off
Led4_f = Off : Goto Extport_write
#ledsoff
Extport = Extport And &H0F : GOTO Extport_write
#ledson
Extport = Extport Or &HF0
#extport_write
Lbyte = Extport : Sys System : Return
'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII
#get_irdata
Subcmd = 1 : Sys Comnav : Return
#send_irdata
Subcmd = 0 : Sys Comnav : Return
#get_tlm
Subcmd = 1 : Sys Comnav : Lbyte = Lbyte Or(hbyte Shl 6)
Hbyte = Hbyte Shr 2 : Return
#rc5
Subcmd = 4 : Sys Comnav : Lbyte = Hbyte And &HFC
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#rc5_int
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte And &HFE)OR 2
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#rec80
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte Or &H01)AND&HFD
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#rec80_int
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte Or &H03)
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#addressed_mode_on
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte Or &H10)
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#addressed_mode_off
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte And &HEF)
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#wait_ping
Subcmd = 8 : Sys Comnav : Return
#set_address
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte Or &H10)
Hbyte = 00 : Subcmd = 2 : Sys Comnav
Lbyte = Deviceaddress : Subcmd = 5 : Sys Comnav : Return
#get_addressed_data
Subcmd = 1 : Sys Comnav : Hbyte = Hbyte And &H7 : RETURN
#send_addressed_data
Hbyte =(hbyte Shl 3)or Deviceaddress : Subcmd = 0 : Sys Comnav : Return
'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII
#no_acs_int
Subcmd = 4 : Sys Comnav : Lbyte = Hbyte And &HFB
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#acs_int_200
Subcmd = 4 : Sys Comnav : Lbyte = Hbyte Or &H04
Hbyte = 50 : Subcmd = 2 : Sys Comnav : Return
#subsys_pwr_on
Sdio = On : Sclio = On : Strobe = Off : Extport =(extport And &HFE)OR 8
Sys System : Return
#subsys_pwr_off
Extport =(extport And &HF7)OR 1 : Sys System
Deact Sdio : Deact Sclio : Return
#clr_distance
Subcmd = 3 : Sys Comnav : Return
#l_distance
Subcmd = 6 : Sys Comnav : Return
#r_distance
Subcmd = 7 : Sys Comnav : Return
'---------COM/NAV GERÄTEREIBER -------------
'syscode "p5driv.s19"
Recht viel steht halt noch nicht drinnen, hab mal das von dir oben angesprochene IR-System eingebaut. Wenn du noch weitere Fragen zu Befehlen hast, frag ruhig. Ich werde mich bemühen, es dir zu erklären, wenn ich es selber weiß.
Viele Grüße
ikarus_177
Lesezeichen