Mehrere µCs mit PC kommunizieren lassen

OP #1087119
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
#1087136
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
Persönliche Seite #1087137
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
Gast #1087144
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!
#1087203
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
OP #1087209
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)
#1087212
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
OP #1088160
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?
OP #1088169
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren