Hallo !
Hier das Beispiel, das man die Systemroutinen für den Antrieb nicht benötigt!
Code:' EINFACHES BEISPIEL ZUR BENUTZUNG VON ANTRIEB OHNE SYS-Befehle ' --------------------------------------------------------------------- ' FUNKTION DES PROGRAMMS '---------------------------------------------------------------------- ' ACHTUNG: ' Der erste Schritt in der Initialisierung ihres Programms sollte immer die Zeile ' REV_L=on:REV_R=on:SYS PLM_SLOW ' enthalten. Diese Zeile initialisiert die Ports für die Richtungsumschaltung ' des Antriebs und die PLM Frequenz. ' DER BETRIEB DER MOTOREN OHNE DIESE INITIALISIERUNG FÜHRT UNWEIGERLICH ZUR ZERSTÖRUNG ' DER ANTRIEBSELEKTRONIK !! '----------------------------------------------------------------------------------- ' Für dieses Beispiel sind folgende SYSTEMROUTINEN relevant: ' ' POWER: ' gosub SUBSYS_PWR_ON ;Schaltet die Subsysteme EIN/AUS ' gosub SUBSYS_PWR_OFF ' AUSGABEN: ' gosub LED1ON ;zum Ein/Ausschalten der LED1 analog auch ' gosub LED1OFF ;LED 2bis 4 ' gosub LEDSOFF ;schaltet alle LEDS aus ' ' ACS: ' gosub NO_ACS_INT ;Interruptbetrieb abgeschaltet ' SYS ACS_HI ;ACS HI POWER (SEHBEREICH ca. 60cm) ' SYS ACS_LO ;ACS LO POWER (SEHBEREICH ca. 30cm) ' SYS ACS_MAX ;ACS MAX POWER(SEHBEREICH ca. 100cm) ' SYS COMNAV_STATUS ;Abfrage des ACS '------------------------------------------------------------------- ' ANTRIEB Neu ' ' GOSUB REVR ;Kette rückwärts laufen lassen R/L ' GOSUB REVL ' GOSUB FWDR ;Kette vorwärts laufen lassen R/L ' GOSUB FWDL ' GOSUB FWD ;beide Ketten vorwärts ' GOSUB REV ;beide Ketten rückwärts ' GOSUB ROTR ;Auf der Stelle nach R/L drehen ' GOSUB ROTL '---------------------------------------------------------------- '-------------------------- '------ 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] '-------------------------- '------ SENSORS --------- '-------------------------- 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 TIM byte[6] define PGM byte[7] '--- SYSTEMROUTINEN ----------- define PLM_SLOW &H01C4 define SYSTEM &H01C9 define COMNAV &H0154 '- ERWEITERTE SYSTEM ROUTINEN - '------------------------------------------------------------------- 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--------------- gosub SUBSYS_PWR_ON beep 368,10,50 '---- SYSTEM OPERATION MODE (NO INTERRUPT) ---- gosub NO_ACS_INT:beep 368,10,0:SYS ACS_MAX '------------ ANTRIEB ------------------------- REV_L=on:REV_R=on:SYS PLM_SLOW '-------------------------------------------- '--- DEMO ANTRIEB --- '-------------------------------------------- #loop pause 5:SYS COMNAV_STATUS '--------- LEDs ansteuern -------------------- if ACSL_F=on then gosub LED4ON else gosub LED4OFF if ACSR_F=on then gosub LED1ON else gosub LED1OFF '--------- AUSWEICHMANÖVER EINLEITEN --------- if (ACSL_F and ACSR_F)=on then goto rotate if ACSL_F=on then goto move_right if ACSR_F=on then goto move_left 'SYS FWD:SPEED_L=85:SPEED_R=85:goto loop gosub FWD:SPEED_L=85:SPEED_R=85:goto loop '-------- AUSWEICHEN NACH RECHTS ------------- #move_right SPEED_R=70:SPEED_L=85:goto loop '-------- AUSWEICHEN NACH LINKS ------------- #move_left SPEED_L=70:SPEED_R=85:goto loop '---------- ROTIEREN -------------------- #rotate SPEED_L=85:SPEED_R=85:gosub ROTR:goto loop '---------------------------------------------- 'IIIIIIIIII Neue ANTRIEBSROUTINEN IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ' Damit im Treiber Platz wird, kann auch mit altem Treiber p5driv.s19 ' benutzt werden ,bringt aber dann nichts !-) #REVR 'ANTRIEB RECHTS RÜCKWÄRTS REV_R=off return #REVL 'ANTRIEB LINKS RÜCKWÄRTS REV_L=off return #FWDR 'ANTRIEG RECHTS VORWÄRTS REV_R=on return #FWDL 'ANTRIEB LINKS VORWÄRTS REV_L=on return #ROTR 'RECHTS DREHEN gosub FWDL gosub REVR return #ROTL 'LINKS DREHEN gosub FWDR gosub REVL return #REV 'RÜCKWÄRTS gosub REVL gosub REVR return #FWD 'VORWÄRTS gosub FWDL gosub FWDR return '------------------------------------------------------------------- '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 #EXTPORT_WRITE SYS SYSTEM:pulse STROBE:RETURN 'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII #GET_IRDATA SUBCMD=1:sys COMNAV:return #SEND_IRDATA SUBCMD=0:sys COMNAV: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 '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"






Zitieren

Lesezeichen