mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Entkoppeln


Autor: dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo jungs,

ich habe ein kleines problem und habe wohl mommentan ein brett vor dem 
kopf,
ich habe 3 Atmegas die alle auf uart verbunden sind zweck komunikation, 
logisch soweit, aber jetzt die frage wo genau und welche diode 
verwenden, zum entkoppeln der jeweiligen uart´s.

ueber eine beispiel zeichnung wuerde ich mich freuen, doktor GOOGLE gibt 
mir da nicht die richtigen antworten zu.

danke,
dietmar

Autor: Florian W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Drei UARTs miteinander und dann entkoppeln? Was soll das werden, ein 
Bus?

Spontan fällt mir höchstens ein wire-AND ein. Das heißt von jedem Sender 
eine Diode auf den Bus und an den Bus ein Pullup. Das geht dann in 
Richtung TWI. Letzteres wäre höschtwahrscheinlich sowieso deutlich 
einfacher, denn bei deiner UART Variante fehlt dir die Collision 
detection, das heißt es kann passieren, dass mehrere gleichzeitig senden 
wollen und dann kommt auf den Bus nur noch Müll und du merkst es evtl 
noch nicht mal.

Oder soll das eine Art Ring-Topologie werden? Das kostet dann aber 
unnötig viel CPU Zeit, weil die Daten durch alle Zwischenstationen 
durchgereicht werden müssen.

Wie üblich brauchts hier mehr Input...

Autor: dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo danke schon mal fuer deine antwort,

erstmal nein es soll rein ring werden,

ich habe einen sogenanten master atmega und 2 slave atmega die beiden 
liegen parallel am uart, ohne ss pin, das mit dem sprechen ist ok weil 
es spricht nur der der gefragt wird, ist halt wie ein bus, nur die 
entfernung ist nur 5 cm und deshalb will ich keinen 485 auf bauen, ich 
muss nur halt die 2 atmegas entkoppeln, aber das ist es gerade, da habe 
ich ein brett vor dem kopf.

aber ueber weitere hilfe wuerde ich mich freuen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dietmar schrieb:
> hallo danke schon mal fuer deine antwort,
>
> erstmal nein es soll rein ring werden,

Von Ring war auch nicht die Rede :-)

> ich habe einen sogenanten master atmega und 2 slave atmega die beiden
> liegen parallel am uart, ohne ss pin, das mit dem sprechen ist ok weil
> es spricht nur der der gefragt wird,

OK.

Tx Ausgang vom Master an die Rx Eingänge der Slaves.
Tx Ausgänge der Slaves über je eine Diode und hinter der Diode 
zusammenschliessen und an den Rx Eingang vom Master

Spricht der Master, dann kriegen das alle Slaves mit
Antwortet ein Slave, so kann der die Leitung (wegen der Dioden) auf High 
ziehen, ohne dass der andere Slave einen Kollaps kriegt.
Sprechen beide Slaves gleichzeitig, so gibt es Datensalat

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> erstmal nein es soll rein ring werden, ...
> :
> ich habe einen sogenanten master atmega und 2 slave atmega die beiden
> liegen parallel am uart, ...
Wie sieht denn dieser Ring aus?
Mir scheint das eher ein Stern zu sein... :-/

Ein Ring wäre sowas:
 .---- rx uC1 tx ------- rx uC2 tx ------- rx uC3 tx ------.
 |                                                         |
 '---------------------------------------------------------'

Autor: Florian W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@lkmiller: Richtig, deine Zeichnung ist der Ring, den ich in Erwägung 
zog.

Nach dem zweiten Post von dietmar ist auch klar, dass es so was nicht 
sein soll, zur Zeit meiner Antwort (also nach dietmars erstem Post) war 
das zumindest für mich noch nicht klar.

@kbuchegg: Da das serielle Protokoll der UARTs als Idle einen High-Pegel 
aufweist, müssten die Dioden meiner Meinung nach in Richtung Slave 
gehen. Das heißt der Master hat an seinem Rx den Pull-Up aktiviert und 
die beiden Slave können über jeweils eine Diode diesen Eingang auf Masse 
ziehen (=wire-AND).
Deine Variante wäre ein wire-OR, was wg dem High als Idle Pegel nicht 
funktionieren würde.

Autor: TK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meinst Du dann evtl. sowas hier??

www.ibkirchen.de/zipliste/wissen/rs232mul.html


Gruß
TK

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian W. schrieb:
> @lkmiller: Richtig, deine Zeichnung ist der Ring, den ich in Erwägung
> zog.
>
> Nach dem zweiten Post von dietmar ist auch klar, dass es so was *nicht*
> sein soll, zur Zeit meiner Antwort (also nach dietmars erstem Post) war
> das zumindest für mich noch nicht klar.
>
> @kbuchegg: Da das serielle Protokoll der UARTs als Idle einen High-Pegel
> aufweist,

aber nur, wenn du die komplette RS232 mit den 12V Pegeln benutzt:-)

Wenn du 5V serielle machst (also ohne MAX232 dazwischen), dann ist der 
Ruhepegel Low.
Nun macht es aber wenig Sinn, wegen 5cm auf der Platine, den UART 
Ausgang eines Mega mit einem MAX232 auf 12V Pegel zu bringen und zu 
invertieren, nur um diese Leitung dann 3 cm weiter mit einem weiteren 
MAX232 wieder zurückzuinvertieren und wieder auf 5V zu holen.

Autor: dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ TK

genau das hatte ich gesucht?
Ist die loesung gut?
Weil ich habe das problem,
ich arbeite an einen kleinen projekt, habe aber nur atmega8 und in 
meinem end projekt solln die atmega8 raus und durch einen atmega640 
ersetzt werden, weil ich brauche 16 ADC eingaenge mit den drei atmegas 
habe ich dann 18.

danke fuer die schnelle hilfe von allen

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> aber nur, wenn du die komplette RS232 mit den 12V Pegeln benutzt:-)
>
> Wenn du 5V serielle machst (also ohne MAX232 dazwischen), dann ist der
> Ruhepegel Low.

Falsch. Idle ist stets logisch 1, bei TTL-Pegeln also High. Der Beginn 
des Startbits ist eine High-Low-Transition. Findest du so auch in jedem 
Datenblatt.

Bei RS232 entspricht logisch 1 auf den Datenleitungen (und nur da!) 
-3V..-15V. Damit passt es dann auch wieder mit der "Invertierung" durch 
den MAX232, die sich im Fall der Datenleitung aber nur auf die Pegel, 
nicht auf den Logikwert bezieht.

Andreas

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dietmar schrieb:
> ich brauche 16 ADC eingaenge mit den drei atmegas
> habe ich dann 18.

Warum nimmst Du dann nicht einfach einen oder 2 Multiplexer CD4767 / 
74HC4051 / CD4051?
Das dürfte die billigere Lösung sein, vorausgesetzt du hast genügend 
Zeit zwischen den Wandlungen zum Umschalten und zum Ladungsausgleich.

Ansonsten: die Diodenlösung funktioniert nur bei 5V-Versorgung 
zuverlässig.
(der maximale Low-Pegel liegt bei 0,2*VCC was bei 2,7V nur 0,54 Volt 
sind). Es sei denn Du verwendest Schottky-Dioden mit niedriger 
Durchlassspannung.

Ich würde da lieber ein richtiges Und-Gatter spendieren.

Gruß Anja

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Ferber schrieb:
> Karl heinz Buchegger schrieb:
>> aber nur, wenn du die komplette RS232 mit den 12V Pegeln benutzt:-)
>>
>> Wenn du 5V serielle machst (also ohne MAX232 dazwischen), dann ist der
>> Ruhepegel Low.
>
> Falsch. Idle ist stets logisch 1, bei TTL-Pegeln also High. Der Beginn
> des Startbits ist eine High-Low-Transition. Findest du so auch in jedem
> Datenblatt.

Da hab ich ja wieder einen schönen Bock geschossen.
Danke für die Korrektur.

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.