PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wofür ist das gut?



Garret
10.02.2005, 12:54
Das steht immer am Ende der Beispielprogramme! Und ich weiß nicht wofür das eigentlich gut ist und deshalb wollte ich mal fragen ob mir das jemand erklären kann!
z.B. das hier SUBCMD=1:sys COMNAV:return was bedeutet das!

'---------- INIT---------------
gosub SUBSYS_PWR_ON
beep 368,10,0:pause 50
'---- SYSTEM OPERATION MODE (NO INTERRUPT) ----
gosub NO_ACS_INT:beep 368,10,0:SYS ACS_LO

'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

jonas
10.02.2005, 15:16
SUBCMD=1 => subcmd ist ne variable für irgendwas; es bedeutet das subcmd gleich 1 gesetzt wird; quasi wie z.B. x=1

sys COMNAV=> mit dem befehl SYS werden glaub ich treiber in den controller geladen, in dem fall COMNAV


ich weiß net, ob das jetzt alles stimmt; da gibts bestimmt andere (mit Sicherheit!) die das besser wissen und das besser erklären können.

ansonsten brauch man eigentlich am anfang nicht zu wissen, für was das gut ist; denk ich.

GaronG
10.02.2005, 18:02
Hallo Garret,

eigentlich gehören noch ein paar Zeilen dazu:

- syscode 'xxxxx.s19'
damit wird ein Treiber in den Speicher des Microcontrollers geladen. Diese Anweisung steht meistens am Ende des Programms und ist in einem maschinenählichen Code geschrieben, der im Speicher ab der Adresse H101 geladen wird.

- define COMNAV &H0154
der Begriff COMNAV steht jetzt für die Adresse H0154

-sys COMVAV
bedeutet: springe auf die Adresse H0154 und führe den Code aus, der dort beginnt (Unterprogrammaufruf)

- define SUBCMD byte
reserviere für die Variable SUBCMD schon mal 1 byte, was reinkommt wird später festgelegt

- SUBCMD= x: sys COMNAV
SUMCMD ist ein Parameter für den anschließenden Unterprogrammaufruf und sagt dem Unterprogramm, welche Daten und in welcher Form die Ergebnisse des Unterprogramms zurückgeliefert werden sollen. Z.B. SUBCMD = 0 heißt: warte auf ein IR-Ereignis (wenn ich mich recht erinnere).

Hoffe, ich konnte dir helfen.

MfG
GaronG

Garret
10.02.2005, 22:38
Braucht man das denn alles? Geht das Programm nicht ohne den ganzen Kram?

Arexx-Henk
10.02.2005, 22:44
Hallo,

so weit ich weiss wird die Hauptprocessor entlasstet durch die Coprocessor. (Dass 14-beiniges chip vorne/rechts auf der Robby)

Die Coprocessor ubernimt 'realtime'/schnelle signal sachen so wie dass ACS und die IR communication.

Die Hauptprocessor communiziert mit die Coprocessor uber zwei anschliessungen 'clock' und 'data'.

Bei einem 'sys COMNAV' wird die Inhalt vom SUBCMD, LBYTE und HBYTE seriel mit hilfe von 'clock' und 'data', durch der Hauptprocessor, zu und vom Coprocessor transportiert. (z.B. die gesendete umd empfangene IR daten)

MfG,

Henk

GaronG
11.02.2005, 08:15
Hallo Garret,

der 'ganze Kram' wächst mit deinen Ansprüchen. Du brauchst ihn nicht, wenn du über Hyperterminal nur "Hello World" ausgeben willst. Aber wenn der Robby sich bewegen soll, musst du die entsprechenden Unterprgramme für die Motoren berücksichtigen. Ebenso ist es mit der Sensorik, dem Anti-Kollisionssystem, IR-Kommunikation, Sub-Prozessorsystem usw....

Aber du hast auch recht. Bei den Beispielen auf der CD sind in JEDEM Beispiel ALLE Resourcen eingebunden, auch wenn diese nicht gebraucht werden. Es steht dir frei, alle aktuell nicht benötigten Programmteile rauszuschmeißen. Macht das Programm schlanker und übersichtlicher. Man muss nur wissen, WAS man tut!

MfG
GaronG

Garret
11.02.2005, 11:00
Danke, dann werd ich mal schauen was ich da alles rausschmeiße! ;)