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
Lesezeichen