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...
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...
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.
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...
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.
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...
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.
>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.
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.
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...
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?
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.
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.