Forum: Mikrocontroller und Digitale Elektronik Wemos D1 Board (ESP8266) spinnt.


von Sven Scholz (Gast)


Lesenswert?

Hallo Gemeinde,

ein Phänomen, dass ich so noch nie gesehen habe.
Wemos D1 Board, an dem ich ein OLED Display via I2C betreibe.

Das Board lässt sich unter Arduino IDE 1.8.x einwandfrei flashen und 
läuft danach ordnungsgemäß. Text ist aufm Display zu lesen. Sobald ich 
das Board allerdings abstecke bzw. die USB-Verbindung unterbreche um es 
danach wieder anzustecken bzw. in Betrieb zu nehmen, startet die 
Applikation nicht. Das zuvor noch funktionierende OLED-Display bleibt 
einfach schwarz...

Alle Anteile die die serielle Schnittstelle betreffen habe ich 
rausgenommen. Hatte erst gedacht, dass die Applikation darauf wartet, 
dass eine serielle Verbindung zustande kommt bei Serial.begin().

Woran kann es noch liegen?

Danke!

von MaWin (Gast)


Lesenswert?

Sven Scholz schrieb:
> Woran kann es noch liegen?

Der Reset bleibt aktiv und der ESP startet nicht

von Michael U. (amiga)


Lesenswert?

Hallo,

welche Pins sind genutzt? GPIO15 (D8) will Low beim Start und GPIO0 (D3) 
will High beim Start, sonst startet der ESP8266 im flaschen Bootmode.

Gruß aus Berlin
Michael

von Sven Scholz (Gast)


Lesenswert?

Okay, das könnte dann mit D3 zusammenhängen...
Dieser wird von der Applikation noch als Interrupt-Pin verwendet.

Da ich nicht mehr viele Pins frei habe (SPI wird neben I2C auch noch 
genutzt) kann ich nur noch auf D4 ausweichen oder? Oder sind die RX und 
TX Pins auch als Interrupt-Pin nutzbar.

Mal angenommen ich müsste unbedingt D3 nehmen. Wie würde dann hierzu der 
Workaround aussehen?

Herzlichen Dank!

von Michael U. (amiga)


Lesenswert?

Hallo,

Sven Scholz schrieb:
> Okay, das könnte dann mit D3 zusammenhängen...
> Dieser wird von der Applikation noch als Interrupt-Pin verwendet.
>
> Da ich nicht mehr viele Pins frei habe (SPI wird neben I2C auch noch
> genutzt) kann ich nur noch auf D4 ausweichen oder? Oder sind die RX und
> TX Pins auch als Interrupt-Pin nutzbar.
SPI ist in der ArduinoIDE beim ESP8266 als default auf GPIUO12/13/14/15 
(D6/D7/D5/D8). I2C auf GPIO4/5 (D2/D1).
Man kann andere nutzen, bei SPI können aber nicht alle umgemappt werden 
und es wird dann SoftwareSPI genutzt. I2C ist Software, da ist es 
ziemlich egal.
Wenn Du SPI anders zugewiesen hast, sollte D4 gehen.
Prinzipiell könnte man auch RX/TX nutzen, die IO-Matrix sollte die Pins 
dann vom UART trennen, habe ich aber nie getestet.

> Mal angenommen ich müsste unbedingt D3 nehmen. Wie würde dann hierzu der
> Workaround aussehen?
D3 muß zur Bootzeit zwingend H sein, sonst geht er in den Flashmode. Ob 
Du das in Deiner Schaltung sicherstellen kannst, weißt nur Du.

Gruß aus Berlin
Michael

von Sven Scholz (Gast)


Lesenswert?

Michael U. schrieb:
> D3 muß zur Bootzeit zwingend H sein, sonst geht er in den Flashmode. Ob
> Du das in Deiner Schaltung sicherstellen kannst, weißt nur Du.

Naja, wenn man sich den Schaltplan zum Wemos D1 ansieht, ist da ein 10k 
PullUp an 3,3V verbaut. Sollte also beim Einschalten immer High sein...
Wenn ich den Pin D3 dann in der SW mittels der Arduino 
attachInterrupt()-Methode angebe, sollte das doch keinen Einfluss auf 
den Bootvorgang haben?
Ich denke D3 wird durch die Methode als Input konfiguriert, um Flanke 
etc. überhaupt zu erkennen oder?

Also ganz klar ist mir das nicht...

Danke und viele Grüße!

von Michael U. (amiga)


Lesenswert?

Hallo,

Sven Scholz schrieb:
> Ich denke D3 wird durch die Methode als Input konfiguriert, um Flanke
> etc. überhaupt zu erkennen oder?
>
> Also ganz klar ist mir das nicht...

Deine externe Beschaltung, die den Interrupt erzeugt, darf im 
Startmoment aber auch nicht den Pin auf Low ziehen. Hängt also von 
dieser ab.

Gruß aus Berlin
Michael

von Einer K. (Gast)


Lesenswert?

Sven Scholz schrieb:
> Wenn ich den Pin D3 dann in der SW mittels der Arduino
> attachInterrupt()-Methode angebe, sollte das doch keinen Einfluss auf
> den Bootvorgang haben?

Nöö..

Allerdings wird er ab und zu mal LOW sein müssen, damit du Interrupts 
erhältst. Und dieses LOW kommt doch wohl von Außen.

Bisher hältst du geheim, was da dran steckt.

von Sven Scholz (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Bisher hältst du geheim, was da dran steckt.

Danke!
Also da hängt ein RFM69 dran...

von Wolfgang (Gast)


Lesenswert?

Sven Scholz schrieb:
> Also da hängt ein RFM69 dran...

Geht's auch ein bisschen genauer?

von Sven Scholz (Gast)


Lesenswert?

Wolfgang schrieb:
> Geht's auch ein bisschen genauer?

Nachja, DIO0 vom RFM69 Modul ist mit D3 vom Wemos D1 verbunden.
Dauerhaft.

von Stevven (Gast)


Lesenswert?

Hast du mal versucht pull ups und downs zu verwenden?

Was sagt der Pegel an den Pins des rfm  Moduls wenn es mit Spannung 
versorgt wird aber nicht mit dem wemos verbunden ist?... und die Pins am 
wemos wenn das rfm nicht abgeschlossen ist?

Das DB des rfms sagt man könnte die Pins programmieren. Sind dort Vll 
pull ups/downs eingestellt?

von Sven Scholz (Gast)


Lesenswert?

Also ich hatte den RFM69-DIO0-Pin mal kurzzeitig an D4 angeschlossen.
Damit konnte der ESP8266 gebootet werden!
Dabei muss man wissen, dass an dem D4-Pin die Builtin-LED des Wemos D1 
Board hängt.
Ergebnis: Die LED leuchtet damit dauerhaft und nur wenn der Interrupt 
ausgelöst wird, erlischt diese ganz ganz kurz um dann wieder 
weiterzuleuchten.
Ich denke DIO0 ist somit dauerhaft auf LOW. Daher wurde der ESP8266 auch 
nicht aktiv, sondern war vermutlich im "Flash-Mode".

Es wäre natürlich Spitze, wenn man den DIO0-Pin anders konfigurieren 
könnte, so dass der HIGH ist und beim Interrupt kurz auf LOW geht.
Im Datenblatt habe ich leider noch nix dazu gefunden...

@Stevven: Kannst du mir evtl. die Seite sagen, dann versuche ich das 
nochmal...

Danke und viele Grüße...

von Stefan F. (Gast)


Lesenswert?

Sven Scholz schrieb:
> Ich denke DIO0 ist somit dauerhaft auf LOW.

Nicht denken, nachmessen! Und zwar am besten mit einem Oszilloskop oder 
wenigstens mit einem Logic Analyzer.

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.