nose
06.01.2006, 20:57
nabend zusammen,
ich möchte einen Servo mithilfe des Servocontrollers anx-S20 über I²C mit einer C-Control V1.1 steuern. Zum Testen habe ich analog zu dem Programm für einen SD20 auf dieser Seite (http://www.the-starbearer.de/Roboterelektronik/servo/SD20.htm) ein Testprogramm geschrieben was folgendermaßen aussieht:
define SDA Port[11]
define SCL Port[12]
define I2C_Daten byte
define N byte
SDA=ON
SCL=ON
#Main
gosub I2C_Start
I2C_Daten=194
gosub I2C_Write
I2C_Daten=63
gosub I2C_Write
I2C_Daten=0
gosub I2C_Write
gosub I2C_Stop
pause 50
gosub I2C_Start
I2C_Daten=194
gosub I2C_Write
I2C_Daten=63
gosub I2C_Write
I2C_Daten=255
gosub I2C_Write
gosub I2C_Stop
pause 50
goto main
#I2C_Start
SDA=OFF
SCL=OFF
return
#I2C_Stop
SDA=OFF
SCL=ON
SDA=ON
return
#I2C_Write
for N=1 to 8
SDA=OFF
if (I2C_Daten and 128) =128 then SDA=ON
pulse SCL
I2C_Daten=I2C_Daten shl 1
next
pulse SCL
Return
#I2C_Read
I2C_Daten=0
deact SDA
for n=1 to 8
I2C_Daten=I2C_Daten shl 1
SCL=ON
if SDA then I2C_Daten=I2C_Daten+1
SCL=OFF
next
Return
#Ack
SDA=0
pulse SCL
return
#NoAck
SDA=1
pulse SCL
return
Das Programm soll einen Servo von der ganz linken Position nach einer kleinen Pause auf die ganz rechte Position fahren und das dann immer wieder hin und her. 194 ist die I²C Adresse des anx-S20 und 63 der Befehlscode für Servo Nr. 1 im 8-bit Modus.
Allerdings tut sich mit diesem Programm rein gar nichts der Servo gibt keinen mucks von sich. Habe alle Anschlüsse überprüft und konnte keinen Fehler erkennen. Am Servo liegts auch nicht, ahbe ich seperat getestet. Ich schätze mal der Fehler liegt in meinem Programm. Weiß jemand einen Tip für mich? In der Anleitung des anx-S20 hab ich leider nichts bez. I²C Ansteuerung gefunden.
Vielen Dank schon mal und Viele Grüße
Daniel
ich möchte einen Servo mithilfe des Servocontrollers anx-S20 über I²C mit einer C-Control V1.1 steuern. Zum Testen habe ich analog zu dem Programm für einen SD20 auf dieser Seite (http://www.the-starbearer.de/Roboterelektronik/servo/SD20.htm) ein Testprogramm geschrieben was folgendermaßen aussieht:
define SDA Port[11]
define SCL Port[12]
define I2C_Daten byte
define N byte
SDA=ON
SCL=ON
#Main
gosub I2C_Start
I2C_Daten=194
gosub I2C_Write
I2C_Daten=63
gosub I2C_Write
I2C_Daten=0
gosub I2C_Write
gosub I2C_Stop
pause 50
gosub I2C_Start
I2C_Daten=194
gosub I2C_Write
I2C_Daten=63
gosub I2C_Write
I2C_Daten=255
gosub I2C_Write
gosub I2C_Stop
pause 50
goto main
#I2C_Start
SDA=OFF
SCL=OFF
return
#I2C_Stop
SDA=OFF
SCL=ON
SDA=ON
return
#I2C_Write
for N=1 to 8
SDA=OFF
if (I2C_Daten and 128) =128 then SDA=ON
pulse SCL
I2C_Daten=I2C_Daten shl 1
next
pulse SCL
Return
#I2C_Read
I2C_Daten=0
deact SDA
for n=1 to 8
I2C_Daten=I2C_Daten shl 1
SCL=ON
if SDA then I2C_Daten=I2C_Daten+1
SCL=OFF
next
Return
#Ack
SDA=0
pulse SCL
return
#NoAck
SDA=1
pulse SCL
return
Das Programm soll einen Servo von der ganz linken Position nach einer kleinen Pause auf die ganz rechte Position fahren und das dann immer wieder hin und her. 194 ist die I²C Adresse des anx-S20 und 63 der Befehlscode für Servo Nr. 1 im 8-bit Modus.
Allerdings tut sich mit diesem Programm rein gar nichts der Servo gibt keinen mucks von sich. Habe alle Anschlüsse überprüft und konnte keinen Fehler erkennen. Am Servo liegts auch nicht, ahbe ich seperat getestet. Ich schätze mal der Fehler liegt in meinem Programm. Weiß jemand einen Tip für mich? In der Anleitung des anx-S20 hab ich leider nichts bez. I²C Ansteuerung gefunden.
Vielen Dank schon mal und Viele Grüße
Daniel