Hi, ich würde gerne 2 UART Quellen an nur einem ATMEGA32L Hardware UART betreiben. Senden darf immer nur einer, und steuern will ich das ganze durch I/0 Pins des ATMEGA32L und einer Flusskontrolle. Bei den beiden Quellen handelt es sich um, den Ethernet-Wandler XPORT Direct von Lantronix und um einen FTDI. Beide haben die typischen Steuerleitungen DTR und DSR und müssten doch somit vom uC aus- bzw.- eingeschaltet werden können. Was mich noch zwickt ist, ob ich durch Diode bei den beiden zusammenlaufenden RX- und TX Leitungen der beiden Schnittstellen einen Stromrückfluss in den Ausgang des jeweilig nichtsendenen Gerätes verhindern kann und gleichzeitig mein Signalpegel noch so hoch ist dass mein Hardware USART die Bitfolgen erkennt. Ich hoffe das habe ich jetzt einigermassen verstänflich ausgedrückt. Danke im Voraus
> Was mich noch zwickt ist, ob ich durch Diode bei den > beiden zusammenlaufenden RX- und TX Leitungen der beiden Schnittstellen > einen Stromrückfluss in den Ausgang des jeweilig nichtsendenen Gerätes > verhindern kann und gleichzeitig mein Signalpegel noch so hoch ist dass > mein Hardware USART die Bitfolgen erkennt. Spendier Dir einen 74xx125, verdrahte die Enable-Leitungen zweier Treiberstufen darin mit den Steuerleitungen an FT232/XPORT. Beide können prinzipiell auch dann Daten senden, wenn ihnen dieses per Hardware-Handshake untersagt wird - im Falle des FT232 ist das eine Frage der Ansteuerung auf PC-Seite, wenn die kein Hardwarehandshake verwendet, wird der Pegel an den entsprechenden Eingängen schlicht ignoriert. Mit einem Tristate-Treiber für jedes der seriellen Datensignale gehst Du auf Nummer Sicher.
> der mega32 hat 2x hardware uart ... >>Seit wann? Würde ich auch gerne wissen. Zum Thema Dioden: Da die UART-RX Leitung Low-Aktiv ist, kann man diese über einen PullUp Widerstand von 4k7 an Vcc schalten und die beiden TX-Leitungen der Adapter über je eine Diode 1N4148 mit der Anode an die RX-Leitung zusammenschalten. Die TX-Leitung des Controllers kann man über einen Multiplexer oder über NAND-Gatter an die Adapter anschalten.
Wenn man schon Tx multiplext, kann man das auch für Rx machen. Auch kein grosser Unterschied Wenn man jedoch 2 Pins für die Steuerung frei hat, kann man die Tx-Leitung mit je einem Serienwiderstand an die Empfänger hängen und mit dem entsprechenden Controller-Pin ggf. auf 1 festnageln. Software-UART nur für Tx wäre aber auch zu bedenken, ist als Tx-only völlig harmlos.
>Mit einem Tristate-Treiber für jedes der seriellen >Datensignale gehst Du auf Nummer Sicher. Was wäre denn da so ein passender IC ? Kenn mich da nicht aus.
>Wenn Hardwarehandshake verwendet wird, dann aktiviert das Terminal zuerst >die
RTS-Leitung (request to send - darf ich senden?) und fragt damit beim >Modem an,
ob es bereit ist Daten zu empfangen. Wenn das Modem bereit ist, >aktiviert es nun
seinerseits die CTS-Leitung (clear to send - bin >bereit). Erst nun sendet der
Sender auf der TXD-Datenleitung asynchron >das oben beschriebene Datenbyte mit
Start- und Stoppbits.
Das heisst für ich soviel wie.
1.) Gebe ich entweder dem FTDI oder dem Lantronix auf sein RTS, dass an
einem uC Port geckeckt wird, kein CTS, von einem anderen uC Pin zurück,
dann sendet er auch nicht. Dann muss ich nochmal eine Leitung des uC
spendieren, die dann den jeweiligen Port durch die Enable Leitung am
74XX125 aktiviert. Das wären dann Pro externer USART Quelle 3
Steuerleitungen. VErstehe ich das richtig
oder man nehme halt für einen der beiden Kameraden ne Software UART, ist für meine Begriffe da die elegantere Lösung. Legt man die SoftUART auf nen Int-Pin, z.B. INT0 kann man dann auch schön eventbasierend proggen.
> Das heisst für ich soviel wie. > > 1.) Gebe ich entweder dem FTDI oder dem Lantronix auf sein RTS, dass an > einem uC Port geckeckt wird, kein CTS, von einem anderen uC Pin zurück, > dann sendet er auch nicht. Dann muss ich nochmal eine Leitung des uC > spendieren, die dann den jeweiligen Port durch die Enable Leitung am > 74XX125 aktiviert. Das wären dann Pro externer USART Quelle 3 > Steuerleitungen. VErstehe ich das richtig Nein, glücklicherweise verstehst Du das nicht richtig. Du benötigst insgesamt zwei Ausgänge und einen Eingang am µC, der Eingang ist RXD. Dasselbe Signal, das einer der Datenquellen mitteilt, daß sie senden darf (CTS aus Sicht des µC), wird auch als Steuersignal für den Tristate-Treiber verwendet. Du musst nur gegebenenfalls die Polarität mit einem 74xx04 anpassen. Du musst nur mit Deiner Software sicherstellen, daß nur genau eine dieser Leitungen zu einem gegebenen Zeitpunkt aktiv ist, sonst würden beide Tristatetreiber gleichzeitig aktiv werden, was zu einem Kurzschluss führt.
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.