Arduino: Softserial - TX-Pin recyclen?

OP (Firma: Q3) #7181657
Ich habe ein Projekt mit Wemos D1 Mini, bei dem die IO-Pins knapp 
werden. U.a. liefert ein GPS-Chip über Softserial Daten. Da benötige ich 
eigentlich nur die RX-Leitung am ESP.

Kann ich die zugehörige TX-Leitung einfach mit digitalWrite für andere 
Zwecke verwenden, oder stört das irgendwelche internen Prozesse in der 
SoftSerial-Lib?
Gast #7181725
Frank E. schrieb:
> oder stört das irgendwelche internen Prozesse in der
> SoftSerial-Lib?

Du könntest in deren Quelltext nachsehen, was die mit dem Pin 
anstellt. Und Du könntest Dir eine Variante davon basteln, die erst gar 
keine Sendefunktionen enthält, um auf Nummer Sicher zu gehen.
Gast #7181996
Frank E. schrieb:
> Kann ich die zugehörige TX-Leitung einfach mit digitalWrite
> für andere Zwecke verwenden

Vermutlich wird das klappen. Du kannst auch versuchen für TX entweder 
denselben Pin wie für RX oder -1 anzugeben; zumindest manche SW-Serial 
Libs unterstützen auf diese Art halbduplex-Verbindungen und solange Du 
dann nichts sendest kannst Du eben Daten empfangen.
OP (Firma: Q3) #7185223
Die Frage hat sich zum Positiven klären lassen!

Weil die Arduino-Standard-Lib "SoftSerial" den WLAN-Betrieb des ESP8266 
stört, habe ich nach einer speziellen Version für diesen Chip gesucht 
und gefunden:

https://github.com/plerup/espsoftwareserial

Beim Durchsehen des Sourcecodes entdeckte ich dann auch die Methode 
"void SoftSerial.disableTX(boolean)", die genau tut, was man erwartet. 
Es gibt übrigens auch eine entsprechende Methode für RX, falls man 
einfach nur senden möchte.

Man muss zwar im Constructor trotzdem zwei Pins abgeben, aber für den 
jeweils nich tbenötigten wird z.B. 0 akzeptiert. Beispiel (Parameter 
RX-Pin, TX-Pin, invertierte Logik, Puffergröße):

SoftwareSerial mySerial1(13,0,false,128); mySerial1.disableTX(true);
SoftwareSerial mySerial2(14,0,false,128); mySerial2.disableTX(true);
SoftwareSerial mySerial3(15,0,false,128); mySerial3.disableTX(true);
usw. ...

Bei der Deklaration kann man dann z.B. einfach die entsprechenden RX- 
bzw. TX-Pins in Einer-Schritten direkt nebeneinander definieren ... 
funzt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.