VL53L5CX am Wemos D1 (Arduino IDE): Exception bei Init :-(

OP (Firma: Q3) #7576835
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

#7576847
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?

OP (Firma: Q3) #7576858
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 ...

OP (Firma: Q3) #7576861
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren