Archiv verlassen und diese Seite im Standarddesign anzeigen : CMPS03 reagiert nicht
Hi!
Ich habe heute mal wieder meinen CMPS03 herausgekramt, da ich diesen für die nächsten Programme bei IMADEIT-V3 brauchen werde.
Allerdings reagiert der Sensor gar nicht mehr. Wenn ich ihn an den I2C-Bus anschließe, so ist der gesamte Bus tot.
Der Verdacht, dass die Leitungen des Busses zu lang sind konnte ich nicht bestätigen, da ich einfach mal alle I2C-Anschlüsse von der Hauptplatine abgenommen habe und den CMPS03 direkt an den µC auf dieser Platine gehängt hab. Es ging nichts... Somit kann es auch nicht an eventuell falsch dimensionierten Pull-Up Widerständen am Bus liegen. (Ich glaube, dass sind momentan zwei 4,7kOhm Widerstände.)
Die Anschlüsse am CMPS03 sind richtig. Ich hab extra nochmal alles "durchgebeept" um das zu kontrollieren. Auch die Spannung ist mit 4,98Volt im grünen Bereich.
Hat jemand eine Idee, was mit dem Sensor los sein könnte, bzw. was ich noch testen kann, oder ist der im Eimer (was sehr sch*** wäre!)?
Ich hoffe, mir kann jemand helfen,
jon
Ich weiß, es ist gerade mal erst ein Tag vorbei, aber so langsam bin ich doch am verzweifeln.
Hat wirklich niemand eine Idee??
mfg,
jon
Ich weiß, es ist gerade mal erst ein Tag vorbei, aber so langsam bin ich doch am verzweifeln.
Hat wirklich niemand eine Idee??
mfg,
jon
Hallo,
ich würde ers mal schauen wie es mit der Stromaufnahme aussieht.
Ich glaube so 15-20mA mit ein paar Spitzen sollten richtig sein.
Wenn das in Ordnung ist würde ich mal den PWM Ausgang vornehmen, da dieser auch ständig aktiv sein sollte, soweit ich das jetzt in Erinnerung habe.
Schaue mal ins Datenblatt, habe ich jetzt nicht hier...
Gruß André
Das sind zwei sehr gute Ideen, die ich mal versuchen werden!
Vielen Dank!!!
jon
EDIT:
Ich hab habe mal den Strom gemessen, den das Modul zieht, wenn ich weder an den PWM noch an die I2C-Pins etwas anschließe. Er liegt bei gerade mal 0,48mA, ist also viel zu niedrig und spricht eher dafür, dass das Modul im Elektronikhimmel ist, oder?
EDIT²:
Kein wunder, dass der Strom so gering war, ich hatte das Modul eben falsch gepolt. Jetzt kann ich über den PWM-Port ein Ergebnis erziehlen, dass schonmal grob die Himmelsrichtung angibt. Jetzt würde mich nur interessieren, ob ich den I2C-Bis wieder irgendwie zum laufen kriege, da mir derr lieber wäre als der PWM-Ausgang.
Naja, in der englischen Doku habe ich eben noch gelesen, dass es bei timingpproblen dazu kommen kann, dass der I2C-Bus lahmgelegt wird...
Nachdem ich nun drei Wochen in England war, habe ich endlich wieder Zeit, am Roboter weiter zu bauen.
Deshalb habe ich mir erstmal den cmps03 vor geknüpft, da ich diesen dringend brauche.
Um zu vermeiden, dass eventuelle Schaltungsfehler da sind, habe ich einen atmega8 verwendet, an den sonst nur drei LEDs und die ISP Buchse angeschlossen ist. Leider geht es nicht :-( Sobald ich den SCL-Port verbinde bleibt das Programm einfach stehen und es passiert nichts mehr :-(
Hat jemand ne Idee, oder muss ich mir nen neuen kaufen? Die sind so verdammt teuer...
Vielen Dank,
jon
EDIT:
Der Quellcode (Die Funktion zum Auslesen ist aus der Wiki):
Declare Function Rn_cmps_himmelsrichtung() As Word
'Die Standartdefinitionen am Anfang eines jeden Programms
$regfile = "m8def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32
$crystal = 11059200 'Quarzfrequenz
$baud = 19200 'Baud-Rate
Baud = 19200
Config Scl = Portd.0 'Ports fuer IIC-Bus
Config Sda = Portd.1
Dim Himmelsrichtung As Word
Dim V As Byte
Config Portd.2 = Output 'rote LED
Portd.2 = 1 'LED aus
' ################################################## ######################
' ###### Hauptproggi
' ################################################## ######################
Waitms 100
V = 1
Do
Waitms 250
Himmelsrichtung = Rn_cmps_himmelsrichtung()
V = V + 3
Toggle Portd.2
Waitms 250
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.