Hallo Leute,

ich versuche mit meinem ATMEGA2560 Bord den Kompass CMPS03 (der Kompass hier aus dem Shop, allerdings ohne Quarz, wenn ich das richtig sehe) über I2C anzusteuern.

Allerdings funktioniert das nicht so ganz. Ich habe den Kompass an Port D 0 und 1 angeschlossen (laut Datenblatt sind das die I2C Ports). Zusätzlich habe ich noch +5V und GND Leitung vom Kompass mit den entsprechenden Pins auf dem Board verbunden.

Wenn ich dann allerdings versuche den Kompass im Programm anzusprechen, hängt sich das Programm auf:

Code:
$prog , 255 , &B11011001 ,                                  'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82                                               '80
$framesize = 68                                             ' 64
$swstack = 68                                               '44

$crystal = 16000000                                         'Quarzfrequenz


Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com4:" For Binary As #4                               'USB Buchse

Config Scl = Portd.0                                        'Ports fuer IIC-Bus
Config Sda = Portd.1

Config Pind.5 = Output
Led Alias Portd.5

Led = 0

Declare Function Rn_cmps_himmelsrichtung() As Word

Print #4 , "Test"

Dim Himmelsrichtung As Word
Dim Grad As Single
Dim V As Byte

   Wait 3                                                   'Warte 3 Sekunde
   I2cinit
   Print #4 , "RN-Control CMPS03 Kompass Testprogramm "


   V = 1
   Do
     Himmelsrichtung = Rn_cmps_himmelsrichtung()
     Print #4 , "Himmelsrichtung in 0,1 Grad Schritten: " ; Himmelsrichtung
     Grad = Himmelsrichtung / 10
     Print #4 , "Himmelsrichtung genau in Grad: " ; Grad

     V = V + 3
     Wait 1
   Loop

End

Function Rn_cmps_himmelsrichtung() As Word
Local Lob As Byte
Local Hib As Byte
Local Cmps_slaveid As Byte
Local Cmps_slaveid_read As Byte

   Cmps_slaveid = &HC0
   Cmps_slaveid_read = Cmps_slaveid + 1

   'Register auswählen
   I2cstart
   I2cwbyte Cmps_slaveid
   I2cwbyte 2
   I2cstop

   I2cstart
   I2cwbyte Cmps_slaveid_read
   I2crbyte Hib , Ack
   I2crbyte Lob , Nack
   I2cstop

   Rn_cmps_himmelsrichtung = Makeint(lob , Hib)
End Function
Die LED (Portd.5) brennt und auch die Ausgabe "Test" ist auf dem Terminal noch zu lesen. Allerdings das "RN-Control CMPS03 Kompass Testprogramm " nicht mehr. Daher schätze ich mal das sich das Programm nach dem I2CInit aufhängt.

Kann mir einer sagen warum das so ist oder was ich falsch gemacht habe???