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
Ü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
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.
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
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
. "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.
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.
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
Leider wurde die Frage noch nicht ganz beantwortet... Anforderung an den Rx-Pin: 2:1-Multiplexer Tx-Pin: dominant, wenn Kanal deaktiviert Die 'Endstufe' des Tx-Multiplexers ist als ein Oder-Gatter (+). Tx1 = Tx + Disable1 Tx2 = Tx + Disable2 So allgemein ließe sich auch noch ein Broadcast realisieren (wenn wie in meinem Fall mehrere ADC per isolierter UART angesteuert werden). Viele Isolationsbausteine verfügen zudem über einen Enable-Pin, der sich alternativ nutzen und mit dem sich nebenbei noch Strom sparen lässt.
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.