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!
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
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!
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
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!
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
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.
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?
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...
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.