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
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
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
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!
> 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?
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?
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
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
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)
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
Ok super vielen Dank für deine Hilfe werd ich mich mal schlau machen=)
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?
Alles richtig angeschlossen? Probier vielleicht einfach mal nen Pull-Up an die Eingänge der µCs... Vielleicht hilft des. MfG Marius
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.
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
Laufen beide über das selbe Netzgerät. Masse zum PC ist angeschlossen
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.