Forum: Mikrocontroller und Digitale Elektronik IC's ohne TriState zusammenschalten..


von excelsior (Gast)


Lesenswert?

Hi Leute, ich habe folgendes Problem:

Ich habe zwei µC's auf einem Board, die über eine simple USART
miteinander kommunizieren sollen.

Dazu sind Rx / Tx direkt miteinander verbunden.

Jetzt möchte ich aber, daß ich von einem PC aus mit dem Com-Port mich
in die Kommunikation der beiden µC's "einmischen" kann.

Somit wandel ich die RS-232 Signale mit einem MAX232 erstmal in
TTL-Signale. Die Frage ist nun, kann ich die Ein- und Ausgänge des
MAX232 einfach parallel an die beiden Rx / Tx der µC's "klemmen" ?

Oder gibt es da elektrische Probleme?! Ich habe mal gehört das man
Ausgänge von TTL-Ic's nicht ohne weiteres zusammenschalten darf
(ausser TriState).

Danke!

von SiO2 (Gast)


Lesenswert?

Naja, dürfen tut man schon, nur gehts dann putt. Frage: Was soll das
bringen? Ne möglichkeit wäre, du nimmst 2 bidirektionale treiber, die
du mit dem Rechner steuern kannst.

von Anton (Gast)


Lesenswert?

Hallo!

Dann mach an die Ausgänge des MAX232 je einen Komparator mit
Pull-up-Widerstand hin (z.B. LM33), dann kannst Du sie parallel
schalten.

von Gerhard Gunzelmann (Gast)


Lesenswert?

Hallo

zwei "Sender", also 2 Ausgänge dürfen nicht aufeinander geschaltet
werden. Lösung für das Problem gibts mehrere.
1. Die beiden uC werden z.B. über SPI miteinander verbunden, statt mit
UART. dann ist die UART frei für den PC. Oder man verwendet uC mit 2
UART'S
2. Wenn beides wie beschrieben üer UART laufen soll, dann ist zu
überlegen, obs vielleicht einen Master geben kann, der einen
Multiplexer steuert und damit gezielt Verbindungen herstellt.
3. gibts die Möglichkeit eben Tristate-treiber oder
Open-Collector-Treiber dazwischenzuschalten.

Aber wirklich sauber ist nur Ansatz 1.

Gerhard

von Christoph Kessler (Gast)


Lesenswert?

oder einen Widerstand in Serie zu den Ausgängen

von Michael Wilhelm (Gast)


Lesenswert?

Na ja,
PC -> Rx1
Tx1 -> Rx2
Tx2 -> PC

In diesem Fall must du im Datum auch kennzeichnen, welcher Controller
angesprochen werden soll.

MW

von Bob (Gast)


Lesenswert?

Servus Excellsi,
hatte bei meiner Diplomarbeit ein ähnliches Problem.
Muss mich im wesentlcihen der Argumentation von Gerhard anschließen.
Ich hatte in meinem System einen Master und mehrere Slaves in einer Art
Netzwerk. Dies wurde über UART mit RS485 realisiert. Dennoch wollte ich,
dass der Master mit dem PC kommunizieren konnte. Die Lösung war, dass
ich einen Switch dazwischen geschaltet habe (ich glaube CMOS4051) und
dann entsprechend auf Pegelwandler RS485 bzw. auf den MAX232 gegangen
bin.
Nun war die Frage, wie schalte ich den Switch?
Im Normalfall findet immer eine Kommunikation über RS485 statt, d.h.
Netzwerk-intern. Da der MAX232 über zwei PEgelwandler verfügt, habe ich
mich entschlossen Hardware-Handshake über RTS/CTS zu realisieren, d.h.
möchte der angeschlossene PC mit dem MAster komm. so meldet er sich
über RTS am MAster an. Wenn dieser bereit ist Daten zu empfangen/senden
(in PC-Richtung), so schaltet dieser den Switch.
Etc., etc.
Falls du es genau wissen möchtest, kann ich dir auch die betreffende
Passage (Word-Dokument) senden.
Gruß Bob

von excelsior (Gast)


Lesenswert?

ok, Danke schonmal für die Antworten.

Leider habe ich wenig Platz auf meinem Layout, weshalb zwei Treiber
nicht in Frage kommen.

@Bob:

Deine Lösung finde ich wirklich interessant! Habe auch schon überlegt
mit CTS usw.. zu arbeiten. Kannst Du mir die Unterlagen vielleicht
schicken?? (Funktioniert das ganze auch noch mit 115 kbps?)

Danke

(excelsior2000@gmx.de)

von TravelRec. (Gast)


Lesenswert?

Man kann auch für die TXDs je ein npn-pnp Transistorpäärchen, die
hintereinander geschaltet sind (als nichtinvertierendender Puffer) und
auf einen gemeinsamen PullDown-Widerstand gehen. Jeder TXD kann dann
senden auf die am PullDown angeschlossenen RXDs, ohne daß ´was kaputt
geht. Man muß nur sicherstellen, daß nicht beide TXDs zur selben Zeit
senden, da es dann zu Bitmüll kommt. Das kann dann der jeweilige Master
überprüfen, indem er vor dem beabsichtigten Datentransfer die
RXD-Leitung prüft, ob er darf, oder vom gerade sendenden Element ein
Freigabe-Byte erhält. Rein Schltungstechnisch wird das sehr klein
aufzubauen sein (4 Transen und 7 Widerstände)

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
Noch kein Account? Hier anmelden.