Forum: Mikrocontroller und Digitale Elektronik Probleme mit LIS3LV02DL und LIS3LV02DQ


von Christian S. (swoc)


Lesenswert?

Hallo

ich beobachte ein für mich unerklärliches Phänomen beim LIS3LV02D*

Ich konfiguriere den Sensor folgendermaßen:

CTRL_REG1 (0x20): 0xD4 (power on, z-Achse aktiviert)
CTRL_REG2 (0x21): 0x45 (data ready on RDY pad, enable data-ready 
generation)

danach startet der Sensor seine Funktion (Beschl. messen -> DRDY high)

in meiner µC-Schleife polle ich den DRDY-pin, wenn er auf "1" geht, lese 
ich die 2 Register 0x2C und 0x2D aus -> DRDY geht wieder auf "0" usw.
wenn ich auslese setze ich auch meinen Watchdog-Timer zurück.

Nun passiert es nach einigen Minuten, dass das DRDY-Signal nicht mehr 
kommt (bleibt "0") -> Reset durch Watchdog-Timer

Das Status-Reg liefert dann den Wert 0x77. Wenn ich die Versorgung 
wegnehme und wieder einschalte, dann liefert das Status-Reg den Wert 
0xFF und die ganze Sache läuft wieder.

Den Sensor versorge ich mit 3V, Beschaltung ist soweit ok, Kommunikation 
läuft auch.

Das Phänomen tritt übrigens bei mehreren Sensoren auf.

Hat jemand eine Idee woran es liegen könnte?

Gruß
Christian

von Martin (Gast)


Lesenswert?

Hm..
Was passiert wenn du den Watchdog-Timer weglässt?
Nutzt du ein Breakout-Board für den Sensor?
Poste mal deinen Schaltplan.

Gruß Martin

von Christian S. (swoc)


Lesenswert?

Wenn ich den Watchdog Timer weglasse, passiert gar nichts mehr (im 
Fehlerfall)
(Anm. Den WDT habe ich deswegen eingebaut, um das "Hängenbleiben" des 
Sensors zu detektieren)
Ich polle ja den DRDY-Pin, und der bleibt halt dann immer "0" - somit 
steht meine Datenerfassung.

Ich benutze kein Breakout-Board.
Den Sensor habe ich selber auf einer von mir entworfenen Platine 
eingelötet. Den genauen Schaltplan kann ich erst am Montag posten, aber 
er entspricht genau der Schaltung, wie sie im Datenblatt angegeben ist, 
mit der Ausnahme, dass ich einen 100µ Kondensator statt dem angegebenen 
10µ Kondensator verwende.

Kann das sein dass es sich um ein Timing-Problem handelt? Wenn ich zu 
langsam auslese, dass dann das DRDY-Signal "verschwindet"? (kann ich mir 
eigentlich nicht vorstellen)

Komisch ist auch, dass das Status-Reg im "Fehlerfall" einen anderen Wert 
enthält (0x77) im Vergleich zu einem Power-Cycle (0xFF).

Auf jeden Fall bekomme ich das DRDY-Signal nur durch einen Power-Cycle 
zum "laufen".

Achja, der Sensor zieht genauso viel Strom beim "Hängenbleiben" wie im 
normalen Betrieb (ca. 600µA)

von R. W. (quakeman)


Lesenswert?

Hast mal versucht anstatt des Ready Pins das STATUS_REG Register nach 
neuen Daten zu pollen?
Die untersten 4 Bits zeigen neue Werte der einzelnen Achsen an.

So habe ich es letztes Jahr gemacht und der Sensor ist nie hängen 
geblieben.

Ciao,
     Rainer

von Christian S. (swoc)


Angehängte Dateien:

Lesenswert?

Hier ist noch die Beschaltung des Beschleunigungssensors.

das mit dem DRDY-pollen habe ich falsch formuliert. Ich benutze den 
DRDY-Pin (geht auf einen Interrupt-Eingang des µC), um den µC aus dem 
Sleep-Modus zu holen.

Ineressant wäre auch, wie man das DRDY-Signal wieder zum "laufen" bringt 
ohne einen Power-Cycle.

von Christian S. (swoc)


Lesenswert?

Sieht so aus, als wird das DRDY-Signal dauerhaft "deaktiviert", wenn man 
(ein paar mal) zu spät ausliest.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.