Folgendes.. ich betreibe einen hauptkontroller (atmega8), der an zwei andere atmega8 daten per uart sendet. Je nach befehl schicken dann die anderen zwei controller daten an den hauptkontroller (es ist jeweils nur ein kontroller, der daten an den hauptkontroller sendet). Er aktiviert dann kurzzeitig seinen Transmitter, sendet die daten und deaktiviert dann wieder den transmitter. wenn der transmitter deaktiviert ist wird auch gleichzeitig der port auf eingang geschaltet und der pullup deaktiviert. Das ganze funktioniert aber nicht so richtig. wenn nur ein kontroller am receive des hauptkontrollers haengt funktioniert alles wunderbar. hat jemand einen tipp, wie man das ganze realisieren könnte? danke eund lg
eigentlich müsste es so funktionieren.... Bist du sicher, dass das zeitlich alles hinhaut, d.h. wartest du wirklich, bis das letzte Byte incl. Stopbit wirklich raus ist? reies Senderegister bedeutet nicht, das das Kram auch raus ist. Ich würde es hardwaremässig entkoppeln, je eine Diode von Tx zu Rx, pullup am Empfänger.
Hallo, wie wärs denn mit einer Dataforward Architektur? Controller 1 sendet Daten an Controller 2. Dazu ist Controller 1 Tx mit Controller 2 Rx verbunden. Controller 2 sendet alle Daten, die ihn nix angehen an Controller 3 weiter. Dazu ist Controller 2 Tx mit Controller 3 Rx verbunden. Über diesen Weg kann Controller 2 auch von sich aus Daten an Controller 3 senden. Controller 3 kann auch Daten an Controller 1 senden, dazu muss COntroller 3 Tx an Controller 1 Rx angeschlossen werden. Jeder Prozessor schickt die Daten einfach weiter, wenn sie nicht für ihn bestimmt waren. So kann jeder mit jedem kommunizieren. Wie willst du sonst sicherstellen, dass nicht zwei gleichzeitig senden und sich damit stören? Grüße, Peter
ja ich warte immer ab, bis das transmission complete flag anzeigt, dass die uebertragung beendet ist. wenn nur ein kontroller dranhaengt funktionietr ja alles. Dass der pullup des eingang immer deaktiviert werden muss ist schon korrekt oder? (falls nicht gesendet wird)
Hallo, was nützt es dem einen Controller, wenn er weiß, dass er mit seiner eigenen Übertragung fertig ist? Genau diese Information braucht doch der andere! Die beiden Controller müssen untereinander ausmachen, wann wer senden darf. Pullups müssen aus sein. Peter
es ist folgendermasse.. Der hauptcontroller weiss genau , wenn daten erwartet werden und waretet dann bis zb. 8 byte angekommen sind (es werden einfach die interrupts der UART gezaehlt )
Das bedeutet, es reagiert immer nur einer der slaves auf den Hauptcontroller und der wartet mit dem Ansprechen des nicht sendenden Controllers bis der sendende fertig ist? Das sollte schon gehen, du musst halt nur sicherstellen, dass wirklich niemals gleichzeitig gesendet wird. Wenn Unsinn ankommt, ist das aber wahrscheinlich der Fall.
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.