ESP32 HWSerial frisst den Speicher auf

Hallo zusammen,
ich habe eine serielle Verbindung vom ESP32 (GPIO16 und 17) zu einem Raspi ttyS0 über die GPIO's 14 und 15 hergestellt.
Das funktioniert auch hervorragend (nachdem ich blinde Nuss RX und TX gekreutzt habe :o ).
Wenn jetzt aber der Raspi aus ist oder ein Draht von den 3en (GND, RX, TX) in der Luft hängt und der ESP versucht, eine Verbindung herzustellen, liefert ESP.getFreeHeap() alle 5 Sekunden ca. 300 Byte weniger Speicher.
Liegt das evtl am ESP Core weil HWSerial ständig versucht, seinen Partner zu finden.
Bisher hatte ich den ESP über einen SerialToUSB Adapter angeschlossen. HWSerial vom ESP auf USB vom Raspi. Da trat das Problem nicht auf.

Ich werd' noch irre mit dem Zeug.

1 Like

freddy64:
Ich werd' noch irre mit dem Zeug.

Darum habe ich es nicht.

Aber rein von der Logik her:
Wenn der Connect nicht klappt, musst Du den Puffer leeren.

Nachtrag: Das übernimmt beim Ser2USB der Adapter für Dich. Nur um Nachfragen zu vermeiden....

Ahhh, da hängt der Hammer.

Dann ist doch schon das Setup doof.

Serial2.begin(19200, SERIAL_8N1, RXD2, TXD2);

sollte dann wenigstens ein result liefern und es nicht ewig neu versuchen, bis der WD den ESP neu bootet, weil kein Speicher mehr verfügbar.

Jetzt weiß ich aber schon mal, wo ich ansetzen muss.

1 Like

freddy64:
Ahhh, da hängt der Hammer.

Nimm das nur als Ansatz!
Ich mach das rein aus der Logik raus!!!!!

Dann ist doch schon das Setup doof.

Serial2.begin(19200, SERIAL_8N1, RXD2, TXD2);[

sollte dann wenigstens ein result liefern

Nö.

Jetzt weiß ich aber schon mal, wo ich ansetzen muss.

Jo.

Weil ich heute endlich mal auch gestern abhaken kann...:

https://www.arduino.cc/reference/en/language/functions/communication/serial/

Serial2.begin ist void, da geht schon mal nichts.
ABER: bei begin() kann ich einen timeout als Parameter mitgeben.

Das Phänomen tritt nur auf, wenn der Massedraht ab ist. Stecke ich nur RX, TX oder auch beide ab, passiert das nicht. ??????

Wenn der Connect nicht klappt, musst Du den Puffer leeren.

reicht dafür hws.flush() im loop?

1 Like

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.