mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART als "BUS" verwendbar?


Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich möchte meine Schaltung erweitern und habe nun nur noch die 
Möglichkeit das über den UART zu machen. Daher eine Frage an die 
Experten: Ist es möglich das man mehrere Module an einem RX und einem TX 
Pin anschließen kann?

Meine Überlegung ist die das durch das Protokoll im Master die externen 
Module abgefragt werden.

Der Master muß den Ablauf natürlich steuern und sicher stellen das 
wirklich nur der antwortet der auch gefragt wurde.

Nur geht das so einfach die Pin's zusammen legen?


Gruß und danke im voraus, AVRli...

Autor: Emanuel B. (roquema) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS422 bzw. RS485 sind deine Stichworte...

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke, also ich wollte die vorhandene Hardware nicht unbedingt 
ändern. Ich habe an meinem Master ein MAX232 dran. Wollte nun die Slaves 
einfach daran knüppern, das fällt also aus? (Pegelanpassung 
vorausgesetzt)


Gruß AVRli...

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht nicht.
Zumindest nicht nach den RS232-Treibern. Oder mit irgendwelchen 
Kunstgriffen (Tx an mehrere Rx ist kein Problem, wenn man an 
Leitungslänge, Baudrate, EIngangsstrom und Kabelkapazität denkt), die 
ext. Tx über Dioden entkoppeln und mit einem pulldown auf -10V ziehen. 
Bei moderaten Baudraten kann das funktionieren - ich würde sowas nur im 
Notfall nehmen.

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Baudrate schwebt mir 4800 Baud vor.
Es ist nicht viel was übertragen werden soll, alle 2 min mal ein 
Datensatz.

Ich denke ich hätte schon mal was davon gelesen wo Slaves über RS232 
angesteuert werden.

Also alle TX mit Dioden entkoppeln und dann danach mit einem Pulldown 
nach unten ziehen.

Ok, ich werde das mal aufstecken, hoff es klappt.

Danke euch, Gruß AVRli...

Autor: Artur Funk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schon oben gesagt, MAX232 raus, MAX485 oder je nach dem MAX422 rein 
und du kannst mit 9600 Baud über 600 Meter mit bis zu 32 Teilnehmern 
kommunizieren.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja, ganz so leicht ist es leider nicht...

Autor: Artur Funk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll daran nicht leicht sein? Ich habe einen BUS mit MAX488 
programmiert und zwar den Master. Man braucht soweit ich weiß noch zwei 
zusätzliche Leitungen anzusteuern, wenn man senden oder lesen möchte. 
Ich müßte noch irgendwo Quellcode haben...

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"tja, ganz so leicht ist es leider nicht..."
"Man braucht soweit ich weiß noch zwei
zusätzliche Leitungen anzusteuern"

Noch Fragen?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst bei allen Modulen RX und TX brücken und das Protokoll 
dementsprechend ändern, daß alle TX-Ausgänge erstmal Eingänge mit PullUp 
sind. Bei den RX-Eingängen machst Du auch die PullUps an. Der Master 
schaltet dann seinen TX auf Ausgang, versendet eine Anfrage an ein 
spezielles Modul über eine Adresse (hier kann das 9-te Bit genutzt 
werden), dann schaltet er sein TX wieder auf Eingang und das adressierte 
Modul antwortet über sein TX. Danach schaltet das adressierte Modul sein 
TX wieder auf Eingang und so weiter. Hierbei hat man nur eine einzige 
Leitung gegenüber Masse, jedes Modul muß aber die selbst gesendeten 
Daten, die es zeitgleich empfängt, wieder verwerfen.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und das heisst dann wieder, auf TTL-Level zu kommunizieren...

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und das heisst dann wieder, auf TTL-Level zu kommunizieren...

Ja und was ist daran schlimm? Wenn keine 100 Meter überbrückt werden 
müssen, ist das durchaus legitim. Zum Schutz der einzelnen Module kann 
man noch jeweils 1kOhm Serienwiderstand vom AVR nach außen legen. Bei 
niedrigerer Baudrate <56k kann dieser auch bis zu 4k7 betragen.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schlimm ist das nicht. Aber rel. gefährlich für die Bauteile, wenn da 
dran rum gespielt, kontaktiert, auch mal eine Fremdspannung 
draufkommt...
Und längere Leitungen treiben ist auch nicht gerade die Paradedisziplin 
üblicher MCs.
Masseversatz tut ein ein übriges zum an sich schon schlechten 
Störabstand.
Nene, dafür gibts Treiberbausteine. Überlastgeschützte Sender und 
Emfänger, die einiges abkönnen.
Wie gesagt, prinzipiell funktioniert das so, wie du denkst. Das Problem 
sind die Randbedingungen.

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dank an alle...

@Travel Rec

Vielen Dank für die Erklärung. Das klingt alles recht ordentlich, mein 
Problem ist nun aber das ich schon über einen MAX232 von meinem µC nach 
"draußen" gehe.

Von hier wollte ich nun meine "externen Module" da anschließen wollte. 
Alles natürlich ohne großen Aufwand, wie es immer so sein soll. :-))))

Wenn es nicht geht, ist es natürlich nicht so optimal aber das mit dem 
RX und TX zusammen auf eine LEitung finde ich gut nur ich befürchte das 
es ausfällt weil ich den MAX232 dazwischen hab. :-(

Das Protokoll für die Kommunikation kann man etwas aufbohren, halt die 
Anfragen und Antworten in Frames verpacken die eindeutig adressiert 
sind. Das ganze muß echt nicht schnell sein, 4800 Baud reicht völlig.



Gruß AVRli...

Autor: w. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie mann mehre TX entkoppelt wurde doch schon beschrieben da bastelte 
man sich nen passiven Dsub-9-Splitter.und schraubt den dazwischen.

Aber wen du schon das protokoll ändern willst, wäre es nicht schlauer 
nen separater µC als Commcenter zu missbrauchen, der genügend Ports 
besitzt oder die Weichen mittels Busstreibern stellt oder 
Einfachrepeater spielt?

Autor: Daniel F. (df311)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Artur Funk wrote:
> Was soll daran nicht leicht sein? Ich habe einen BUS mit MAX488
> programmiert und zwar den Master. Man braucht soweit ich weiß noch zwei
> zusätzliche Leitungen anzusteuern, wenn man senden oder lesen möchte.
> Ich müßte noch irgendwo Quellcode haben...

eine half-duplex-rs485-verbindung braucht - je nach treiber - ein 
zusätzliches signal, das von senden auf empfangen umschaltet. das 
umschalten kann man entweder direkt in einer sende-routine einbauen oder 
mit einem interrupt (TXC_IE) lösen. und ein oder zwei bit zu 
setzen/löschen sollte eigentlich ein vertretbarer aufwand sein - 
zumindest weniger als die rs232 irgendwie auf einen bus unmzubauen

ich habe mir für solche und ähnliche spielereien ein paar max485 (half 
duplex) und buchsenleisten auf ein stücken lochstreifen gelötet, die ich 
nach bedarf einfach zusammenstöpseln kann.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann´s auch kompliziert machen. Schmeiß doch den Max232 ´raus und 
verbinde die Schnittstellen über Schutzwiderstände direkt. Dann bist Du 
alle Sorgen los und sparst einen Haufen Kupfer.

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.