PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LPT Ausgabe


vario
2009-01-10, 10:01:06
moin,
ich habe mal auf dem lpt ein rechteck ausgeben lassen und zwar so schnell es mir programmiertechnisch möglich war.

_asm
{
mov dx,0x378
start: mov al,0x80
out dx,al

mov al,0x00
out dx,al
inc a
cmp a,10000
jne start
}

gemessen im code und auch am ausgang konnte ich bis jetzt nicht mehr als 400khz erreichen.
weiss jemand ob das jetzt an windows selbst oder an dem super i/o controller des lpt liegt?

schöne grüsse

da.phreak
2009-01-10, 13:38:00
Ohne jetzt nachzulesen würde ich sagen, daß 400 khz für eine so alte Schnittstelle schon eine ganze Menge sind. Serielle Schnittstellen laufen ja auch mit maximal 115200 bps, das doppelte davon sollte der maximalen Hz-Zahl entsprechen. Mich würde es nicht wundern, wenn der Code schneller Zahlen in's Register schiebt, als der LPT schalten kann.

Wozu brauchst Du das eigentlich? Um ne Rechteck-Spannung zu generieren, würde ich nicht grad nen Druckerport wählen.

vario
2009-01-10, 13:57:36
nach langem suchen ist das, das beste was ich bis jetzt gefunden hab.
--
The effective I/O channel transfer speed of a typical computer operating at a CPU speed of 33 MHz (clock cycles per second) when sending information through a standard parallel printer port slows down to a maximum possible I/O channel transfer speed of around 1 MHz for I/O instructions. Because of the combined necessity of preserving compatibility with older parallel printer port interfaces and the overhead requirements of the parallel printer interface, the effective I/O channel transfer speed for some of the fastest computers on the current market slows down even further to approximately 600 KHz. Since it takes two I/O instructions to deliver eight bits of data to the parallel printer port (for normal printer operations), the net I/O channel transfer speed is now 200 KHz (or 1.6 million bits per second).
--

es ist eine aufgabe die ich lösen muss.
die frage war eben wo genau sich der flaschenhals befindet der das alles bremmst. in den datenblättern habe ich leider noch keine eindeutige technische beschreibung dazu gefunden.

da.phreak
2009-01-10, 20:38:21
Ich stelle mal eine Vermutung an: Der von Dir zitierte Text redet ja noch CPU-Geschwindigkeiten von 33 MHz, das ist inzwischen ein Witz. Du benutzt handgeschriebenen Assembler-Code, der auf heutigen CPUs die Daten enorm schnell in's LPT-Register schiebt ... wahrscheinlich zu schnell. Evtl. kommt die Elektronik nicht hinterher, die schnelle wechselnden Werte im Register in Spannungsimpulse umzusetzen, so daß oft schon ein neuer Wert in das Register geschrieben wird, bevor dieser als Spannung rausgegangen ist. Probiere noch mal, eine paar NOPs und/oder eine Schleife irgendwo einzufügen, die den Code langsamer ausführen läßt.

vario
2009-01-11, 13:25:17
Du benutzt handgeschriebenen Assembler-Code, der auf heutigen CPUs die Daten enorm schnell in's LPT-Register schiebt ... wahrscheinlich zu schnell. Evtl. kommt die Elektronik nicht hinterher, die schnelle wechselnden Werte im Register in Spannungsimpulse umzusetzen, so daß oft schon ein neuer Wert in das Register geschrieben wird, bevor dieser als Spannung rausgegangen ist. Probiere noch mal, eine paar NOPs und/oder eine Schleife irgendwo einzufügen, die den Code langsamer ausführen läßt.

das mit nops habe ich schon getestet nur um die frequenz zu verringern. es waren aber sehr viele notwendig ^^. mir geht es aber genau darum eine sehr schnelle frequenzfolge auszuführen um danach zu schauen was max. möglich ist am lpt. der übergang vom schnellen bus auf die langsame lpt schnittstelle ist ja das intressante. das hatte ich auch schon im verdacht nur ist es eben schwer anhand der intel datenblätter der controller genau das rauszubekommen.
son lpt ist ja ein alter isa standart 8,3MB/s bei 8 bit parallel bleiben ca 1MHz pro bit/pin über. ich messen 400kHz wo wohl der rest bleibt.

schöne grüße

da.phreak
2009-01-11, 14:03:28
Deswegen ja Schleife, das spart einiges an NOPs :-).

Daß der ISA-Bus soviel schafft, muß nicht heißen, daß die Elektronik des LPT-Ports das so schnell schafft. Auf was für einer Hardware testest Du denn eigentlich, ist das ein moderner PC? Ich könnte mir vorstellen, daß ISA auf "neueren" Mainboards nicht so schnell angebunden ist, da es ja nur eine Notlösung für alte Legacy-Hardware ist ... da hängt dann ja noch ne PCI-to-ISA-Bridge dazwischen. Wer weiß, wie schnell so ne Bridge arbeitet im Gegensatz zu nem echten ISA-Bus.

vario
2009-01-11, 14:50:45
zum testen haben wir ein süßen intel atom im d945gclf bekommen.