Aufwachen aus dem Deepsleep

Seid gegrüßt!

Ich bin gerade dabei meinen ersten ESPuino zusammenzubrauen, und als erstes möchte ich mich bei @biologist herzlich bedanken! Platine und Anleitung waren sehr hilfreich :slight_smile: Natürlich auch diese Plattform hier!!! Danke!!!

Also, meine Platine ist bestückt, mit lolin32 und rc522, sd via spi… Läuft wunderbar, nur habe ich keinen Drehregler sondern drei buttons, daher habe ich die Zeile:
esp_sleep_enable_ext0_wakeup((gpio_num_t) DREHENCODER_BUTTON, 0);
auf
esp_sleep_enable_ext0_wakeup((gpio_num_t) NEXT_BUTTON, 0);

da NEXT_BUTTON == GPIO 4 ist und der RTC mitmacht.

Funktioniert meistens ganz Prima, aber ich habe einen Zustand in dem die Kiste nicht aus dem deepsleep kommt. Ich kann ich diesem Zustand Serial verbinden (cp2012 kommt hoch), aber ich kriege keine Ausgabe in der Konsole.
Die pullups von den pushbuttons sind in dem zustand hochgepullt, ich messe an den Buttons 3.3v
GPIO 17 ist Low (egal was ich drücke)
Playpause button triggert das Blaue LED auf dem Lolin32.

Hat jemand schon mal das Problem gehabt? Oder eine Idee was das sein kann? Oder ist ein Hänger beim ESP normal und zu erwarten? (Habe sehr wenig Erfahrung mit diesem Board).

Nach einem Reboot geht alles wieder prima, bis zum nächsten hänger.

Vielen Dank, Liebe Grüße,

Nico

Moin,

du redest von externen Pullups (also in Hardware), oder?
Weil beim Drehencoder sind die Dinger halt eingebaut und deswegen nicht nochmal zusätzlich notwendig.

Moin! Nein, soweit ich die schematics verstehe sind die GPIOs der buttons im µC hochgepullt, weil als INPUT_PULLUP deklariert sind:

 // Activate internal pullups for all buttons
pinMode(DREHENCODER_BUTTON, INPUT_PULLUP);
pinMode(PAUSEPLAY_BUTTON, INPUT_PULLUP);
pinMode(NEXT_BUTTON, INPUT_PULLUP);
pinMode(PREVIOUS_BUTTON, INPUT_PULLUP);

Im Fehlerfall sind sie immernoch auf 3.3V, d.H. die Internen Pullups sind nicht die Ursache für den Fehler

Ja aber sind sie das auch im Deepsleep?
Schau mal hier: arduino - ESP32 external pin wakeup with internal pullup resistor - Stack Overflow

Guter Tip, werde das mal probieren.
Im deepsleep habe ich die Buttons gemessen und sie sind auf high. Ist auch keine Restladung, da sie nach dem sie betätigt wurden wieder auf high gehen.
Ich werde mal:
rtc_gpio_pullup_en(NEXT_BUTTON);
Vor dem sleep reinschreiben und berichte dann wie es war - danke für den Hinweis!

Danke für den Report. Das ist im Sinne des dynamischen Button-Layouts ein Punkt, den ich übersehen hätte :handshake:

Sehr gerne, es freut mich wenn es Hilft. Heute abend bin ich wieder bei meinem Board und werde die Zeile in den code einfügen und berichte dann was geschehen ist.

Kleines Update, war zu sehr mit der Marslandung observierung beschäftigt :rocket:
Der Freeze ist wärend der tests nicht aufgetreten, allerdings funktioniert nach dem aufwachen der serial port nicht.

Ich bin mit Xubuntu 20.04 und kernel 5.4.0-54-generic unterwegs.
Nach dem aufwachen aus dem deepsleep, bekomme ich das wiederholt in die logs:
cp210x ttyUSB0: failed get req 0x8 size 1 status: -71

Serial monitor will das Gerät nicht öffnen:
minicom: cannot open /dev/ttyUSB0: Input/output error

USB Kabel aus- und einstecken behebt das Problem und ich habe wieder Serial.

Ich bin mit nicht Sicher ob es am ESP liegt oder am cp2012 Treiber den ich verwende, werde noch weitere Tests machen und berichten.

Viele Grüße!