Hallo, Ich verwende einen ATmega103. Der Controller ist auf einer Platine mit MAX232 aufgebaut. Der Controller soll nun Daten von einem Messgerät über RS232 empfangen und auswerten. Zur Parametrierung des Controllers würde ich gerne über die RS232 Daten vom PC übermittel. Leider hat der ATMega103 nur eine UART. Hat jemand eine Hardwarelösung um dir RS232 umschaltbar zu machen? Das heißt durch einen Schalter(Taster) soll der Controller umschalten auf "Pametrierung" und damit über einen Ausgang die Umschaltlogig betätigen. lg, Stefan
Das geht ganz einfach mit einem Multiplexer 4053 (oder 74HC4053) zwischem dem µC und zwei MAX 232 Bausteinen. Die Umschaltung des MUX übernimmt der µC oder ein Schalter. Gruss Simon
Reicht da nicht der eine Anschluß oder ist das Messgerät dann untrennbar mit dem Controller verbunden? Wenn eine reicht, dann kann man entweder das Protokoll so gestalten, das der Controller merkt es ist ein Parametrierungsbefehl oder man nimmt einfach einen freien Port als "Umschalter". Wenn der High ist, werden alle Daten als Parameter interpretiert und bei Low als Messdaten. Wenn das nich möglich ist, könnte man einfach je ein And-Gatter mit Open-Collektor Ausgängen jeweils in die Leitung (TTL-Pegel-Seite des Max) schalten. Das Programmierkabel braucht dann aber seinen eigenen Max. Oder ganz einfach ein kleines Relais mit zwei Umschaltern? Steffen
Hallo, Die Idee mit dem MUX ist gut, aber der MAX232 ist auf der Platine, deshalb kann ich vor dem MAX232 nichts machen. Ich bräuchte eine Umschaltung hinter dem MAX232. @Steffen: Wie meinst du das? Messgerät und PC auf die selbe Schnitstelle des Controllers hängen(gleichzeitig?), sowie ein Y-Kabel? Relais wären ne Lösung, aber ich häts gerne elektronisch.
Hallo, die Idee mit dem Umschalten (durch ANDs) ist nicht verkehrt. Der MAX232 hat ja sowieso zwei komplette Sätze Pegelwandler integriert lässt sich also problemlos dafür nutzen. Die entscheidende Frage ist dann aber, woher der Controller wissen soll, wann er vom Messsystem auf PC umschalten soll. Es muss hier also entschieden werden, ob es da eine akzeptable Möglichkeit gibt, vielleicht eine Art Polling, d.h. regelmässig nach einem Messzyklus auf PC umschalten und horchen, ob da was kommt. Andere Alternative wäre, einen Software UART zu realisieren. Dazu gibts Codebeispiele von Atmel die allerdings auch einen gewissen Aufwand (rechenzeittechnisch) bedeuten. Viele Grüße
Hallo Stefan, umschalten nach dem MAX machts IMHO nur noch aufwändiger, da man nicht TTL-Pegel schalten kann, sondern diese positiven/negativen Signale von RS-232. Nebenbei, warum verwendest du auch einen 103? Atmel rät davon für Neukonstruktionen ab. Der 128 beispielsweise hätte dann auch gleich zwei USARTs ;-) (nicht bös' gemeint... falls es die Schaltung halt schon gibt, kannst du ja eh nichts dafür/dagegen) Grüße
Die Frage ist noch, ob das Messgerät immer angeschlossen ist. Wenn ja, sendet es immer oder reagiert es nur auf Befehle (Slave)? Wenn nicht, dann kann man sich auch die AND-Gatter sparen und setzt einfach zwei Dioden in die RXD-Leitung und ein Pull-Up/Down hinter dem Max (Wired-OR). Die Empfangsroutine sollte dann Interuptgesteuert sein. Empfängt der Atmega Daten ohne welche Angefragt zu haben und entsprechen diese einem festgelegten Format (Protokoll), dann werden diese eben als Parametrierungsdatensatz ausgewertet. Die TXD-Leitung (vom MC) kann als "Y-Kabel" auf Messgerät und PC gelegt werden. Steffen
Hallo, Um das Problem etwas genauer dahrzustellen. Das Messgerät liefert mir 64 Messwerte über die RS232. Diese 64 Messwerte Werden mit 3 Kalibrierten Messungen verglichen. Um dem Controller zu sagen wann er diese 3 Messungen aufzeichnen soll, benötige ich den PC. -Der Controller wird über einen Schalter auf Kalibration umgeschalten. -Der Controller wartet auf Befehle vom PC. -Der PC sendet "Speichern der 1. Messung"--> Zusätzlich vieleicht noch anzahl der Mittelung, ect. -Controller schaltet RS232 um und empfängt die Daten vom Messgerät. -PC wartet inzwischen. -Wenn Daten vom Controller verarbeitet und gespeichert sind, schaltet er um auf den PC und sendet "Ready" - danach geht das ganze von vorne los. Da der Controller auf einer Standartplatine sitzt(mit MAX232) und ich keine änderungen an der Platine machen möcht, kann ich nichts vor den MAX232 schalten. Es muss also nach den MAX232 passieren. lg, Stefan
Hallo, Hab die letzten beiden Beiträge erst jetzt gesehen:-) @Thomas: Haben sogar den mega128(is ja Pinkompatibel) aber nütz nichts, weil wir auf den Platinen nur eine ausgeführt UART haben. Ausserdem haben wir einen Kernel für den 103er, und der läuft mit dem 128 noch nicht. @Steffen: Das Messgerät sendet alle 0.5s die 64 Werte, also kann ich nicht willkührlich senden bei einem "Y-Kabel" lg, Stefan
Das macht es etwas komplizierter. Du bräuchtest dafür 4 Treiber die Ein- und Ausgangsseitig V24-Pegel verarbeiten bzw. Liefern können und deren Ausgänge sich auf Tristate schalten lassen. Keine Ahnung ob es so etwas überhaupt gibt (evtl. als Treiber um die maximale Leitungslänge zu vergrößern). Wenn, dann sind das aber teure Spezialschaltkreise. Da ist ein Relais wesentlich einfacher, preiswerter und bestimmt auch platzsparender. Was spricht eigentlich dagegen? Steffen
Hallo, ein Relais ist sicher das einfachste, habe allerdings gehofft, es gäbe einen MUX der Analoge Spannungen der RS232-Pegeln Multiplexen kann(in SMD mit wenigen PIN´s) vielen dank für die Antworten. lg, Stefan
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.