www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 USART-Geräte an einem Port (Multiplexen)


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich möchte an meinem MSP430 eine RS-232- und eine Infrarot-Schnittstlle
über denselben USART-Port verwenden. Sowas hat bestimmt auch schon
jemand gemacht. Leider werde ich nicht fündig. Kann mir jemand einen
Hinweis geben, wie ich Informationen zu dem Thema finden könnte? Mir
fallen keine besseren Suchbegriffe als 'UART' und 'muliplexen' ein.
Auf einen Software-USART möchte ich lieber verzichten, da dieser nur
Pins belegt, CPU-Ressourcen frisst und die Geräte doch nicht
gleichzeitig benutzt werden.

Bin für jeden Hinweis dankbar.

Gruss

Tom

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Über Logikbausteine kann man ja durchaus die RxD und TxD-leitungen
splitten und verschiedenen Treibern zuführen. Aber du solltest dir ein
zeitfenster einbauen. Jeder Teil (RS232 und IRDA) bekommt jede ms ein
Zeitfenster in dem die Kommunikation stattfindet.

So könnte man die Synchronisation machen.

MW

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du willst die Geräte also nicht quasi-gleichzeitig betreiben?!
Dann solltest du dir mal die CMOS-Bausteine 4051, 4052 und 4053
angucken.
Das sind Multiplexer unterschiedlicher Anzahl an Ein- und Ausgängen.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Analogmultiplexer sind hierfür gar nicht erforderlich, da genügt ein
normaler Digitalmultiplexer wie beispielsweise der '257*, der vier
zwei-zu-eins Multiplexer in einem Gehäuse enthält.

*) http://focus.ti.com/lit/ds/symlink/sn74ls257b.pdf

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die kann man aber auch dafür benutzen...

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cool, genau sowas habe ich gesucht. Ich dachte nicht, dass es so einfach
ist.

Wenn ich die Schnittstellen nun doch quasi-gleichzeitig betreiben will
und beiden ein fixes Zeitfenster zuordne, dann gehen aber die
ankommenden Daten verlohren, wenn mein uC gerade an der anderen
Schnittstelle lauscht. Oder muss ich die Umschalt-Frequenz einfach
höher schalten als die Übertragungsfrequenz, damit die Übertragung
zuverlässig funktioniert?

 1s / (2 x 9600 bit/s) = 50us

Ein Timer invertiert den Selektier-Ausgang alle 50us und die
Empfangs-Routine verteilt die Daten je nach Zustand des
Selektier-Ausgangs auf zwei Ring-Buffer.

Ist das so richtig?

Vielen Dank!

Tom

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.

   "Wenn ich die Schnittstellen nun doch quasi-gleichzeitig
   betreiben will und beiden ein fixes Zeitfenster zuordne,
   dann gehen aber die ankommenden Daten verlohren,
   wenn mein uC gerade an der anderen Schnittstelle lauscht."

Ja, so ist es. Mit Erhöhen der Umschaltgeschwindigkeit garantierst Du
sogar, daß die ankommenden Daten beider Schnittstellen verloren gehen -
das geht so nicht. Nicht mit einer Hardware-UART.

Allenfalls eine Modifikation einer Software-UART, ähnlich der von Dir
beschriebenen Aufteilung könnte funktionieren, nur muss die
Umschaltfrequenz erheblich höher sein. Eine UART tastet den
Empfangsdateneingang üblicherweise mit der sechszehnfachen Baudrate ab;
Du müsstest also mit der 32fachen Baudrate umschalten ...
Beim Senden müsstest Du das Ausgangssignal auf zwei Latches legen,
zwischen denen Du hin- und herschaltest; hier würde theoretisch eine
langsamere Umschaltzeit genügen.

Ob das allerdings sinnvoll ist, wage ich zu bezweifeln.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre es nicht sinnvoller, den Empfangsteil einer UART per Softwar
nachzubilden, und nur das Sendesignal umzuschalten?
Ob ich nun einen Multiplexer an beiden Pins "quäle", oder den Aufwand
betreibe, 10-11 Bits mit zwei Interrupt-Routinen und einem Timer zu
empfangen, kommt für mich aufs gleiche hinaus, wenn die zweite Variante
nicht sogar einfacher ist.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, an die Hardwarelogik beim Empfang hab' ich nicht gedacht. Ist ja
eigentlich logisch, dass man die mit meiner Idee aus dem Tritt bringt.
Ich werde wohl nur die nicht-gleichzeitige Variante ausprobieren oder
halt einen RS232-IRDA-Adapter basteln, den ich bei Bedarf als 'Kabel'
verwenden kann. Danke für eure Hilfe!

Peace

Tom

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.