Forum: Mikrocontroller und Digitale Elektronik UART Entkoppeln


von dietmar (Gast)


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

von Florian W. (Gast)


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...

von dietmar (Gast)


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.

von Karl H. (kbuchegg)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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:
1
 .---- rx uC1 tx ------- rx uC2 tx ------- rx uC3 tx ------.
2
 |                                                         |
3
 '---------------------------------------------------------'

von Florian W. (Gast)


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.

von TK (Gast)


Lesenswert?

Meinst Du dann evtl. sowas hier??

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


Gruß
TK

von Karl H. (kbuchegg)


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.

von dietmar (Gast)


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

von Andreas F. (aferber)


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

von Anja (Gast)


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

von Karl H. (kbuchegg)


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.

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
Noch kein Account? Hier anmelden.