Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere RS232 Rx/Tx parallel?
Moin.
Da parallel im Bascom-Forum die Probleme mit dem TWI laufen, frag ich mich, ob es denn nicht geht, die (einfacheren) RS232-Schnittstellen (Rx,Tx) eines AVR zu verwenden.
Angenommen ich habe 1 Tx und mehrere parallele Rx. Klappt das, dass jeder Rx das vom Tx ausgesendete Signal empfängt? (Vorausgesetzt VCC und GND sind überall gleich bzw. miteinander verbunden und die Bitrate ist überall gleich)
Wenn dann nun mehrere Tx dazukommen, die über OR-Gatter "entkoppelt" sind (oder evtl sogar 1N4148 in Datenrichtung?), und von denen immer nur maximal 1 einziger senden kann, könnten diese dann der Reihe nach Daten an alle Rx übermitteln? Man bräuchte dann halt nur ein Protokoll, das die Kommunikation regelt.
Theoretisch müsste das doch klappen. Klar, sobald mehrere gleichzeitig sennden, kommt wohl an den Rx nur Grütze an. Aber wenn nur einer sendet und die anderen Tx (durch OR) nicht stört, müssten die Rx doch die Daten auch empfangen?
MfG
kalledom
23.03.2007, 10:14
Deine Überlegungen sind richtig, das funktioniert so.
Es dürfen allerdings nicht so viele RxD an einen TxD angeschlossen werden, daß der Pegel des TxD zusammen bricht. Und es darf immer nur einer antworten.
Warum nimmst Du nicht RS485 ?
Da gibt es einen Master, der jeden Slave zyklisch abfragt, ob der was sagen möchte.
Jeder Slave bekommt (per DipSwitch) eine Nummer 1...255 und antwortet nur, wenn seine Nummer 'aufgerufen' wurde.
Kommt nach wenigen Millisekunden keine Antwort, wird dieser Slave 'übergangen'.
Bei RS485-Bausteinen wird die Richtung für RxD und TxD mit einer 3. Leitung umgeschaltet; die Richtung steht im 'Normalfall' auf RxD. Zum Senden wird kurz auf TxD umgeschaltet.
Hi, deine Überlegungen sind richtig.
Schau dir dazu mal das Thema 9-bit-mode des UART an.
Im ATmega-8 Handbuch, steht das z.B. auf Seite 141
http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf
Durch Verwendung des 9-Bit-Mode kann man das 9. Bit, welches in einem anderen Register abgelegt wird, als Adresse benutzen. Wenn das 9.Bit gesetzt ist, dann prüft man die restlichen 8 Bit, ob sie die eigene Adresse enthalten, sonst macht man nichts...
Nur wenn die eigene Adresse kommt, empfängt man solange, bis ein vordefiniertes EOF (End of Frame) Zeichen empfangen wird (was man auch wieder mit dem gesetzten 9.-Bit markieren kann. Der Vorteil ist, dass die 8 Bit- voll transparent für deine Daten zur Verfügung stehen.
...
Wo liegt denn das Problem mit demBASCOM TWI?
Ich wollte mich nämlich gerade mal damit befassen? Das wäre natürlich viel eleganter.
Ach ja, hast du dir schon das das "Open"Kommando in BASCOM angesehen? Damit kannst du aus jedem Portpin eine Schnittstelelle machen..
sigo
@Kallo, du warst schneller
Ich bin davon ausgegangen, dass es eine Kommunikation auf Boardebene (TTL) handeln sollte (da gemeinsames Vcc). In diesem Fall dürfte der Fan-Out des Tx - Pins für sehr viele Rx-EIngänge reichen..
Evtl. könnte man sogar gleich den Port als Open-Drain konfigurieren ???
Dann hätte man das wired-or schon ohne zus. Hardware.
Ansonsten würde ich auch dringend zu Rs-485 oder RS-422 Treibern raten..
Sigo
Also Problem mit dem TWI wird beim Bascom-Forum parallel behandelt. ( https://www.roboternetz.de/phpBB2/viewtopic.php?t=29012 )
Zur zeit akzeptiert der ATMega8 wohl die TWI-Funktionen bzw. Deklarationen nicht.
Um den Zusammenbruch des Pegels zu verhindern, kann man die Ansteuerung der Leitungen dann ja über einen Transistor (BC457) machen. Die paar "verbrauchten" mA/µA sollten dann für einige Teilnehmer reichen.
Und RS485... damit hab ich mich noch nie befasst. Und so vom ersten lesen her siehts etwas komplizierter aus (Bauteilaufwand) als RS232 oder TWI.
Die Art von Protokoll (zyklisch durchfragen) hab ich dann mit dem RS232 auch vor
(Die "RS232" die ich hier meine, bezieht sich nur auf die Schnittstellen Rx/Tx im ATMega8; die Kommunikation untereinander läuft also ohne MAX232.)
letzter Edit: Grad noch gesehen, das müssen BC557 sein, sonst erhalt ich da ja ne inverse Logik.
so... jetz mal genug Edits für diesen Beitrag
@Jaecko
hast du dir mal den 9-bit-mode angesehen?
Ich habe aktuell erstmal die Software-RS232 ausprobiert und einfach 3 Controller an 3 Ports gehangen. (Open-Befehl).
Das klappt beim Senden sogar noch prima mit 38,4kBd.
Den Empfang habe ich bei der Baudrate aber nicht hinbekommen.
Werde es nun mal ein wenig gemächlicher probieren.
Der Empfang auf der Slave-Seite erfolgt mittels Hardwre - Uart und stellt kein Problem dar.
Sigo
Sigo
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.