Hallo,
ich hab das Kompassmodul CMPS03 und möchte es über I²C ansprechen.
Zum Testen hab ich das Beispielprogramm auf der Robotikhardware CD benutzt.
Das Problem ist, dass das Modul beim Auslesen der Firmwareversion nicht zu antworten scheint. Nach einiger Zeit kommt dann als Version 0 und bei den Messungen kommt anschließend ebenfalls immer 0 heraus.
Am I²C Anschluss und am Verbindungskabel kann es nicht liegen, da ein SRF10-Ultraschallmodul am gleichen Anschluss mit gleichem Kabel einwandfrei funktioniert.
Ist das Modul jetzt kaputt?
Wäre für Hilfe echt dankbar.Code:'################################################### 'cmps03_an_rnmega128funk.bas 'für 'RoboterNetz Board RN-Mega128Funk ab Version 1.1 'Das neue vielseitige RN-Controllerboard mit ATMEGA128 'und das Kompassmodul CMPS03 für Erkennung der Himmelsrichtung 'Datenblatt zu CMPS03 siehe Downloadbereich: 'https://www.roboternetz.de 'Aufgabe: ' Gibt die Himmelsrichtung in Bezug auf Norden aus ' Die Unterfunktionen können gerne in eigenen Programmen ' genutzt werden. ' Autor: Frank (Roboternetz) ' Modul: CMPS03 Devantech/robotikhardware.de neuste Firmware ' Getestet mit CMPS Firmware 11 '####################################################### Declare Function Rn_cmps_himmelsrichtung() As Word Declare Function Rn_cmps_firmware() As Byte ' ---------------RN-Mega128Funk übliche ------------------ $regfile = "m128def.dat" ' Bei Mega 128 " $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 'Quarzfrequenz $baud = 19200 'Baudrate für Funkmodul $baud1 = 9600 'Baudrate für MAX Config Scl = Portd.0 'Ports fuer IIC-Bus Config Sda = Portd.1 Config Ping.0 = Output 'Spannung an LCD aktivieren Lcdpower Alias Portg.0 Config Pine.2 = Output Rdy_hostempfangsbereit Alias Porte.2 'Auf Low setzen wenn Empfangsbereit für Daten vom Funkmodul Config Pine.5 = Input Bsy_funkmodulsendebereit Alias Porte.5 'Ist Low wenn Funkmodul frei zum senden Open "com2:" For Binary As #2 'Ausgabe über zweite serielle Schnittstelle (MAX) Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk Sound Portg.2 , 400 , 250 'BEEP bei RN-Mega128Funk Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk ' --------------------------------------------------- Dim Himmelsrichtung As Word Dim Grad As Single Dim V As Byte Wait 3 'Warte 3 Sekunde I2cinit Print #2 , "RN-Mega128Funk CMPS03 Kompass Testprogramm " Print #2 , "CMPS03 Kompass Firmware Version:" ; Rn_cmps_firmware() V = 1 Do Himmelsrichtung = Rn_cmps_himmelsrichtung() Print #2 , "Himmelsrichtung in 0,1 Grad Schritten: " ; Himmelsrichtung Grad = Himmelsrichtung / 10 Print #2 , "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 = &HE0 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 Function Rn_cmps_firmware() As Byte Local Firmware As Byte Local Cmps_slaveid As Byte Local Cmps_slaveid_read As Byte Cmps_slaveid = &HE0 Cmps_slaveid_read = Cmps_slaveid + 1 I2cstart I2cwbyte Cmps_slaveid I2cwbyte 0 'Leseregister festlegen I2cstop I2cstart I2cwbyte Cmps_slaveid_read I2crbyte Firmware , Nack I2cstop Rn_cmps_firmware = Firmware End Function
mfg







Zitieren

Lesezeichen