10.09.2004, 18:52
Hi!
Hab meine C-.Control seit monaten ausgepackt weil ich ultra viel zu tun hatte :p
Ich hab alle kabel zu den Ports angeschlossen und auf start gedrückt... hat sich nichts gerührt ...
ich hab den SDA an Port1 und SCL an Port2 gehängt :) und andersrum .. nicht hat sich gerührt ..
dann bin ich drauf gekommen das ich SDA an 5v und SCL an port1 gehängt hab und dann andersrum :(
kann der SD20 chip dadurch defekt werden? habs noch immer nicht zum laufen bekommen :(
'************************************************* **********
'* Ansteuerung von bis zu 20 Servos mit dem SD20 *
'* über den I2C Bus. *
'* das Programm dreht den Servo am Servo PIN 1 des SD20 *
'* und liest den Register 0 (Version) um die Vorgänge *
'* zu demonstrieren. *
'* (ohne Expanded Mode) *
'************************************************* **********
'*********** Ports für den I2C Bus**************************
define SDA Port[15]
define SCL Port[16]
define I2C_Daten byte
define N byte 'Schleifenvariable
define Startbyte byte
define Kommandobyte byte
define ServoNummer byte
define ServoWinkel byte
'I2C Bus Ruhezustand
SDA=ON
SCL=ON
'*********** Hauptprogramm********************************
#Main
Get Startbyte ' Startbyte von der seriellen Schnittstelle
If Startbyte <> 97 Then Goto Main ' Schleife, solang bis ein Startbyte empfangen wurde
If Startbyte = 97 Then Goto KlasseA ' falls Kommandobyte = asci(97)="a" springe zur #KlasseA
#KlasseA ' Klasse A: Servodirektsteuerung
get ServoNummer ' Nummer des anzusteuernden Servos von der seriellen Schnittstelle empfangen
get ServoWinkel ' Winkel des anzusteuernden Servos von der seriellen Schnittstelle empfangen
Gosub ServoStellen
Goto Main
#ServoStellen
gosub I2C_Start ' I2C-Startbedingung
I2C_Daten=194 ' Adresse des SD20 am I2C Bus
gosub I2C_Write ' Adresse übertragen
I2C_Daten = ServoNummer ' Register des Servos, der angesprochen werden soll schreiben
gosub I2C_Write ' Register übertragen
I2C_Daten = ServoWinkel ' Winkel auf den dieser Servo drehen soll schreiben
gosub I2C_Write ' Winkel schreiben
gosub I2C_Stop ' I2C-Stopbedingung.
Return
'*********** I2C Bus Standard Routinen********************
#I2C_Start
SDA=OFF
SCL=OFF
return
#I2C_Stop
SDA=OFF
SCL=ON
SDA=ON
return
#I2C_Write
for N=1 to 8 ' 8 Bit schreiben in For-Next-Schleife
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 ' 8 Bit lesen in For-Next-Schleife
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
Hab meine C-.Control seit monaten ausgepackt weil ich ultra viel zu tun hatte :p
Ich hab alle kabel zu den Ports angeschlossen und auf start gedrückt... hat sich nichts gerührt ...
ich hab den SDA an Port1 und SCL an Port2 gehängt :) und andersrum .. nicht hat sich gerührt ..
dann bin ich drauf gekommen das ich SDA an 5v und SCL an port1 gehängt hab und dann andersrum :(
kann der SD20 chip dadurch defekt werden? habs noch immer nicht zum laufen bekommen :(
'************************************************* **********
'* Ansteuerung von bis zu 20 Servos mit dem SD20 *
'* über den I2C Bus. *
'* das Programm dreht den Servo am Servo PIN 1 des SD20 *
'* und liest den Register 0 (Version) um die Vorgänge *
'* zu demonstrieren. *
'* (ohne Expanded Mode) *
'************************************************* **********
'*********** Ports für den I2C Bus**************************
define SDA Port[15]
define SCL Port[16]
define I2C_Daten byte
define N byte 'Schleifenvariable
define Startbyte byte
define Kommandobyte byte
define ServoNummer byte
define ServoWinkel byte
'I2C Bus Ruhezustand
SDA=ON
SCL=ON
'*********** Hauptprogramm********************************
#Main
Get Startbyte ' Startbyte von der seriellen Schnittstelle
If Startbyte <> 97 Then Goto Main ' Schleife, solang bis ein Startbyte empfangen wurde
If Startbyte = 97 Then Goto KlasseA ' falls Kommandobyte = asci(97)="a" springe zur #KlasseA
#KlasseA ' Klasse A: Servodirektsteuerung
get ServoNummer ' Nummer des anzusteuernden Servos von der seriellen Schnittstelle empfangen
get ServoWinkel ' Winkel des anzusteuernden Servos von der seriellen Schnittstelle empfangen
Gosub ServoStellen
Goto Main
#ServoStellen
gosub I2C_Start ' I2C-Startbedingung
I2C_Daten=194 ' Adresse des SD20 am I2C Bus
gosub I2C_Write ' Adresse übertragen
I2C_Daten = ServoNummer ' Register des Servos, der angesprochen werden soll schreiben
gosub I2C_Write ' Register übertragen
I2C_Daten = ServoWinkel ' Winkel auf den dieser Servo drehen soll schreiben
gosub I2C_Write ' Winkel schreiben
gosub I2C_Stop ' I2C-Stopbedingung.
Return
'*********** I2C Bus Standard Routinen********************
#I2C_Start
SDA=OFF
SCL=OFF
return
#I2C_Stop
SDA=OFF
SCL=ON
SDA=ON
return
#I2C_Write
for N=1 to 8 ' 8 Bit schreiben in For-Next-Schleife
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 ' 8 Bit lesen in For-Next-Schleife
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