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...
"tja, ganz so leicht ist es leider nicht..." "Man braucht soweit ich weiß noch zwei zusätzliche Leitungen anzusteuern" Noch Fragen?
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.
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.