Hallo Forengemeinde, ich hätte da mal eine frage. Ich möchte mit einem Controller welcher eine UART besitzt, zwischen mehreren seriellen Geräten Multiplexen. Also um genau zu sein die Rx/Tx-Leitung vom Controller, über ein Switch "intelligent" mit 2-3 verschiedenen Endgeräten verbinden. Mit "intelligent" meine ich eine Möglichkeit, dass mein Controller bzw mein Switch erkennt, welches Endgerät gerade Daten senden möchte. Gibt es so eine Möglichkeit sowas zu erkennen. Es werden nie Daten zusammen gesendet und es soll auch jeweils nur ein Endgerät mit dem Controller verbunden werden. Die Möglichkeit, manuell die UART zu multiplexen kenne ich bereits, z.B ein zweifacher 1:3 Multiplexer FST3253 oder die MAX399/PS399... Ich suche einfach nach einer Möglichkeit, wie ich erkennen kann, welches meiner Endgeräte gerade senden tut. Wie könnte ich sowas erfassen? Ist es möglich jeweils die Tx-Leitungen meiner Endgeräte zusätzlich an Controllerpins zu führen und so beispielsweise auf Pegelwechsel zu triggern? Brauche ich für so eine Funktionalität InterruptPins oder geht sowas auch an einem normalen GPIO-Pin auf Pegelwechsel zu triggern und ein "event" auszulösen? Ich habe beispielsweise, schon einmal gesehen, dass an ein µC-System die RS232 Leitung eines PCs verbunden wird und die Erkennung läuft automatisch und die Baudrate stellt sich automatisch im Terminal ein. Wie funktioniert sowas? Vielleicht hat sowas schon einmal gemacht und kann mir Quellen oder Dokus nennen. Danke für Eure Mühe MFG Spice
a) Du kannst den zu senden Daten immer einen Block Dummys voraussenden, so dass keine Daten verloren gehen, bis die Umschalt-Mimik gemerkt hat, was los ist. b) Du könntest auch die Initiative vom Empfänger ausgehen lassen. Der sendet reihum quasi die Frage "hast'was zu melden?" und die Sender Senden nur, wenn sie gefragt werden. Frank
Vielen Dank für die Idee, aber ich habs vergessen zu erwähnen, ich habe erstmal einen einfluss auf die daten, die gesendet werden (bei den Endgeräten) Mein controller ist sozusagen mein master und die clients senden willkürlich und ich werte die daten aus, dabei habe ich die Kontrolle über die Zeitspanne in der die Daten gesendet werden (von den Endgeräten). Also sollte mir nix an daten verloren gehen. Gruß Spice
>Mein controller ist sozusagen mein master und die clients >senden willkürlich und ich werte die daten aus, Das ist ein Widerspruch in sich. Ein Master fordert Daten an. Clients haben solange ruhig zu bleiben. >dabei habe ich die >Kontrolle über die Zeitspanne in der die Daten gesendet werden Schon besser. Aber warum schaltet der Master den Multiplexer dann nicht selber um wenn er weiss wann welcher Client sendet?
Wenn die Daten der Slaves sich nicht zeitlich überlappen, so wie im ersten posting geschrieben, so faß doch alle TX-Leitungen der Slaves über ein ODER- oder ein UND-Gatter zusammen, je nach dem wie Deine Pegel sind (natürlich nicht auf der RS232-Seite sondern auf der VCC-Seite des Controllers). So kriegst Du alle gesendeten Bytes mit, ohne Umschaltung machen zu müssen und ohne Verlust. Bei den TX-Leitungen des Masters setzt Du einen Multiplexer dran, oder gehst über verschiedene Controller-Pins mit Software-UARTs raus. Fertig ist die Laube. Deine Angaben wiedersprechen sich leider in den postings etwas. Also Aufgabenstellung und Timing klar definieren. Danach ist die Lösung meist einfach. Aber Aufgabenstellungen mit diffusen Zielen erzeugen auch diffuse Ergebnisse.
Vielen Dank für den Beitrag, ich glaub jetzt geht alles durcheinander. Master habe ich wohl im falschen zusammenhang benutzt, sorry. Also nochmal, es werden keine daten angefordert, die Endgeräte (ich nenne sie mal Teilnehmer) senden willkürlich zu beliebigen zeiten ein paar strings. Nie senden Teilnehmer zum gleichen Zeitpunkt und mein µC weiss nicht, wann welcher Teilnehmer sendet. Ich kann halt nur von extern die zeitspanne der gesendeten strings und die anzahl der wiederholungen beeinflussen. Ist es nicht möglich auf ein Pegelwechsel an Tx der Teilnehmer zu reagieren? Eventuell mit externer beschaltung? Monoflop etc? wenn ich die Rx/Tx-Leitungen der Teilnehmer einmal auf den Multiplexer und einmal auf ein Portpin führe, sollte es doch eine Softwaretechnische Möglichkeit geben, auf die Bits, die gesendet werden zu reagieren und den Multiplexer auf den richtigen kanal umzuschalten und dann erst anfangen zu Uart auszulesen? Danke und Gruß Spice
Warum willst Du erst mit dem Senden eines Datenbits von Deinen Teilnehmern einen Multiplexer schalten. Fass doch alle TX-Leitungen der Teilnehmer mit einem gatter zusammen auf den RX-Pin Deines Controllers, so hast Du immer gleich des gesendete Byte im UART ohne zu multiplexen. Dann führe noch alle TX-Pins der Teilnehmer an je ein Port des Controllers und Du kannst erkennen, welcher gerade sendet. Eleganter wäre es, wenn Du aus dem Inhalt der gesendeten Message erkennen köntest, welcher Controller sie gesendet hat. Ein Multiplexen der Teilnehmer-TX halte ich so oder so für überflüssigen Ballast.
@was-willst-du: Hatte dein posting vorhin nicht gelesen, dir auch besten dank. Deine Lösung klingt erstmal sehr trivial und schön, genau darüber habe ich auch nachgedacht, aber mir fehlte irgendwo die erkenntnis, dass ich Tx leitungen mit gleichem Pegel verbinden darf. Was passiert denn, wenn ein Teilnehmer sendet und die anderen Teilnehmer bekommen an ihren Pins Pegelwechsel mit bzw werden von extern beeinflusst. Wie verhält sich denn die Tx leitung normalerweise zb eines MAX232 auf TTL-Seite, wenn gerade nix gesendet wird. Ists hochohmig oder auf High/Low und kann ich das einfach so ohne weiteres verbinden? Oder entkoppel ich da quasi durch ein logicgatter die einzelnen TeilnehmerTxPins? Danke für die Hilfe Spice
Falsch verstanden. Nix TX-zusammenschalten !!!! Achtung LESEN !!! Über ein Gatter auf eine Leitung zusammenfassen. MAX XXX geben einen festen Pegel ab, wenn der Eingang einen definierten Pegel hat, sind ja bloß Pegelwandler. Aber was schreib ich, wenns nicht gelesen wird ?
Vielen Dank nochmal... @was-willst-du: nicht so grimmig, bin noch ziemlich feucht hinter den ohren was diese Thematik betrifft. Zu wired or, finde ich leider nicht wirklich was im netz oder hier, aber die sache mit dem gatter hört sich schon sehr interessant an. Da die Tx-Leitungen der Teilnehmer ja high ist, wenn nix gesendet wird und erst beim senden gegen GND pulsieren, denke ich dass ein XNOR-Gatter angebracht wäre bei 2 Teilnehmern? oder sehe ich da wieder was falsch?
sorry sehe gerade dass ein AND-gatter auch ausreicht, hatte es gerade wieder "verplant" :-)
also Tx der Teilnehmner über Dioden an den Rx des Controllers? und an der Rx hängt ein Pullup?
jau, nennt sich auch wired-or, in dem falle: pull-up-widerstand und dioden mit der anode an rx des controllers und die kathoden an die jeweiligen tx-leitung des teilnehmer, ist somit eher ein and-gatter für deine anwendung. grimmig: naja, ein paar grundlagen in schaltungstechnik wären doch ganz hilfreich. in jedem zweiten oder dritten thread schreiben die leute: ich hab von nix ne ahnung, möchte aber riesige dinge machen, zB. 24 kw schalten, sicherheitsregeln und kenntnisse über netzspannung sind wohl unwichtig. in deinem falle wäre doch zuerst mal eine genaue definition der aufgabenstellung für dich selbst angebracht. dann hier im forum eine klare sprache, um die aufgabenstellung zu erklären. etwas phantasie (google ist keine phantasie) und ein paar grundlagen in digitaler/analoger schaltungstechnik. nix für ungut, wir alle haben mal angefangen. bin in zukunft nicht mehr so brummig. versprochen.
Danke nochmal...Grundlagen sind bald da ;-) Und was könnte ich mit der Tx-Leitung des µC machen? darf man den auf 2 Teilnehmer ohne weiteres verzweigen? Oder kommt da auch ein Gatter rein?
Hast Du denn eine Aufgabenstellung ? Du stellst hier Fragen, bei denen sich mir der Eindruck aufdrängt, Du hast keinen Peil, was Du eigentlich machen willst. Überleg doch mal logisch: - Dürfen alle Deine Teilnehmer alle Messages empfangen ? - Darf nur je eine Teilnehmer eine bestimmte Message empfangen ? - Sind denn bei allen Teilnehmern die Übertragungsdaten (Baud-Rate, Parity usw. gleich) ? Wenn Du Dir mal diese grundsätzlichen Fragen beantwortest, hast Du doch schon die Lösung. Wieviel Eingänge ein TX-Ausgang speisen kann, steht im Datenblatt der jeweiligen Bausteine.
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.