Hallo zusammen, gibt es einen einfachen Weg (=IC) ein serielles TTL Signal Single Wire (ein-Draht-Verbindung für RX und TX) zu invertieren. Ich habe das Problem das der SAMD21 Cortex M0+ beim SoftwareSerial im Single Wire Mode nicht invertieren kann, also muss eine Hardwarelösung her. :(
Wenn es TTL ist und keine echten RS232 Pegel, dann geht ein NOT Gatter.
Ja, nur das funktioniert eben beim XIAO ATSAMD21G18A-MU nicht darum brauche ich eine alternative Hardwareergänzung
Normaler UART (TX und RX), normales 2x NOT, danach den RX und TX Zweig via Diode und Widerstand verschalten (also 2 Draht -> 1 Draht extern).
Arno W. schrieb: > ....gibt es NOT GATTER auch bi-direktional Verdammt, das mit dem einen Draht hatte ich übersehen. Aber gut, es kann ja immer nur eine Quelle die Leitung treiben. Und da gibt es schon Schaltungen die bidirektional funktionieren. In Spannungsübersetzern sind die drinnen. https://www.ti.com/lit/gpn/TXB0102 Nur das selber zu bauen und um zwei NOT Gatter zu erweitern ist eher eine große Baustelle. Ist denn wenigstens ein weiterer Pin als Ausgang verfügbar? Dann könnte man ein Gatter verwenden mit enable Eingang dessen Ausgang man also hochohmig schalten kann.
:
Bearbeitet durch User
Gustl B. schrieb: > Aber gut, es kann ja immer nur eine Quelle die Leitung treiben. Du hast wired-or nicht verstanden. Bei CAN, LIN oder 1-wire sind mehrere Datenquellen auf einer Leitung (Bus) sogar zum Prinzip erhoben. Man spricht dann von dominantem und rezessivem Pegel. Um das friedliche Miteinander kümmert sich das Protokoll.
Wenn es nicht umschaltbar sein soll, ist es nicht schwer: Inverter vor RX und ein P-Channel mit pull-down bei TX, dann zusammen.
Arno W. schrieb: > Ich habe das Problem das der SAMD21 Cortex M0+ beim SoftwareSerial > im Single Wire Mode nicht invertieren kann, also muss eine > Hardwarelösung her. :( Und die soll genau was machen? Was ist der rezessive Pegel jeweils auf den beiden Teilnehmerseiten?
Wolfgang schrieb: > Und die soll genau was machen? SingleWire Half-Duplex mit invertierten Pegeln: 0V == inactive Beispiel: S.Port im RC-Modellbau
:
Bearbeitet durch User
Arno W. schrieb: > gibt es einen einfachen Weg (=IC) ein serielles TTL Signal Single > Wire (ein-Draht-Verbindung für RX und TX) zu invertieren. Nein. > Ich habe das > Problem das der SAMD21 Cortex M0+ beim SoftwareSerial im Single Wire > Mode nicht invertieren kann, also muss eine Hardwarelösung her. :( Das ist gleich doppelt Blödsinn. Denn natürlich wäre es trivial, den Pegel bei Verwendung einer Soft-UART zu invertieren. Es geht aber nicht. Der Witz bei singe-wire UART ist ja, daß TxD ein open-collector (bzw. open-drain) Ausgang ist. Damit die Gegenseite auch senden kann, muß der passive (rezessive) Pegel H sein. Realisiert durch einen Pullup-Widerstand. Im Prinzip könnte man das mit invertiertem Pegel mit einem Pulldown und einem PNP open-collector Ausgang machen. Hat ein µC aber nicht. Und extern läßt sich das nur dann nachrüsten, wenn man getrennte Sende- und Empfangspins hat.
Dann muss man eben den zweiten Pin opfern. Man will doch nicht etwa 2 SAMD21 miteinander verbinden, sondern einen mit so einem S.Port? Also kann man ein total normales UART benutzen und TX mit einem PNP/P-Kanal invertieren. RX kann der SAM wahrscheinlich intern invertieren.
Wilhelm M. schrieb: > Wolfgang schrieb: >> Und die soll genau was machen? > > SingleWire Half-Duplex mit invertierten Pegeln: 0V == inactive > > Beispiel: S.Port im RC-Modellbau Ja es ist genau dafür! :)
Oder man klemmt einen ATtiny13a o.ä. dawzischen. Der übersetzt dir das Signal in beide Richtungen. Damit wird der Bus entkoppelt. Vorsicht mit dem PullUp/Down. Wenn idle auf 0V ist, gehen ich von einem PullDown aus. Die 0V darf dann nicht aktiv auf den Pin gelegt werden, sonst kann es zu einem Kurzschluss kommen.
:
Bearbeitet durch User
Vielen Dank für die offene Diskussion. Ich habe die Library von SoftwareSerial angepasst (Halfduplex inverted)) und es funktioniert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.