COM-Port programmieren

Im Unterforum Alle anderen elektronischen Probleme - Beschreibung: Was sonst nirgendwo hinpasst

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 05 10 2024  20:28:43      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Alle anderen elektronischen Probleme        Alle anderen elektronischen Probleme : Was sonst nirgendwo hinpasst


Autor
COM-Port programmieren

    







BID = 7795

Gurney

Gesprächig

Beiträge: 193
Wohnort: Stuttgart
Zur Homepage von Gurney
 

  


Hi
Ich hab mich im Internet schon ein bißchen schlau gemacht, aber zu einer wirklichen Lösung bin ich trotzdem nicht gekomme, ich will nämlich mit meinem Computer per serieller Schnittstelle mehrer LEDs ansteuern. Wie ich die Bits an die Ausgänge meines PCs kriege, weiß ich, und wenn ich mehr als die 3 Ausgänge vom RS232 haben will, brauch ich anscheinend ein Schieberegister und zur Pegelkonvertierung noch einen MAX232. Kann ich denn dann einfach mithilfe mehrerer Bitfolgen einfach in meinem Schieberegister die Bits einfach solange "durchschieben", bis die gewünschte Ausgangskombination erreicht ist? Oder muss ich dabei irgendwas besonders beachten? Oder geht es so überhaupt nicht?
Wäre für eure Hilfe echt dankbar, ich such mir nach Informationen zu speziell diesem Thema schon langsam die Finger wund
CU
Gurney

BID = 7806

Simpleton

Aus Forum ausgetreten

 

  

Wenn du das serielle Datenwort, das über TXD raus geht, in ein paralleles Datenwort umwandeln willst (um zum Beispiel 8 LEDs mittels der 8 Bit des Datenwortes zu steuern), brauchst du dazu einen UART Baustein oder einen programmierten Microprozessor oder eine handvoll CMOS-Bausteine um den seriellen Empfänger/Parallel Umsetzer realisieren zu können. Mit CMOS ICs 4094, 4017 und 4093 lässt sich ein einfacher serieller Empfänger für 1200 Baud Übertragungsrate mit frei schwingendem Takt-Oszillator aufbauen. Wenn du es schneller haben willst, wird es mit den einfachen CMOS Chips entsprechend komplizierter und du musst einen quarzgesteuerten Taktgenerator und Teiler einsetzen.

Bei Bedarf kann ich mal sehen, ob ich den Artikel zu dem 1200Baud Empfänger noch finde...

BID = 7809

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

In diesen Foren sind verschiedentlich die Steuerleitungen wie DTR, RTS, CTS, der RS232-Schnittstelle als "mißbraucht" worden, um damit irgendetwas zu bewerkstelligen.
Du kannst damit aber tatsächlich so einfach wie es Dir vorschwebt Schieberegister, etwa ein oder mehrere 74HC164 oder CD4094, laden, wenn Du das beachtest, was ich weiter unten über die Logikpegel schreibe.
Von einer richtigen seriellen Datenübertragung kann bei dieser Zweckentfremdung der Steuerleitungen natürlich keine Rede sein.

Wenn Du die serielle Schnittstelle wie vom Hersteller vorgesehen verwenden willst, dann reicht ein einfaches Schieberegister nicht aus, weil die Schnittstelle kein Taktsignal liefert. Das muß der Empfänger selber bereitstellen, und deshalb muß er unter anderem die Übertragungsgeschwindigkeit kennen.

Laut Norm beträgt der Sendepegel für eine "0" +3V..+15V und für eine "1" -3V..-15V.
Das bedeutet, daß sowohl die Treiber- wie auch die Empfängerchips die Daten invertieren.

Aufgrund der hohen Sendepegel brauchst Du für einen Empfänger nicht unbedingt einen speziellen RS323-Receiver-Chip, ein Schutzwiderstand 50..100 kOhm vor einem normalen CMOS Eingang tut es auch, invertiert aber natürlich nicht.

Eine Realisierung eines Empfängers mit einem Schieberegister (und einem Auffangregister) einem Zähler und ein paar Logik Gates ist möglich, aber nicht ganz trivial, wie Du gleich aus der Beschreibung des Übertragungsverfahrens sehen wirst.

Einen SIO-Chip wie er im PC eingesetzt ist, etwa den 14450, wirst Du nicht verwenden können, da solche Chips für das Zusammenspiel mit einer CPU entworfen worden sind.
Sie müssen also erst mit einigen Daten programmiert werden, sonst tut sich nichts.

Deshalb sind für solche Aufgaben heutzutage ein Ein-Chip-Microprozessoren, wie etwa die PIC-Typen der Firma Microchip, das Mittel der Wahl.

Im Ruhestand befindet sich auf der Leitung eine logische "1", die Leitung führt also negative Spannung. Du kannst das ja mal nachmessen.
Wenn der Sender nun ein Byte übertragen möchte, so schickt er als erstes für eine Bitzeit, also 0,8ms bei 1200 Baud, eine "0", das sogenannte Startbit. Dadurch wird der Empfänger aufgeweckt.
Danach schickt der Sender ohne weitere Pausen die, je nach Einstellung 7 oder 8, Datenbits, falls bestellt das Paritätsbit, und zum Schluß für mindestens eine Bitzeit wieder die Ruhepolarität, das ist dann das sogenannnte Stop-Bit.

Beim Empfänger passiert folgendes:
Solange auf der Leitung eine "1" liegt, döst er einfach weiter.
Sobald die "0"-Polarität (auf der Leitung positive Spannung, am Chip wegen der Inverter Low) kommt, wartet er eine halbe Bitzeit und sieht dann, in der Mitte des Startbits, nochmal nach. (Falls dann wieder "1" anliegt schläft er wieder ein.)
Normalerweise aber wird jetzt ein interner Taktgeber und Zähler gestartet, der dann, zeitlich in der Mitte der Bits, die Daten in ein Schieberegister taktet.
Für das obige Beispiel 8-Datenbits, 1 Parity, 1 Stopbit, müßte also ein 10-Bit Schieberegister verwendet werden.
Wenn das Stopbit eingeschoben worden ist, wird der Inhalt des Schieberegisters sofort in ein paralleles Ausgaberegister übertragen, wo es solange zur Verfügung steht, bis ein neues Wort empfangen worden ist.

Die Speicherung des Parity und des Stopbits ist nicht lebensnotwendig, man macht beides, um Störungen bei der Übertragung erkennen zu können.

Wie Du nun sicher erkennst, ist der Entwurf einer solchen Logik nicht ganz einfach, während es programmtechnisch lediglich eine Fingerübung ist.




_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 7816

Simpleton

Aus Forum ausgetreten

@Perl

Danke für die Erklärung der RS232 Parameter/Übertragunsverfahren etc.
Erlaube mir dagegen zu setzen, dass die Schaltung, die ich da im Kopf hatte, wirklich relativ trivial ist und sie läuft auch ohne Microprozessor oder UART. Schau doch mal drüber und gib deine Meinung dazu ab. Immerhin gibt es auch Leute wie mich, die eine diskrete Elektronik gegenüber einem Microcontroller bevorzugen.

Es führen bekanntlich viele Wege nach Rom. Und wie du zustimmen wirst ist Perl's Weg nur einer davon.

Nichts für ungut.

MfG

Stephan


[ Diese Nachricht wurde geändert von: Simpleton am 21 Nov 2002 12:35 ]

BID = 7818

Simpleton

Aus Forum ausgetreten

@Gurney

Hier die versprochenen Unterlagen.
Ich hoffe diese Schaltung hilft dir weiter.

Stephan

Auszüge aus dem Buch 'Messen Steuern und Regeln mit der RS232 Schnittstelle', erschienen im Franzis-Verlag, ISBN 3-7723-6056-4, Preis ca 35 Euro

Bei Fragen wende dich ruhig per PM oder Email an mich.

Uploaded file: Simpler RS232 RX+TX mit CMOS.zip



[ Diese Nachricht wurde geändert von: Simpleton am 21 Nov 2002 12:36 ]

BID = 7820

Gurney

Gesprächig

Beiträge: 193
Wohnort: Stuttgart
Zur Homepage von Gurney

Danke für eure schnellen (und umfangreichen) Antworten ! Ich brauche allerdings eine sehr schnelle Übertragungsgeschwindigkeit und hatte mir gedacht, da ich mir bereits ein einfaches Testprogramm zum Ansteuern von 2 LEDs geschrieben hab, dass die Ausgänge einzeln ein-und ausschaltet (was auch funktioniert ), dass ich mithilfe des Ein-und-Ausschaltens der Ausgänge direkt die Bits in das Schieberegister schieben könnte, vorrausgesetzt natürlich, es interpretiert eine steigende Flanke als 1 und eine fallende als 0 (oder halt umgekehrt). Ich muss den Zustand des Schieberegisterausgangs innerhalb von wenigen Millisekunden - evtl. auch weniger - ändern können. Geht das wohl, oder muss ich das auf jeden Fall eine von euren Lösungen nehmen? Ach ja, und der Anschluss an den PC ist eigentlich nur zu Testzwecken, irgendwann (in ferner Zukunft), soll das ganze vom PC unabhängig mit einem µProzessor gesteuert werden, aber soweit bin ich längst noch nicht

BID = 7821

Simpleton

Aus Forum ausgetreten

Dann kommst du um einen Aufbau mit Microprozessor nicht herum. Ist nicht mein Gebiet.

Es wäre allerdings einfacher gewesen, wenn du die Parameter der von dir gewünschten Schaltung vorher genauer spezifiziert hättest. Es war da nichts zu lesen von 'hoher Geschwindigkeit'.

Tut mir leid, aber eine Antwort kann nur so genau sein wie die Frage. Nichts für ungut.

Du könntest dir aber mal die Beschreibung dieser Schaltungen genau durchlesen, dann wirst du feststellen, dass du mit Zwei Leitungen (eine für Takt und eine für das Datenwort) den 4094 direkt ansteuern kannst - mit schätzungsweise 1Mhz oder mehr Taktfrequenz.
Das Datenblatt zum CD4094 müsste irgendwo im Netz aufzutreiben sein.- Aber die Triggerung (welche Flanke das Datenwort übernimmt) geht auch schon aus der Schaltungsbeschreibung hervor.

Stephan

BID = 7824

Gurney

Gesprächig

Beiträge: 193
Wohnort: Stuttgart
Zur Homepage von Gurney

Sorry, dass ich das mit der hohen Geschwindigkeit vorher nicht erwähnt habe, war meine Schuld . Aber eure Tipps sind natürlich trotzdem sehr hilfreich Ich denke, ich werde versuchen, das Schieberegister direkt anzusteuern, dann kann ich den Takt per Software bestimmen, was mir (bislang) mehr liegt als die Elektronik, hab früher hobbymäßig fürs Spieleprogrammieren C++ gelernt, die Sprache ist also auch kein Problem, aber in der Elektronik (auch Hobby) hab ich noch wenig Erfahrung.
Danke für eure Hilfe
Gurney

BID = 7825

Benedikt

Inventar

Beiträge: 6241

Andere Frage:

Spricht was gegen den LPT Port ?

Damit hat man 12 Leitungen, die man einzeln ändern kann, und das 100tausend mal die Sekunde...

BID = 7833

Gurney

Gesprächig

Beiträge: 193
Wohnort: Stuttgart
Zur Homepage von Gurney

12 Ausgänge? Das hört sich wirklich ziemlich gut an. Ich wusste zwar, dass die parallele Schnittstelle mehr hat als die serielle, aber soviele mehr... Hm, werd mal nach der Pinbelegung schaun.

BID = 7836

Benedikt

Inventar

Beiträge: 6241

Pin 2-9 sind die 8Bit Datenleitungen.
Pin 1, 14, 16, 17 Control Leitungen. (als Ausgänge oder Eingänge verwendbar)
Pin 18-25: Masse
Die 5 restlichen Pins sind Eingänge.

BID = 7857

simon

Gerade angekommen
Beiträge: 15
Wohnort: Schweiz
ICQ Status  

@Gurney

Ich habe vor kurzem (mit grosser Hilfe von Jornbyte) eine Schaltung und auch ein C++-Programm aufgebaut, mit dem ich über einen µC einen Mikrocontroller ansteuere. Ich kann die sowohl die Schaltung, das µC Programm, als auch ein kleines C++-Programm für die serielle Übertragung geben.

Das direkte Anschliessen des Com-Ports an das Schieberegister läuft nicht mit jedem SR. Denn der Com-Port sendet nur schon beim Setzen/Löschen mit einem Protokoll das vom SR nicht verstanden wird. Habe es auch versucht und mein SR hat verrückt gespielt.

simon

PS: bei C++ würde ich das ActiveX-Steuerelement MSCOMM benutzen, da alles andere bei mir nicht geklappt hat.

[ Diese Nachricht wurde geändert von: simon am 22 Nov 2002  8:00 ]

BID = 8042

Gast

Nichtregistrierter Benutzer

Es geht auch ohne Mikrocontroller, aber UART muß sein.
Richtig, 16550 geht nicht, der hat einen Mikroprozessor-Bus. Aber wie wäre es mit einem CDP6402? Das ist ein UART, der auf einen Betriebsmodus 'verdrahtet' werden kann. Sozusagen ein standalone-RS232-8-Bit-Parallel-Wandler. Max232 muß natürlich auch noch sein.

Stef(an).

BID = 9738

Gurney

Gesprächig

Beiträge: 193
Wohnort: Stuttgart
Zur Homepage von Gurney

Hi
Bei meinem Computer gibt es ein Problem, nämlich das ich den Ausgang RTS nicht ansteuern kann, TXD und DTR gehen. Das Problem tritt sowohl unter DOS als auch unter Windows auf, bei beiden COM-Ports. Das Kabel ist auch in Ordnung. Ist das normal? Muss ich da noch was besonderes einstellen? Oder ist der RTS irgendwie besonders?

BID = 9938

Gurney

Gesprächig

Beiträge: 193
Wohnort: Stuttgart
Zur Homepage von Gurney

Hat sich erledigt, war nur wieder zu blöd . Das mit dem Schieberegister funktioniert jetzt wunderbar


Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 25 Beiträge verfasst
© x sparkkelsputz        Besucher : 182130820   Heute : 4627    Gestern : 5499    Online : 724        5.10.2024    20:28
3 Besucher in den letzten 60 Sekunden        alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0373520851135