Forum: Mikrocontroller und Digitale Elektronik RS232 TTL Muliplexer


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Olli Z. (z80freak)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe einen Aufbau bei dem mehrere Module von einem kleinen 
Attiny/Atmega angesteuert werden müssen. Die Kommunikation geht dabei 
immer vom Atmega aus und arbeitet mit einer sehr niedrigen Baudrate 
(max. 2400). Der von mir favorisierte Atmega hat nur einen UAR. Wie 
könnte ich die RX/TX so multiplexen das ich damit mehrere Geräte 
abfragen kann?

Ich dachte da an sowas wie einen einfachen 74er Baustein, welcher einen 
2- oder 3-Bit Binäreingang hat und ein digitales Eingangssignal auf den 
jeweiligen Ausgang schaltet. So sollte immer nur ein Sender aktiv sein. 
Das ganze natürlich entsprechend der RX und TX Richtung.

Hat sowas schonmal jemand realisiert und kann mir einen Tipp geben 
welche Logic-ICs hier am besten geeignet sind und ob ich das so 
überhaupt hinbekommen kann?

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Olli Z. schrieb:
> Die Kommunikation geht dabei
> immer vom Atmega aus und arbeitet mit einer sehr niedrigen Baudrate
> (max. 2400). Der von mir favorisierte Atmega hat nur einen UAR.

So niedrige Baudraten kann mann auch in Software regeln, z.B. mit einem 
Timer. Hier dürfte selbst mit Atmega mehr als 1 Software UART möglich 
sein - bei intelligenter Programmierung versteht sich.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Olli Z. schrieb:
> So sollte immer nur ein Sender aktiv sein.
> Das ganze natürlich entsprechend der RX und TX Richtung.

Äh, UART kann man ver- AND- en, wenn sichergestellt ist das nur ein 
Gerät sendet. Also entweder 74xx AND oder einfach 1 Widerstand + 1 Diode 
pro TX.

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Olli Z. schrieb:
> Hat sowas schonmal jemand realisiert und kann mir einen Tipp geben
> welche Logic-ICs hier am besten geeignet sind und ob ich das so
> überhaupt hinbekommen kann?

MAN kann das natürlich hinbekommen. Für den Sender z.B. kann man einen 
74xx138 verwenden und damit 8 TxD-Ausgänge ansteuern. Es gibt aber viele 
Möglichkeiten, das wird wohl ein langer Thread.

Georg

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Einen TxD Ausgang auf 4 oder 8 Leitungen umschalten geht mit dem 74138 
bzw. einem halben 74139. Das TxD auf den /E  Eingang geben; einen 
Ausgang mittels A01[2] selektieren unn fertsch.

Gruss
WK

Edit: huups - zu langsam.

: Bearbeitet durch User
von Christian M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Olli Z. schrieb:
> Die Kommunikation geht dabei
> immer vom Atmega aus

Olli Z. schrieb:
> RX und TX Richtung

Was jetzt, Unidirektional oder Bidirektional?

Du könntest es softwaremässig lösen, dass Du zuerst ein Gerätenummer 
oder so sendest. Irgendein Protokoll brauchst Du ja sowieso! Und den RX

Jim M. schrieb:
> kann man ver- AND- en

Gruss Chregu

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Ja, geht problemlos.
Wenn Rx und Tx getrennt Multiplex werden, kannst Du den Durchsatz etwas 
erhöhen, indem Du schon den nächsten anfragst, während der erste noch 
antwortet. Dann aber Anfrage erst beenden, wenn die Antwort fertig ist.

Ich würde trotzdem auch dringend ein Busprotokoll und parallele 
Leitungen empfehlen.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Für den Sender z.B. kann man einen 74xx138 verwenden und damit
> 8 TxD-Ausgänge ansteuern.

Um die Sendeseite des Master-µC bräuchte man sich gar keine Gedanken zu 
machen, falls vom Master jeweils eine Adresse mit gesendet wird und dann 
jedes Modul selber weiss, ob es gemeint ist.

Ohne mehr über die Module zu wissen, kann man allerdings wohl nur die 
allgemeine Multiplexer-Demultiplexer-Lösung nehmen.

von Olli Z. (z80freak)


Bewertung
0 lesenswert
nicht lesenswert
Wow, erstmal vielen Dank für die rege Beteiligung!

Ich sollte erwähnen das ich auf das Serialprotokoll der Module keinen 
Einfluß habe. Von daher ist die Bus-Idee mit eigenem Protokoll leider 
nicht umsetzbar.

An den Einsatz von UND-Gattern hatte ich zu Anfang getestet. Das Problem 
war dabei nur, das die UND-Gatter immer einen Ausgangspegel haben. Damit 
wäre ein inaktives Modul, welches am Ausgang des UND ein LOW abgibt, 
dominanter als ein aktives welches ein HIGH ausgeben möchte. Somit 
müsste ich dann nochmal alle UND-Ausgänge wieder verODERn.

Daher ging ich in Richtung Multiplexing. Damit ist sichergestellt das 
jeweils nur ein Gerät mit dem Atmega verbunden ist und diese sich nicht 
gegenseitig stören können. Natürlich muss die TX gemultiplexed und die 
RX gedemultiplexed (uah, furchtbares Denglisch ;-) werden.

Als Alternative zum Multiplex-Verfahren könnte man vielleicht auch ein 
Tri-State-Gate vor RX/TX eines jeden Moduls setzen? Dabei bräuchte man 
ggf. einen BCD-zu-Dezimal Dekoder mehr um nicht so viele Ports als 
EN-Leitungen zu verbraten.

Mit "Unidirektional" meinte ich den Kommunikationsstart. Zwar würden die 
Module ggf. selbst Daten senden wollen, aber das ignoriere ich. Durch 
einstellen der RTS/CTS Signale sollte es gelingen das diese erst senden 
wenn sie "dran" sind. Wenn dabei dann einzelne Pakete flöten gehen wg. 
Bufferüberlauf ist das kein Beinbruch in meinem Fall.

Richtig sauber wäre natürlich jeweils noch einen FIFO-Puffer vor die 
serielle der Module zu klemmen. Aber ich glaube das ist nicht notwendig.

von chris (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ganz traditionell 4x 4051b je rs232/485/422/TTL/lin/i2c/SPI/ICP/ADC.
bei 16x mux.
Eingang Dwarf, Ausgang Pmod, das erklärt auch die 4x anstelle von 2-3x .

von Kurt B. (kurt-b)


Bewertung
0 lesenswert
nicht lesenswert
Olli Z. schrieb:
> Wow, erstmal vielen Dank für die rege Beteiligung!
>
> Ich sollte erwähnen das ich auf das Serialprotokoll der Module keinen
> Einfluß habe. Von daher ist die Bus-Idee mit eigenem Protokoll leider
> nicht umsetzbar.
>

Machs dir halt ganz einfach, nimm drei Transistoren und ziehe mit 
jeweils zweien von ihnen die beiden nichtgewünschten Kanäle/Signale 
gegen Masse weg.

Drei Entkoppeldioden, drei Transistoren (können z.B. BS170 sein), und 
ev. noch drei Längswiderstände in den Signalpfaden.

 Kurt

von Olli Z. (z80freak)


Bewertung
0 lesenswert
nicht lesenswert
Ich glaube fast, das ein 4052 oder zwei 4051er wohl genau das ist was 
ich suche...

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]
  • [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.