www.mikrocontroller.net

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


Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Am ATEMGA8 ist ein MAX232 an welchem dann der PC angeschlossen ist.

WIE?!

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: M. G. (sirmel)
Datum:

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

Autor: M. G. (sirmel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Marius Wensing (mw1987)
Datum:

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

MfG
Marius

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Masse angeschlossen?

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laufen beide über das selbe Netzgerät. Masse zum PC ist angeschlossen

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: M. G. (sirmel)
Datum:

Bewertung
0 lesenswert
nicht 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

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.