Hi,
ich bin jetzt kein Bascom-Programmierer, kann also sein, dass die Syntax des Programms nicht ganz richtig ist, ich setzte aber den I2C-Bus sehr oft ein. So, wie ich den Sensor verstanden habe, musst Du zuerst den Befehl senden, der angibt, was Du auslesen willst:
Code:
I2cstart
I2cwbyte &H54
I2cwbyte &HB6
I2cstop
Danach liest Du vom Sensor. Das geht leider nicht direkt in einem:
Code:
I2cstart
I2cwbyte &H55
I2crbyte Lesen1 , Nack
I2cstop
Man kann das auch mit einem REPEATED START machen und sich ein STOP sparen:
Code:
I2cstart
I2cwbyte &H54
I2cwbyte &HB6
I2cstart
I2cwbyte &H55
I2crbyte Lesen1 , Nack
I2cstop
Wichtig ist: Gerade Adressen signalisieren einen Schreibvorgang an den Slave, ungerade Adressen einen Lesevorgang vom Slave.
Noch was: Die Leitungen SDA und SCL brauchen Pull-Up-Widerstäde. Wenn die nicht da sind, geht die Übertragung schief.
Viele Grüße,
Markus
Lesezeichen