Hallo!

Ich hab mir neulich SRF10-Module von Roboter-teile.de (danke Jörg für die schnelle Lieferung ) bestellt und diese an meine C-Control angeschlossen, doch irgendwie wollen die nicht so richtig...
Durch die Informationen, die hier im Roboternetz und im Internet zu finden sind, habe ich es zumindest schon geschafft, eine Messung zu starten, nur das Auslesen der Register will noch nicht so richtig.
Mal kommen relativ gut aussehende Werte aus dem Low-Byte und mal sind es nur Nullen. High ist ständig 0.
Am I²C-Bus kann es nicht liegen, da mein Kompass-Modul dort problemlos funktioniert...

Vielleicht habt ihr ja noch ne Idee...

Danke schon mal im Voraus.

Mit freundlichen Grüßen

Philipp


Hier der Code:

Code:
Define SDA             Port[3]
Define SCL             Port[4]

Define I               Byte
Define I2C_Daten       Byte
Define I2C_Zaehler     Byte

SDA = On
SCL = On


gosub I2C_Start
I2C_Daten = 224
gosub I2C_Write
I2C_Daten = 2
gosub I2C_Write
I2C_Daten = 100    'Range
gosub I2C_Write
gosub I2C_Stop

gosub I2C_Start
I2C_Daten = 224
gosub I2C_Write
I2C_Daten = 1
gosub I2C_Write
I2C_Daten = 1       'Gain
gosub I2C_Write
gosub I2C_Stop

#Loop

gosub I2C_Start
I2C_Daten = 224
gosub I2C_Write
I2C_Daten = 0
gosub I2C_Write
I2C_Daten = 81
gosub I2C_Write
gosub I2C_Stop

Pause 10

gosub I2C_Start
I2C_Daten = 224
gosub I2C_Write
I2C_Daten = 3
gosub I2C_Write
gosub I2C_Stop
gosub I2C_Start
I2C_Daten = 225
gosub I2C_Write
gosub I2C_Read
Print I2C_Daten 'LOW
gosub NoAck
gosub I2C_Stop

gosub I2C_Start
I2C_Daten = 224
gosub I2C_Write
I2C_Daten = 2
gosub I2C_Write
gosub I2C_Stop
gosub I2C_Start
I2C_Daten = 225
gosub I2C_Write
gosub I2C_Read
Print I2C_Daten 'HIGH
gosub NoAck
gosub I2C_Stop

Goto Loop


'********************* I²C Standardroutinen*******************
#I2C_Start
SDA = OFF
SCL = OFF
return

#I2C_Stop
SDA = OFF
SCL = ON
SDA = ON
return

#I2C_Write
for i = 1 to 8
    SDA = OFF
    if (I2C_Daten and 128) = 128 then SDA = ON
    pulse SCL
    I2C_Daten = I2C_Daten shl 1 '1 Bit nach links schieben
next
pulse SCL
return

#I2C_Read
I2C_Daten = 0
deact SDA
for i = 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