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