Forum: PC-Programmierung Parallelport ,,drosseln?,,


von Nick K. (Gast)


Lesenswert?

Guten Tag,

gibt es eine möglichkeit den parallelport zu drosseln?

Projekt:

Eine Häuserlicht steuerung für die Modellbahn mit wenig Kabeln.

jedes hauß bekommt ein ystie 2x2x0,6 mit den Leitungen:
1 +
2 - (kommt vom vorherigem Häuser zähler)
3 Led An
4 Hausinterner Zähler

der p port soll mir einen 4017 zählen lassen.
Der 4017 kann nur bis ca 5mhz, der port macht aber weit mehr als 100mhz.

Lösungenidee:

1.
Ich könnte einen 5mhz takt an einen Eingang legen und bei jede pos. 
Flanke verknüpfen.


2.
Mit der SLEEP funktion? wenn ich SLEEP 1 eingebe dann funktioniert alles 
wie ich will, bloß vielviel zu langsam.




Könnt ihr mir eine Idee oder sogar eine Lösung geben?
Ich kann leider keinen Strobe Signal vom zähler oder andere IC`s 
verwenden weil es mit 4017 verbaut ist.

von Björn G. (bjoerng)


Lesenswert?

100MHz?..... wie kommst du auf diese abstruse Idee?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nick K. schrieb:
> Der 4017 kann nur bis ca 5mhz,

In der alten CMOS-Version.

> der port macht aber weit mehr als 100mhz.

Ganz sicher nicht. Mit einfachem Bitbanging auf der PC-Seite ist es kaum 
möglich, damit mehr als 1 bis 2 MHz zu erzeugen, auch wenn der PC selbst 
mit zig GHz getaktet wird.

Die Maßeinheit schreibt sich übrigens mit großem "M": MHz (Megahertz). 
Mit kleinem "m" geschrieben mHz wären es Millihertz - das ist ein 
Milliardstel von einem Megahertz.

von Nick K. (Gast)


Lesenswert?

Danke für die antworten.

Könnt ihr mir bitte erklären warum es funktioniert wenn ich den befehl
SLEEP 1
benutze?

ohne den befehl geht nix.

was mache ich falsch?

welchen 4017 soll ich nutzen? ist ja noch tauschbar weil sicherlich die 
Pin belegung gleich bleibt.

Ja sorry ich meine Mhz.

von egbert (Gast)


Lesenswert?

Schaltplan?
Quellcode?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nick K. schrieb:
> welchen 4017 soll ich nutzen?

Das ist wurscht, weil auch die alte CMOS-Version CD4017 schnell genug 
ist.

von Uwe (Gast)


Lesenswert?

Weil dein Anschlußkabel und Schaltung schlechte elektrische 
Eigenschaften haben bzw. die Schaltung einfach schlecht ist.
Sagt zumindest meine Glaskugel. Die ist so schlecht, daß du noch nicht 
mal einige 10-100kHz übertragen kannst. Und wenn du Sleep benutzt sind 
es nur noch unter 1kHz.

von Nick K. (Gast)


Lesenswert?

Portbelegung:

Ausgang 1(bitadresse-1) = LED AN
Ausgang 2(bitadresse-2) = Zähler im Haus
Ausgang 3(bitadresse-4) = Zähler der die Häuser bestimmt.
Ausgang 4(bitadresse-8) = Reset


mein program im kurzen:


Do

Out(888),0
Out(888),3
Out(888),0
Out(888),3
Out(888),0
Out(888),2
Out(888),0
Out(888),2
Out(888),0
Out(888),2
Out(888),0
Out(888),2
Out(888),1
Out(888),8


Loop


Jetzt sollte beim 2ten Haus die LED 4 leuchten.

von Daniel F. (df311)


Lesenswert?

dafür gibt es am parallelport die pins 1, 10 und 11. (1 am PC ausgang, 
10 und 11 eingang) - wenn das sendende programm gut geschrieben wurde 
bekommt man dami eine beliebig langsame übertragung zustande

von Nick K. (Gast)


Lesenswert?

Abend.

kann es sein das ich wirklich zu wenig geschirmt habe?
auf meinem testboard hab ich nur ungeschrimte drähte.

aber an meinem programm is nix falsch?

zu den Häusern liegen 2 verschiedene Kabeltypen, einmal ein 4x2 cat7 
Kabel oder ein 2x2x0,6 ystie(telefonkabel)

bitte werft doch mal paar probleme in den raum:(

von User (Gast)


Lesenswert?

Schreib mal jeden Befehl fünfmal...

von Axel R. (Gast)


Lesenswert?

programmierst Du unter DOS mit 'debug' auf der Kommandozeile?
Oder Qbasic ??

Viel Erfolg trotzdem

Axelr.

von Axel R. (Gast)


Lesenswert?

achja eins noch: was, bitte, ist ein ystie ?
> jedes hauß bekommt ein ystie 2x2x0,6 mit den Leitungen:
http://www.bing.com/search?q=ystie&form=MOZSBR&pc=MOZI

Kannst Du eine Schaltplanskizze anfertigen und uns deine Software näher 
bringen. Die Software wird ja nicht nur aus den paar Zeilen OUT(888) 
bestehen, oder?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Neben der Schaltplanskizze wäre auch ein Photo vom tatsächlichen Aufbau 
hilfreich. Nicht alles, was im Schaltplan toll aussieht, muss auch in 
der Realität so umgesetzt sein ...

von Axel R. (Gast)


Lesenswert?

http://retired.beyondlogic.org/ecp/ecp.htm

Du kannst zwischen den "outs" etwas rechnen. Verlangsamt auch. :)

Die Kabel müssen schon ordentlich geschirmt sein, wenns soo schnell 
gehen soll. Muss es aber nicht. 
http://de.wikipedia.org/w/index.php?title=Datei:IEEE1284-PrinterCableAB_pinout.jpg&filetimestamp=20070412153754

Wenn Du uns gesagt hast, womit Du proggrammierst, dann schauen wir mal, 
ob es nicht ausnahmsweise ein "SLEEP 10ms" oder sowas gibt. ;)

Wenn Du 400hex (OUT(1912),3 etc.) auf deine Basisadresee oben drauf 
legst und den Parallelport in den ECP mOdus schaltest, kannst Du tolle 
Sachen anstellen,Link oben dabei...

von Nick K. (Gast)


Lesenswert?

Danke für die Antworten!

Ich programmiere mit qbasic und ja mehr programm ist noch nicht weil ich 
es erstmal testen will, später wird da mal ne Tabelle drum gebastelt;)

J-Y(ST)Y 2x2x0,6 meinte ich.


Schaltplan lade ich dann mal hoch.

von Andreas D. (rackandboneman)


Lesenswert?

"Weil dein Anschlußkabel und Schaltung schlechte elektrische
Eigenschaften haben bzw. die Schaltung einfach schlecht ist."

Oder es wurde sich auf die Pullups im Parallelport verlassen, was auch 
nicht gerade hilft.

von Nick K. (Gast)


Angehängte Dateien:

Lesenswert?

Ja Pullups habe ich nicht mit angebracht, werde es aber testen.

von Daniel F. (df311)


Lesenswert?

Nick K. schrieb:
> Danke für die Antworten!
>
> Ich programmiere mit qbasic und ja mehr programm ist noch nicht weil ich
>
> Schaltplan lade ich dann mal hoch.

du willst ersthaft eine neuentwicklung mit einer programmiersprache 
machen, die vor 15 jahren zum letzten mal aktiv ausgeliefert wurde, nur 
auf einem betriebssystem aus der gleichen zeit läuft und das man auf 
moderner hardware (fast) nicht mehr zum laufen bekommt?
des menschen wille ist sein himmelreich

im ernst - ich würde dir folgenden plan vorschlagen:
1. du beschäftigst dich mit den grundlagen von mikrocontrollern
2. du baust dir eine µC schaltung, die vom pc steuerbefehle per rs232 
entgegen nimmt (hier tuts auch ein usb-rs232 adapter) und dann an den 
vier pins wackelt wie du es brauchst. eigentlich sollte dazu ein 
tiny2313 oder so ausreichen.
3. du baust diese schaltung in deine modellbahnanlage ein

alternativen zu 2 und 3:
a) du baust die an den pc angebaute platine gar nicht und dafür eine 
ganze hand voll slave-platinen, die dann per rs485 oder rs422 direkt vom 
pc angesteuert werden (usb-rs232 peitsche + rs232-rs422 adapter oder 
gleich in einem stück müsste es auch geben)
b) du baust schritt 2 wie oben beschrieben auf, dazu eine handvoll 
slave-platinen mit einem geeigneten bus-system deiner wahl (rs422, 
rs485, i2c, spi, ...)

Nick K. schrieb:
> Ja Pullups habe ich nicht mit angebracht, werde es aber testen.

tut mir leid, aber ich kann hier beim besten willen keinen schaltplan 
erkennen.

von Andreas D. (rackandboneman)


Lesenswert?

Braucht nicht unbedingt eine uC-Schaltung - irgendwas was GPIO über USB 
zur Verfügung stellt würde da auch schon helfen (zB die üblichen 
FTDI-Chips!)...

von Axelr. (Gast)


Lesenswert?

Aber wenn er nun schon mit OUT(888),3 soo schön direkt auf die Register 
zugriff hat? warum nicht. Läuft da eben ne alte 386er Maschine mit 8MB 
Ram und einer 40MB Platte. DANN kann er aber auch die Register 
verwenden um sie einzulesen. Was liegt hier näher, als das Timer 
Register selbst zu verwenden??
Der Timer sitzt an Adresse 0x40,(dezimal)64.
Also los:
1
dummy_read = INP(64)
2
los = INP(64)
3
 DO
4
  dummy_read = INP(64)
5
  stop = INP(64)
6
  d = los - stop
7
  IF d < 0 THEN d = d + 256
8
LOOP WHILE d < 90

die 90 bestimmt, oft die Schleife ausgeführt wird, also wie lange 
zwischen den "OUT(888),x" Befehlen gewartet wird.
Bist Du programmtechnisch in der Lage, eine Subroutine mit Qbasic zu 
schreiben, wo Du das einbindest? Wäre praktisch. Sonst musst Du das 
zwischen jeden "OUT(888),x" Befehl kopieren.

Soo - Port gedrosselt. Aufgabe erfüllt ;))

Axelr.(unangemeldet, sry))

Viel Erfolg noch :)

von axelr. (Gast)


Lesenswert?

Uuups, zwei Uhr siebzehn unter der Woche...;)
Hier noch was zum Timer:
http://wiki.osdev.org/Programmable_Interval_Timer

von axelr. (Gast)


Lesenswert?


von axelr. (Gast)


Lesenswert?

macht irgentiwe kein Sinn, sich den Kopf zu zerbrechen um sich zu 
erinnern, wie das früher mit dem QBasic ging, wenn es eh keine Sau 
initeressiert.
Die Option TIMER hatte ich zB. schlicht über die Jahre vergessen.
Na - egal...

Axelr.

von Axel R. (Gast)


Lesenswert?

Wasn jetzt?!? Geht das nun so, wie Du es Dir vorgestellt hattest?

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.