Forum: Mikrocontroller und Digitale Elektronik VL53L5CX am Wemos D1 (Arduino IDE): Exception bei Init :-(


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich habe einen VL53L5CX (8x8 TOF Entfernungssensor) per I2C an einem 
Wemos D1 Mini (ESP8266) angeschlossen und wollte mit dem ersten Beispiel 
der SparkFun_VL53L5CX_Library einsteigen "FastStartup". Der Sketch wird 
problemlos compiliert und auf den Wemos übertragen. Bei der Anweisung 
"bool startup = myImager.begin();" ist leider Schluss, es folgt die 
unten gezeigte Exception.
Dann habe ich mir mal begin()in der Lib (SparkFun_VL53L5CX_Library.cpp) 
näher angesehen und einige Debug-Zeilen eingefügt. So habe ich 
herausgefunden, dass der Fehler in der Lib  bei "result = 
vl53l5cx_init(Dev);" auftritt. Dann verlässt mich leider meine Weisheit. 
Hat jemnd eine Idee? Danke.
1
Exception (3):
2
epc1=0x40201520 epc2=0x00000000 epc3=0x00000000 excvaddr=0x4023b87d depc=0x00000000
3
4
>>>stack>>>
5
6
ctx: cont
7
sp: 3ffffda0 end: 3fffffd0 offset: 0150
8
3ffffef0:  00000000 4023b87d 00000064 00007fff  
9
3fffff00:  00000001 3ffefecc 3ffeee6c 00007fff  ...


Die Lib gibts hier zu sehen: 
https://github.com/sparkfun/SparkFun_VL53L5CX_Arduino_Library

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Tipp:
ESP8266 Exception Decoder

von Harald A. (embedded)


Lesenswert?

Die Zeile dürfte die erste tatsächliche Kommunikation per I2C auslösen. 
Ich habe mich da kurz durchgehangelt, allerdings habe ich gerade keine 
IDE, mit der ich projektübergreifend suchen könnte. Daher kann ich nicht 
ganz sehen, wie z.B. das I2C-Acknowledge ausgewertet wird. Evtl. per 
Polling? Ich vermute, dass das ACK nicht kommt und die SW dann hängt und 
spektakulär aussteigt. So könnte es sein.
Hast Du einen LogicAnalyzer, mit dem man mal schauen könnte, was da 
läuft? Oder ein Scope?

von J. S. (jojos)


Lesenswert?

https://github.com/sparkfun/SparkFun_VL53L5CX_Arduino_Library/issues/4

Aber der fix sieht nicht sehr plausibel aus.

Puh, jede Menge gefährlicher memset/memcpy mit festen Längen/Offset, 
nicht schön weil böse Abhängig vom Alignment.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Arduino F. schrieb:
> ESP8266 Exception Decoder

Habe alles nach der Anleitung (Donwload jar, Ordner tool in Sketchbook) 
gemacht, aber der Decoder erscheint nach Neustart der IDE (MacOS, 2.2.1) 
nicht unter "Werkzeuge" :-(

Versuche ich den Decoder einzeln per Doppelklick zu starten, bekomme ich 
einen Fehler, den ich in der Konsole nachsehen soll. Dort ist aber 
dermßen "Betrieb", dass ich nix finde ...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Harald A. schrieb:
> Die Zeile dürfte die erste tatsächliche Kommunikation per I2C
> auslösen.
> Ich habe mich da kurz durchgehangelt, allerdings habe ich gerade keine
> IDE, mit der ich projektübergreifend suchen könnte. Daher kann ich nicht
> ganz sehen, wie z.B. das I2C-Acknowledge ausgewertet wird. Evtl. per
> Polling? Ich vermute, dass das ACK nicht kommt und die SW dann hängt und
> spektakulär aussteigt. So könnte es sein.
> Hast Du einen LogicAnalyzer, mit dem man mal schauen könnte, was da
> läuft? Oder ein Scope?

Ein I2C-Scanner liefert den Sensor unter 0x29, das ist schon mal anders 
als in den Infos von Sparkfun angegeben. Die Adresse hab ich bei 
"begin(0x29)" eingetragen (wird in der Lib auch als "address" weiter 
gehandled), allerdings ändert das nix am Grundproblem. Aber das hier 
klappt erstmal:
1
    VL53L5CX_i2c->writeSingleByte(0x7fff, 0x00);
2
    deviceId = VL53L5CX_i2c->readSingleByte(0x00);
3
    revisionId = VL53L5CX_i2c->readSingleByte(0x01);
4
    VL53L5CX_i2c->writeSingleByte(0x7fff, 0x02);
5
6
    Serial.println("addrs "+String(address));
7
    Serial.println("devID "+String(deviceId));
8
    Serial.println("revID "+String(revisionId));

erst bei "result = vl53l5cx_init(Dev);" knackt es.

Oszi habe ich, allerdings erst morgen im Büro ... Analyzer nicht.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

J. S. schrieb:
> https://github.com/sparkfun/SparkFun_VL53L5CX_Arduino_Library/issues/4
>
> Aber der fix sieht nicht sehr plausibel aus.
>
> Puh, jede Menge gefährlicher memset/memcpy mit festen Längen/Offset,
> nicht schön weil böse Abhängig vom Alignment.

Danke. Das hat tatsächlich erstmal geholfen ...

von Peter (pittyj)


Lesenswert?

Ich habe die originale Beispiele von STM und die STM Cube IDE genommen.
Damit gab es keine Probleme.

Diese Bibliotheken von Drittanbietern sind oft mit heißer Nadel 
gestrickt.

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.