mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 USART an einem Atmel


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Mark E. (mark_e)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der mega32 hat 2x hardware uart ...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark E. wrote:
> der mega32 hat 2x hardware uart ...

Seit wann?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Er meint wohl den ATmega324P.
Das wäre klar die einfachste Lösung.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte ich genannt. 74xx125.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

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.