-
Siehe Beitrag von gestern 11:29 Uhr. Man braucht den disaasemblierten Code oder den Source-Code. Da könnte man nachschauen, welche Speicheradresse verändert wird. Irgendwo im Netz stand schon mal das Listing, weiß aber nicht mehr, wo. Muss mal googlen...
MfG
GaronG
-
Als erstes danke für deine Geduld mit mir!
Ich probiers jetzt so! Ich stelle über die Fernsteuerung die Entfernung ein, mit der "1" wird die Entfernung vom ACS_LOW (30 cm) eingestellt, mit der "2" die Entfernung vom ACS_HI (60 cm) und mit der "3" die Entfernung vom ACS_MAX (100 cm).
Mal schauen ob ich das hin bekomme!
Garret
-
Keine Ursache, ist auch für mich interessant.
Die Sache, eigene Werte für die Empfindlichkeit festzusetzen, ist noch komplizierter als ich dachte. Das Source-Listing habe ich hier im Forum gefunden.
Aber: Für die Entfernungssensoren und die IR-Communikation hat der Robby noch einen eigenen Prozessor, der wiederum ein eigenes (festes) Betriebssystem (Treiber) hat. Die Kommunikation mit dem übergeordneten Programm geschieht im Treiber p5driv.s19 an den Adressen H00A4 (Bit 1 und 2) und H00A5 (Bit 6 und 7). Damit wird aber nur die Verschlüsselung für LO, HI und MAX getroffen. Die echten Werte stehen auch da nicht, sondern sind im Festspeicher des IR/ACS Prozessors und ich fürchte, da kommt man nicht ran (ROM-Speicher).
MfG
GaronG
-
Könntest du mal hier das Programm schauen? Ich seh da keinen Fehler, aber es geht trotzdem nicht. Funktion des Programmes: Mit der Taste 1 soll er die Entfernung vom 30cm einhalten (ACS_LO), wenn ich Taste 2 drücke dann soll er die Entfernung von 60cm einhalten (ACS_HI), bei Taste 3 stoppt er.
Hier das Programm:
'---------- INIT---------------
gosub SUBSYS_PWR_ON:REV_L=off:REV_R=off
beep 368,10,0:pause 50
'------- IR-FORMAT EINSTELLEN----------------
'gosub REC80
gosub RC5
'--------------------------------------------
'--- WARTEN AUF CODE UND ANZEIGEN ---
'--------------------------------------------
#LOOP
gosub GET_IRDATA
SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=0
if (LBYTE and HBYTE =&HFF) then goto LOOP
if (LBYTE =&H01) and (HBYTE =&H00 or HBYTE =&H20) then goto 30cm
if (LBYTE =&H02) and (HBYTE =&H00 or HBYTE =&H20) then goto 60cm
ADR=HBYTE:CMD=LBYTE:pause 50
goto loop
#30cm
SYS ACS_LO:SYS COMNAV_STATUS
if (LBYTE =&H03) and (HBYTE =&H00 or HBYTE =&H20) then goto loop
if (SYSTEM_STATUS and &H03)=1 then gosub LED1ON
if (SYSTEM_STATUS and &H03)=2 then gosub LED4ON
if (SYSTEM_STATUS and &H03)=3 then gosub stop
if (SYSTEM_STATUS and &H03)=0 then gosub move_fwd
goto 30cm
#60cm
SYS ACS_HI:SYS COMNAV_STATUS
if (LBYTE =&H03) and (HBYTE =&H00 or HBYTE =&H20) then goto loop
if (SYSTEM_STATUS and &H03)=1 then gosub LED1ON
if (SYSTEM_STATUS and &H03)=2 then gosub LED4ON
if (SYSTEM_STATUS and &H03)=3 then gosub stop
if (SYSTEM_STATUS and &H03)=0 then gosub move_fwd
goto 60cm
#stop
SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=0:pause 50:gosub LEDSOFF:return
#move_fwd
SYS FWDR:SYS FWDL:SPEED_L=150:SPEED_R=150:return
Das Problem ist, er reagiert gar nicht auf die Taste 1 und er hält nicht den Abstand von 60cm.
Danke für deine Hilfe
Garret
-
Hallo....
Die Entfernungseinstellung beim ACS ist eigenlich
eine Empindlichkeitseinstellung, also keine
echte Entfernungsmessung.
Diese ist ausserdem abhängig von der Objektfarbe !!
Es wird im Subsystem der Vorwiderstand der beiden
IR-LEDs vorne geschaltet (2 Widerstände) und damit
der Strom durch die LEDs eingestellt.
ciao.....