Hier mal mein Code (eigentlich nur der von http://www.mtahlers.de/index.php/ele...ren/mmc2120mg#)
Code:
' beispielprogramm zum auslesen des MMC2120MG
' malte ahlers 2011
' weitere infos auf malteahlers.de
'
'
'
' compiler steuerung
$regfile = "m16def.dat"
$crystal = 16000000
$framesize = 64
$swstack = 64
$hwstack = 64
$baud = 19200
$lib "i2c_twi.lbx"
'
' - I2C
Config Twi = 400000
Config Scl = Portc.0
Config Sda = Portc.1
'
' konstanten
Const Cmp_w = &H60
Const Cmp_r = &H61
'
' variablen
Dim I As Byte
Dim Dat(5) As Byte
Dim X As Single
Dim Y As Single
Dim Zahl As Single
Dim K As Single
Config Portc.4 = Output
Portc.4 = 1
Config Portb.0 = Output
Beeper Alias Portb.0
Sound Beeper , 400 , 450
'
' hauptprog
I2cinit
'
Do
'
' * set/ reset coil *
I2cstart
'
' sensor adressieren (schreiben)
I2cwbyte Cmp_w
'
' register adressieren
I2cwbyte &H00
'
' register manipulieren -> set coil
I2cwbyte &B00000010
'
I2cstop
'
Waitms 1
'
I2cstart
'
' sensor adressieren (schreiben)
I2cwbyte Cmp_w
' register adressieren
I2cwbyte &H00
'
' register manipulieren -> reset coil
I2cwbyte &B00000100
'
I2cstop
'
Waitms 5
'
' * messung *
I2cstart
'
' sensor adressieren (schreiben)
I2cwbyte Cmp_w
'
' register adressieren
I2cwbyte &H00
'
' register manipulieren -> messung
I2cwbyte &H01
'
I2cstop
'
Waitms 5
'
I2cstart
I2cwbyte Cmp_w
' leseindex setzen
I2cwbyte &H00
'
I2cstart
'
' sensor adressieren (lesen)
I2cwbyte Cmp_r
'
For I = 1 To 4
' bytes 1-4 holen mit ack
I2crbyte Dat(i) , Ack
Next
'
' byte 5 holen mit nack
I2crbyte Dat(5) , Nack
'
I2cstop
'
' oberes nibble im high bytes löschen
Dat(2) = Dat(2) And &B0000_1111
Dat(4) = Dat(4) And &B0000_1111
'
' x-wert aus high- und lowbyte berechnen
X = Dat(2) * 256
X = X + Dat(3)
'
' y-wert aus high- und lowbyte berechnen
Y = Dat(4) * 256
Y = Y + Dat(5)
Zahl = Atn2(y , X)
Zahl = Rad2deg(zahl)
Print Zahl
Waitms 200
Loop
End
Es wird jetzt auch ein Wert ausgegeben, aber egal wie rum ich den Sensor drehe, es kommt immer eine Zahl um die 45,000000000 heraus.
Kann es sein das der Sensor kaputt ist oder vom Steckbrett gestört wird?
Lesezeichen