PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CMPS03 reagiert nicht



Jon
13.07.2009, 17:39
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

Jon
14.07.2009, 21:57
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

Andre_S
15.07.2009, 15:17
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é

Jon
15.07.2009, 16:34
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...

Jon
12.08.2009, 15:27
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