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:
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.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
Kann mir einer sagen warum das so ist oder was ich falsch gemacht habe???







Zitieren

Lesezeichen