mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tx der UART von zwei controller zusammenhaengen


Autor: duron005 (Gast)
Datum:

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

Autor: crazy horse (Gast)
Datum:

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

Autor: Peter Diener (Gast)
Datum:

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

Autor: duron005 (Gast)
Datum:

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

Autor: Peter Diener (Gast)
Datum:

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

Autor: duron005 (Gast)
Datum:

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

Autor: Peter Diener (Gast)
Datum:

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

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.