Hi,
mein ESP32-Projekt benutzt die WPS-Funktion um sich mit einem WLAN zu
verbinden. Nach erfolgreicher Aushandlung funktioniert der Connect mit
dem Router nicht direkt. Nach einem Reset klappt es aber. Deswegen lasse
ich den Controller nach dem WPS einfach mit
1
ESP.restart()
durchstarten. Soweit tut's das.
Nur habe ich eine WS2812 Lichterkette an einem Pin hängen (über die
FastLED library), die plötzlich kurz hell erstrahlt wenn er neu startet.
Bei einem Hardwarereset passiert das nicht.
Hat jemand eine Idee, was das Problem ist und was ich tun kann?
Grüße
kv
kv b schrieb:> Hat jemand eine Idee, was das Problem ist und was ich tun kann?
Hmm, warte, lass mich mal in meine Glaskugel gucken
.............................. nee sorry, die Glaskugel kann dein
Programm auch nicht sehen.
Stefan F. schrieb:> kv b schrieb:>> Hat jemand eine Idee, was das Problem ist und was ich tun kann?>> Hmm, warte, lass mich mal in meine Glaskugel gucken> .............................. nee sorry, die Glaskugel kann dein> Programm auch nicht sehen.
das Programm hat mehrere 1000 Zeilen Code. Ich habe versucht, die beiden
Aspekte des Programms hervorzuheben, die ich für relevant halte, viel
gibt es da nicht zu sagen. Aber gerne:
1
// wifi-modul
2
// der callback der auf WPS success den restart macht
War davon ausgegangen, dass das nicht so aufschlussreich ist, das zu
zeigen. Kann mich natürlich irren.
Ich war eher mit der Vermutung hier hergekommen, dass ESP.restart()
irgendwelche erratischen Zustände an den Pins hervorruft, die die LEDs
als Daten interpretieren und es vielleicht eine Möglichkeit gibt, das zu
unterbinden, weniger, dass es direkt an meinem Code liegt.
Ich habe versucht den pinMode von LED_PIN auf was anderes zu setzen.
Bringt nichts.
Ach komm schon...
Wenigstens die Definition der Pins..
Wahrscheinlich hast einen der strapping pins erwischt, Google mal
dannach, einige Pins beim Esp32 blöden beim booten rum :-)
Versuch mal nen andern pin oder... Wenigstens nen Schaltplan oder das
Programm. Wenn es halbwegs ordentlich kommentiert und Strukturiert ist
werden wir des schon schaffen zu lesen.
verdammt, ja, hast Recht. Es ist GPIO12, scheint einer der Strapping
Pins zu sein. Von denen wusste ich dummerweise nix (Anfänger, erstes
ESP-Projekt). Was neues gelernt. Danke.
Leider zu spät für einen anderen Pin, da auf bereits gefertigter
Platine. Das heißt neue Platinenrevision. Oder ich muss rausfinden, ob
es eine Möglichkeit gibt nach WPS auch ohne restart mit dem Router zu
connecten.
kv b schrieb:> das Programm hat mehrere 1000 Zeilen Code. Ich habe versucht, die beiden> Aspekte des Programms hervorzuheben, die ich für relevant halte, viel> gibt es da nicht zu sagen. Aber gerne:
So wird das nichts.
Wenn du nicht das ganze Programm zeigen willst, dann reduziere es
Schrittweise auf die kleinste mögliche Version, bei der dein Fehler noch
auftritt. Die schauen wir uns dann an.
kv b schrieb:> Ich war eher mit der Vermutung hier hergekommen, dass ESP.restart()> irgendwelche erratischen Zustände an den Pins hervorruft, die die LEDs> als Daten interpretieren und es vielleicht eine Möglichkeit gibt, das zu> unterbinden, weniger, dass es direkt an meinem Code liegt.
Guter Gedanke. Aber dazu können wir nichts sage, solange nicht einmal
klar ist, welchen GPIO Pin du verwendet hast.
kv b schrieb:> Es ist GPIO12, scheint einer der Strapping Pins zu sein.
Acha, na da hast du es.
Stefan F. schrieb:> kv b schrieb:> Guter Gedanke. Aber dazu können wir nichts sage, solange nicht einmal> klar ist, welchen GPIO Pin du verwendet hast.
Hab ich in der Tat versäumt. Auch zum Fragenstellen was dazugelernt :)
kv b schrieb:> Leider zu spät für einen anderen Pin, da auf bereits gefertigter> Platine. Das heißt neue Platinenrevision.
Es ist nie zu spät - nennt sich "Entwicklungsschleife" ...
Früher (tm) hätte man das erstmal mit einem Skalpell und etwas
Cu-Lackdraht behoben, falls es sich nicht um eine "Großserie" handelt.
kv b schrieb:> Auch zum Fragenstellen was dazugelernt :)
Gut.
Bei mir auf der Arbeit sollen Programme/Geräte nicht final von den
Entwicklern getestet werden, sondern von anderen Personen. Je weniger
die Tester an der Entwicklung beteiligt waren, umso besser. Die
Entwickler sollten auch nicht die Testprozeduren erfinden. Denn dabei
ist die Gefahr ist viel zu hoch, dass man sich zu sehr auf gut
durchdachte Sachen beschränkt, und dabei die Punkte vergisst, die man
schon während der Entwicklung die ganze Zeit nicht auf dem Schirm hatte.
Schlafloser schrieb:> Hmm, der 12er ist aber erstmal "nur" ein Boot selector. Aktive PWM gibt> er nicht aus. Vllt mal nen pull down an den pin?
Habe doch eine Lösung gefunden und war scheint's ein Problem mit
Nebenläufigkeit. Der event callback, den ich an die Wifi library
übergebe macht den Restart, währenddessen aber meine main loop
möglicherweise noch irgendetwas tut. Ich setze jetzt stattdessen ein
Flag aus dem Callback herausm, auf das die main loop prüft und dann dort
den restart macht. Was genau jetzt die Ursache ist, weiß ich zwar immer
noch nicht, aber das Problem scheint weg zu sein.
Danke an alle für die Hilfe und beim nächsten Mal versuche ich etwas
mehr Informationen gleich mitzugeben :)
kv b schrieb:> Habe doch eine Lösung gefunden und war scheint's ein Problem mit> Nebenläufigkeit. Der event callback, den ich an die Wifi library> übergebe macht den Restart, währenddessen aber meine main loop> möglicherweise noch irgendetwas tut.
Ohne Quelltext kann ich dir nicht folgen. Aber schön, dass du den Fehler
beheben konntest.