PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SD20 defekt?



10.09.2004, 17: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

Michael
10.09.2004, 18:00
Hallo Gast,


kann der SD20 chip dadurch defekt werden?

ja, da der I2C-Bus mit open-collector-Treibern funktioniert, und du den Port an 5V gehängt hast, entsteht beim Schalten ein Kurzschluß, der den Transistor im Chip zerstören kann.
Vielleicht hast du aber Glück gehabt...
Auch ein gern genommener Fehler ist das Vergessen der Pullups.
Gruß, Michael