Hallo!
Ich habe ein Problem mit dem Kompass CMPS03von Devantech. Ansteuern kann man mittels I2C. Ausgben sollte er den Winkel in auf einen Wert, der normiert auf 0-255 ist. Aber meiner macht das irgendwie nicht. das ist mein Quellcode:
define SDA port[9] 'DATENLEITUNG
define SCL port[10] 'TAKTLEITUNG
define I2C_DATEN byte[1]
define Z byte[2]
define KOMPASSWERT byte[3]
'RUHEZUSTAND FÜR I2C-LEITUNGEN
SDA = ON
SCL = ON
'BEGINN DES HAUPTPROGRAMMS
#KOMPASS
gosub I2C_START
I2C_DATEN = 192
gosub I2C_WRITE
I2C_DATEN = 1
gosub I2C_WRITE
gosub I2C_STOPP
gosub I2C_START
I2C_DATEN = 193
gosub I2C_WRITE
gosub I2C_READ
KOMPASSWERT = I2C_DATEN
print " "
print KOMPASSWERT
gosub NO_ACK
gosub I2C_STOPP
goto KOMPASS
'I2C-STANDARDROUTINEN
#I2C_START
SDA = OFF
SCL = OFF
return
#I2C_STOPP
SDA = OFF
SCL = ON
SDA = ON
return
#I2C_WRITE
for Z = 1 to 8
SDA = OFF
if (I2C_DATEN and 12= 128 then SDA = ON
pulse SCL
I2C_DATEN = I2C_DATEN shl 1
next
pulse SCL
return
#I2C_READ
I2C_DATEN = 0
deact SDA
for Z = 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
#NO_ACK
SDA = 1
pulse SCL
return
end
Habe ich vielleicht irgendwo einen Fehler oder kennt jemand das Problem? Für Hilfe wäre ich dankbar!
MfG
Jonas
Lesezeichen