Forum: Mikrocontroller und Digitale Elektronik Mehrere µCs mit PC kommunizieren lassen


von M. G. (sirmel)


Lesenswert?

Tag zusammen,

Ich möchte gerne einen ATMEGA8, einen ATMEGA644 und den PC miteinander 
kommunizieren lassen. Sobald ein Gerät was sendet, sollen die anderen 
beiden das mitbekommen. Nun habe ich die beiden µcs direkt 
zusammengeschaltet, also RxD und TxD gekreuzt verbunden. Der PC ist über 
einen MAX232 mit dem ATMEGA8 verbunden. Aber leider funktioniert der 
Datenaustausch so nicht. Wenn ich PC und MEGA8 oder MEGA8 und MEGA644 
oder PC und MEGA644 verbinde geht es. Also immer nur mit zwei. Muss man 
dabei auf irgendwas achten? Achja noch was: Der ATMEGA644 ist ca. 6m vom 
ATMEGA8 und PC entfernt. Zur Übertragung hab ich ein 4x0,75 Ölflex 
genommen, mit welchem ich auch die Spannungsversorgung für den ATMEGA644 
realisiere. Könnten da irgerndwelche Störungen auftreten? Die Leitung 
hat auch noch einen Schirm, den ich aber nicht angeschlossen habe. Hoffe 
ihr könnt mir weiterhelfen.

Mfg

von Marius W. (mw1987)


Lesenswert?

So recht verstehe ich dich da noch nicht...

Die µCs sind richtig verbunden mit dem gekreuzten Kabel. Aber ich kann 
mir noch nicht richtig vorstellen, wie der PC mit dem Mega8 verbunden 
ist. Software-UART? Oder hängt der an der selben UART wie der Mega644?

Wenn letzteres der Fall sein sollte, dann kann das so nicht gut gehen. 
Im TX-Fall sind dann zwei Treiber parallel geschaltet.

MfG
Marius

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Du kannst immer nur zwei Geräte über RS232 miteinander verbinden, sonst 
gibt es Datensalat. Oder du hängst an jedes Gerät einen Bustreiber für 
z.Bsp. RS485 oder CAN. Dann kannst du an den BUS mehrere Geräte hängen. 
Musst dir natürlich noch ein Protokoll ausdenken. Oder du verbindest die 
beiden µC über I2C oder SPI und lässt nur einen über RS232 zum PC 
senden.

Sevn

von Tobi (Gast)


Lesenswert?

Hi!

Wenn du mehr als zwei miteinader verbindest, musst du diese natürlich 
entkoppeln. Sonst kann es ja sein, das einer senen TX auf HIGH treibt, 
der andere aber auf LOW --> Kurzschluss!
Also musst du z.b. mit Dioden (und dann Pull Up!!) entkoppeln (Die RX'e 
kannst du direkt verbinden!):

TX1 --|<---   Vcc
          |    || Pull Up      |---> RX1
TX2 --|<---------> TX gesamt --|---> RX2
          |                    |---> RX3
TX3 --|<---

Das ganze für beide Richtungem, also 2 mal!
Hier ist die '0' dominant!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Nun habe ich die beiden µcs direkt zusammengeschaltet,
> also RxD und TxD gekreuzt verbunden.

Dann können sie miteinander kommunizieren, so weit, so gut.

> Der PC ist über einen MAX232 mit dem ATMEGA8 verbunden.

Wie? Mit denselben RxD-/TxD-Signalen, mit denen auch der andere µC 
verbunden ist?

Welche Signale verbindest Du wie mit dem PC?

von M. G. (sirmel)


Lesenswert?

Also der ATMEGA8 und der ATMEGA644 sind direkt verbunden, also ohne 
MAX232. Am ATEMGA8 ist ein MAX232 an welchem dann der PC angeschlossen 
ist. Somit ist doch eig. der Pegelwandler als "Schutz" oder nicht?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Am ATEMGA8 ist ein MAX232 an welchem dann der PC angeschlossen ist.

WIE?!

von M. G. (sirmel)


Lesenswert?

Pin 2 vom ATMEGA8 -> Pin 12 vom MAX232
Pin 3 vom ATMEGA8 -> Pin 11 vom MAX232
PC an 13,14,15 vom MAX232
Pin 14 vom ATMEGA644 -> Pin 3 vom ATMEGA8
Pin 15 vom ATMEGA644 -> Pin 2 vom ATMEGA8

von Marius W. (mw1987)


Lesenswert?

Da hast du deinen Datensalat...

Der ATMega8 darf nicht gleichzeitig an denselben Pins am MAX232 und am 
Mega644 angeschlossen sein. Dann Treiben nämlich MAX232 und Mega644 
gegeneinander und das ist nicht so wirklich gut.

Schau mal ob du eventuell nen Mega644P hast?! Der hat nämlich 2 USARTs.

Dann schließt du das wie folgt an:
ATMega8 -> Mega644P (USART0) -> Software -> Mega644P (USART1) -> MAX232 
-> PC

Du musst dann lediglich in der Mega644P Software angeben, dass alle 
daten von USART0 an 1 weitergereicht werden und umgekehrt.

MfG
Marius

von M. G. (sirmel)


Lesenswert?

Nein habe leider keinen P. Wäre es eventuell möglich wenn ich eine Art 
Ring-Kommuniktaion mache? Dass der PC an den ATMEGA8 sendet, der ATMEGA8 
sendet weiter an den ATMEGA644 und der sendet dann wieder an den PC?
Also:

PC TxD -> MEGA8 RxD (Über Max232)
MEGA8 TxD - MEGA6544 RxD
MEGA644 TxD -> PC RxD (Über Max232)

von Marius W. (mw1987)


Lesenswert?

Wäre auch möglich.

Dann musst du aber darauf achten, dass deine Daten nicht im Kreis laufen 
und immer nur einer sendet. Sonst kannste nachher nicht mehr eindeutig 
erkennen, wer welches Byte an wen gesendet hat.

Schau dir bei Wikipedia mal das Prinzip von Token Ring an. Das kommt dem 
schon sehr nahe.

MfG
Marius

von M. G. (sirmel)


Lesenswert?

Ok super vielen Dank für deine Hilfe werd ich mich mal schlau machen=)

von M. G. (sirmel)


Angehängte Dateien:

Lesenswert?

So folgendes habe jetze eine Ringtopologie aufgebaut (s. Anhang). Das 
Problem ist dass ich ständig Zeichen empfange (yyy) und das eigentliche 
Signal nur ab und zu durchkommt. Woran kann das liegen?

von Marius W. (mw1987)


Lesenswert?

Alles richtig angeschlossen? Probier vielleicht einfach mal nen Pull-Up 
an die Eingänge der µCs... Vielleicht hilft des.

MfG
Marius

von M. G. (sirmel)


Lesenswert?

Hab alles nachgeschaut müsste alles richtig angeschlossen sein. Bekomme 
immer folgendes:

ÿÿÿ
ÿÿ16
ÿýÿ
ÿÿ0

ÿ16

ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ


wobei 16 eig. 016 sein sollte und ÿÿ0 eig. 000.

von M. G. (sirmel)


Lesenswert?

Also hab ma rumnprobiert. Es funktioniert immer nur, wenn die µcs über 
RxD UND TxD verbunden sind. Sobald ich die Sendeleitung vom ATMEGA8 zum 
ATEMGEA64 entferne, bekomm ich diese Zeichen. Aber so funktionoert dann 
die PC Kommunikation nicht mehr

von Falk B. (falk)


Lesenswert?

Masse angeschlossen?

von M. G. (sirmel)


Lesenswert?

Laufen beide über das selbe Netzgerät. Masse zum PC ist angeschlossen

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn Du den RxD-Pin eines µCs offen lässt, kann der dort irgendwas 
empfangen - und das leitet er korrekt weiter, was Du in Form von 
Störungen empfängst.

Lege den RxD-Pin auf einen definierten festen Pegel, und die Störungen 
sollten weg sein.

von M. G. (sirmel)


Lesenswert?

Sooo endlich ich habs hinbekommen. Nach entlichen Pull-Up Widerständen 
und ner kleinen Programmänderung hat es endlich geklappt=). Vielen Dank 
für eure schnellen und hilfreichen Antworten. Schöne Feiertage an alle

Mfg

von M. G. (sirmel)


Lesenswert?

Hi ich bins wieder. Sorry aber jetzt ist folgendes: Die Übertragung 
funktioniert nur, wenn ich den Programmieradapter für den µC 
angeschlossen lasse. Sobalb ich diesen entferne, bekomme ich wieder 
diese Störungen. Und das zweite Problem ist, dass wenn ich meinen PC 
ausschalte, die Übertragung auch nicht mehr funktioniert. Woran kann das 
liegen?

von M. G. (sirmel)


Lesenswert?

So das erste Problem hab ich gelöst. Liegt daran dass ich einfach noch 
eine zusätzliche Massverbindung zwischen der Programmierschnittstelle 
und dem PC machen muss, keine Ahnung warum. Aber warum das nicht mehr 
geht wenn der PC aus ist weis ich nicht...

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.