Forum: Mikrocontroller und Digitale Elektronik Hat jemand ein Programm für UART über LPT oder Gameport?


von Alexander _. (bastlwastl)


Lesenswert?

Tag

Mich würde interesieren ob schon jemand ein Programm für
UART-Komunikation über LPT oder Gameport geschrieben hat oder ob ich
dass selbst schreiben muß.

Ich habe nämlich keine Lust einen Pegelwandler zusammenbasteln.

Wenn keiner eine Quelle weis, dann muß ich mir halt was für den
Gameport selber schreiben.

mfg Alex

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Vergiss es. Das für eine UART im "Handbetrieb" (Bit-Banging)
erforderliche knappe Timing wirst Du nicht hinbekommen, sofern auf
Deinem PC auch nur irgendeine Art von Betriebssystem läuft.

Du musst die Lesedatenleitung mit mindestens der 8fachen Baudrate
abtasten, um halbwegs zuverlässig Daten empfangen zu können; bei gerade
mal 1200 Baud hast Du so bereits eine Abtastrate von 10 kHz.
Das ist beispielsweise unter Windows nicht realisierbar, es sei denn,
Du schreibst einen Devicetreiber dafür ... was ich für unwahrscheinlich
halte.

Du solltest Dich mit dem Gedanken abfinden, daß Du vielleicht doch zwei
Euro fuffzich ausgeben musst und einen Max232 und vier Kondensatoren auf
Deine Schaltung mit draufpackst.

von Rahul (Gast)


Lesenswert?

Oder du nimmst einen MAX233. Da spart man sich die Kondensatoren, gibt
aber etwas mehr Geld aus...

von Alexander _. (bastlwastl)


Lesenswert?

Tag

Windows hat sogenannte high-performance-counter die bis auf 10ns bis
100ns genau zählen.
(Der wird so viel ich weis auch für die Schnittstellen verwendet.)

Weiters habe ich vor das Ganze mit einem eigenen Task mit höchster
Priorität zu machen.

Und der LPT kann so viel ich weis jeden Ein- und Ausgang mit 500kHz
ansteuern.

Dass müsste doch hinhauen.

Ich wollte nur wissen ob's sowas schon giebt bevor ich mir die Arbeit
antuhe.

mfg Alex

von Andreas W. (Gast)


Lesenswert?

Wie wärs mit MIDI (über Gameport). Ist ja auch ein UART mit 31250 Baud.

von TravelRec. (Gast)


Lesenswert?

Wenn Du am LPT hängst, dann fütter doch nicht erst ein UART, sondern
kommuniziere doch gleich parallel - dennoch - ohne Treiber wird das
nix. Die Kommunikationsgeschwindigkeit des LPTs hängt übrigens stark
von dem verwendeten Rechner ab und schwankt, je nach Alter der Kiste
zwischen 500kB/s bis 2MB/s, Betonung liegt auf Byte, weil
PARALLELPORT.

Wenn Du den Gameport nutzen willst, sieht das schon anders aus. Dort
gibt es nämlich eine genormte Schnittstelle, in Fachkreisen auch MIDI
genannt, die serielles FullDuplex bietet. Allerdings funktioniert diese
Schnittstelle im Allgemeinen als Stromschleife auf Optokoppler (jeweils
im Eingang). Die Baudrate ist hier fest und liegt bei 31.250 Hz. Als
Kommunikationssoftware ist MIDI-OX zu empfehlen. Du mußt ´Dich aber
nicht wundern, wenn diese mehr zum Musikmachen gedacht ist, weil MIDI
ist ja geradezu prädestiniert dafür ;-).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zwar hat Windows auch Performancecounter mit der von Dir genannten hohen
Auflösung, aber weder wird damit die normale UART angesteuert noch kann
eine Usermodeapplikation mit deren Auflösung I/O-Operationen
durchführen.

Das geht NICHT, völlig irrelevant, mit was für Taskprioritäten Du
Deinen Rechner vergewaltigen willst.

Auch der LPT kann, mit einem Usermodeprogramm angesteuert, nicht die
von Dir genannten Datenraten erreichen, vor allem nicht beim Einlesen
von Daten.

Wenn Du wirklich krampfhaft (und pathologisch) daran festhalten willst,
serielle Kommunikation ohne Pegelwandler zu machen, dann solltest Du den
Vorschlag von TravelRec umsetzen und die Midi-Schnittstelle für diesen
Zweck missbrauchen.

Oder Dir einfach mal ansehen, welche Alternativen zu richtigen
V24-Treiberbausteinen existieren; mit ein paar Widerständen, Dioden und
'nem Transistor kann man sich da nämlich auch was zusammenfrickeln.

Solltest Du eine symmetrische Spannungsquelle mit +/- 12V zur Verfügung
stehen haben (+/- 5V würden auch schon reichen), dann kannst Du auch auf
die klassischen V24-Treiberbausteine MC1488/MC1489 zurückgreifen und auf
die Kondensatoren der Ladungspumpe verzichten.

Da im Inneren des PCs diese Spannungen zur Verfügung stehen (+12V Gelb,
-12V Blau, Masse Schwarz) sehe ich wirklich keinen Anlass für
irgendwelche Hirnknoten und Rechnermissbräuche.

von Alexander _. (bastlwastl)


Lesenswert?

Bis Win98 kann man ohne Treiber direkt auf die Register und somit auf
den LPT zugreifen.
(_inp(Adresse) und _outp(Adresse,Wert) bei C/C++)

Ich wollte es eigentlich nur desswegen machen weil es möglich sein
dürfte.

Dies dürfte übrigens auch der Hauptgrund für die meißten
Elektronikbasteleien sein.

Wenns nicht / bedingt möglich ist, werd ich halt wie alle anderen nen
Pegelwandler verwenden.

mfg Alex

von Max (Gast)


Lesenswert?

Möglich ists schon, irgendwelche Pegel mehr oder minder schnell auf dem
Parallelport auszugeben / abzufragen. Aber wie Rufus bereits bemerkte:
Das Timing ist das Problem. Im Allgemeinen geht man von einer
Abweichung von max. +/- 3% von der Baudrate aus, die gerade noch
tolerierbar ist.
Da ALLE Windows-Betriebssysteme von einem Realtime-OS so weit weg sind,
wie es irgendwie geht, kannste das abhaken. Unter DOS oder
Realtime-Linux ist so etwas evtl. möglich, aber nicht sinnvoll.
Wie wärs denn mit einem kleinen Atmel als Protokollwandler? Auf der
einen Seite 5V-Rs232, auf der anderen Seite bidirektional parallel.
Damit sparst Du Dir die ganzen Verrenkungen mit Windows. Ist aber
komplizierter, als ein Pegelwandler, und dementsprechend sinnvoll ;)

von Alexander _. (bastlwastl)


Lesenswert?

Das Windows kein echtzeit OS ist weis ich.

Ich hatte mir überlegt mehrere Mikrokontroller über die parallele
Schnittstellen zu verbinden und den PC als "Verteiler", externer
Speicher und zur Protokollierung zu verwenden.

Das war halt nur mal so eine kleine Überlegung nach dem Motto:
Wiso soll ich es so machen wie alle Anderen.

Es muß doch auch anders funktionieren.
(Vorallem weil die 2 Com schon anderweitig gebraucht werden.)

Mir ist aber gerade eine weitere nicht COM Komunikationsmöglichkeit
eingefallen die ich nochmal kurz durchdenken will.

mfg Alex

von Jens D. (jens) Benutzerseite


Lesenswert?

USB?
oder bau dir noch eine rs232 karte ein...

von Wegstabenverbuchsler (Gast)


Lesenswert?

@Bastlwastl
"Das war halt nur mal so eine kleine Überlegung nach dem Motto:
Wiso soll ich es so machen wie alle Anderen."

ganz einfach, weil du nach Lösungen gefragt hast. Vermutlich haben
"alle Anderen" da rausgelesen: < nach schon mal verwendeten,
funktionsfähigen Lösungen. >. Wie sie halt alle Anderen schon
mindestens einmal in Betrieb hatten.

Aber vielleicht bist du auf der Suche nach neuen kreativen
Brainstorm-Ansätzen, wie dein Rechner mit der Außenwelt Verbindung
aufnehmen kann, ohne daß schonmal "alle Anderen" auf deise Iden
gekommen sind. Ich werd mich mal versuchen:


a) Zur Eingabe nutze deine Maus als E/A Schnittstelle. Es muß eine
optische sein, und über Optokoppler blinkst du der Maus etwas vor..

b) Ausgabemäßig könnten Status-LEDS von Testatur,
Festplatten-Kontrolleuchte oder die Laufgeräusche des Lüfters (PWM)
herhalten

Alternativ könntest du den Bildschirm beliebig modulieren und da dem
Rechner einen Kommunikationsweg "nach draußen" eröffnen. Gab es nicht
mal so eine Uhr von ???? die man damit hypnotisieren konnte? davon
kannst du dann ein paar Subroutinen recyclen.


Auf solche Ideen ist hoffendlich noch niemand gekommen, und du kannst
es dann wie gewünscht machen "wie NICHT alle Anderen"

von Ratber (Gast)


Lesenswert?

Ja,für ne weitere USV/232 is immer platz.

Die funktionieren als vorgesehene RS232 bestens und 4 Serielle kann
jeder PC der Welt ,egal wie Alt er ist und welches OS drauf läuft immer
verwalten denn Com1-4 sind standardisiert.

So und derzeit moderne Betriebssysteme wie irgendein Linux,W2k,XP oder
meinentwegen auch ein Unix sind in der Lage "mindestens" 8 Serielle
zu verwalten.

Is also Reserve genug da.

Wem das allerdings immernoch nicht reicht für den gibt es dan die
Hardcorevarianten als Schnittstellenkarten die bis zu 256 RS232 Ports
liefern die auch alle gleichzeitig bedient werden können sofern der
Rechner genug Schmalz im Hirn hat (Rechenleistung).
Kostet dann allerdings etwas mehr.


Eine weitere Frage ,die man sich auch im Jahr 2005 leider immernoch
stellen muß ist ob das Programm das man nutzen möchte auch fähig ist
diese angebotenen Seriellen anzusprechen.

Ab und an flattert einem ja so verkrüppelte Soft auf die Platte die nur
fähig ist Com1 und Com2 auf standardpararmeter (Adr,IRQ) zu bedienen.

Eine gute Soft unter Windows sucht also nicht nach Standardadressen
sondern nimmt alles was das System als Schnittstelle liefert.
Das ist aber nur eine Frage des Programierstils.

Also die paar Euro für nen USB/232 sollten doch irgendwo noch aus der
Sesselritze zu angeln sein.

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
Noch kein Account? Hier anmelden.