Forum: Mikrocontroller und Digitale Elektronik UART (2 Geräte ansprechen)


von PAT (Gast)


Lesenswert?

Hallo,

ich habe nur noch von meinem uC 1 UART-PORT frei und möchte über diesem 
Port mit 2 Geräte kommunizieren?
wie geht das denn? (biete auch mit Schaltung wenn Möglich)

MfG

von Azrael (Gast)


Lesenswert?

musst du tatsächlich gleichzeitig mit beiden kommunizieren, oder reichts 
wenn du einmal mit dem einen, und dann mit dem anderen redest?

dann könnstest du einfach die tx-leitung muxen(multiplexing, wenn du 
danach googlen möchtest)

wenn du tatsächlich mit beiden gleichzeitig reden musst, ev. eine 
port-erweiterung, mir fällt gerade keine echt-dau-fähige lösung ein bis 
auf eine software-uart zu bauen.

ev. einen zweiten uC nehmen, oder einfach einen größeren uC nehmen

lg Azrael

von PAT (Gast)


Lesenswert?

Hallo,

ich will nicht gleichzeitig mit den beiden Geräten Kommuzieren!
ich habe mir ein Art arbitrierung gedacht, (dh im Zustand 0 ist der 
einer Dran und im Zustand 1 dann der anderer!)

freue mich auf jede Hilfe

MfG

von gast (Gast)


Lesenswert?

du kannst mit dem 9. Bit (Parity) ein Adressbit basteln, also wenn dies 
gesetzt ist, überträgst du eine Geräteadresse. Das ganze funktioniert 
natürlich nur, wenn du die beiden anderen Geräte dementsprechend 
programmieren kannst.

von PAT (Gast)


Lesenswert?

Hallo,

Also was meinst du KONKRETT!
SO:--> ich will der 1 UART-PORT der mir noch bleibt 1x mal als Normal 
UART-PORT betreiben und ein anderes mal an ein USB anschließen.

so daß der Anwender die beide Option über diesem einzigen PORT hat!

MfG

von Alexander L. (lippi2000)


Lesenswert?

Die einzige Möglichkeit 2 Geräte zu bedienen ist eine Umschaltung 
mittels MUX. 2:1 MUX an RX und an TX anschalten und mit einer Leitung 
steuern. Ansosnten versaust du dir die Pegel und die Kommunikation ist 
hin. (Pegel,Puffer,...) Alles andere ist a) zu aufwendig und b) eine 
Misshandlung der Schnittstelle.

Die MUX-Variante (2 mal 2:1) kommt gerade mal mit 2 zusätzlichen IC's 
aus (z.B. 1x74LS157 und 1xMAX232 für die Pegel falls du es brauchst).

von Alexander (Gast)


Lesenswert?

Servus,

Wenn Du nur eine unidirektionale Kommunikation benötigst, ist das ganze 
recht einfach, indem Du irgendein Bit als Adressbit nutzt.

Wenn Du eine bidirektionale Kommunikation benötigst, sollten die 
TX-Leitungen der Empfänger als Open Drain Ausgänge ausgelegt werden, 
denn sonst ziehen die sich gegenzeitig die Signale kaputt.

Es gibt schon fertige Open Drain Treiber für solche Anwendungen, such 
mal nach 74LVC1G07.

Gruß

Alexander

von Alexander L. (lippi2000)


Lesenswert?

Vom Prinzip her geht das natürlich. Da kann man auch 2 Bytes schicken 
1.Byte = Adresse und 2.Byte = Daten.

Doch vorsicht, keine Flusssteuerung und Fehlererkennung möglich und 
Werte zurückgeben geht auch nicht, was du ja sicherlich bei nem USB 
machen möchtest.

von Andreas R. (rebirama)


Lesenswert?

Hatte das Problem auch schon mal, nach etwas Überlegen bin ich mit 2 
zusätlichen Pins und 2 Widerständen ausgekommen:
                   _
       UART_out-o-|___|-------o--- Out1
                |             |
                |  _        |
                '-|___|--o----)--- Out2
                         |    |
                         |    |
           Pin1----------'    |
                              |
           Pin2---------------'

Über die Konfiguration der Pins (hochohmig/niederohmig) lässt sich 
festlegen welcher out angesprochen werden soll (oder sogar beide)
Beim Empfang musst du dir auch noch was einfallen lassen.

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.