UART (2 Geräte ansprechen)

Gast
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
Gast
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
Gast
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.
Gast
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
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).
Gast
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
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.
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.