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







Zitieren

Lesezeichen