LPT Acknowledge Pulslänge

Gast #1074969
Lesenswert?

Hallo,

ich schreibe mir gerade einen "Druckersimulator" auf einem AVR Mega16, 
der dazu dient Daten von einem Messgerät, welches seine Daten über eine 
LPT Schnittstelle drucken kann, mitzuloggen. Der Ablauf findet nach ganz 
normaler "SPP Manier" statt; also auf STROBE warten, BUSY setzen, 
Datenleitungen lesen, BUSY löschen und auf ACK einen Impuls ausgeben. 
Die Frage ist nun: Wie lange muss der ACK Impulse sein ? Sendet der Host 
erst wieder nachdem ACK gelöscht wurde ?

Gruß
Ja mann
#1075011
Lesenswert?

Hallo,

das kann auch stark von der Laune des Programmierers abhängen.
Da es vom Timing bei Ack und Busy ohnehin mindestens 2 Varianten gab 
(Epson und der Rest der Welt), wurde z.B. bei C64-Userport-Druckroutinen 
meist nur auf das Ende von Busy gewartet und dann das nächste Byte zum 
Drucker geschickt.
Kann durchaus sein, daß das Messgerät es auch so hält, da hilft dann nur 
probieren...
Die Längen sind relativ unkritisch, das geht für heutige Verhältnisse 
alles recht geruhsam ab.

Gruß aus Berlin
Michael
Gast #1075637
Lesenswert?

>bei C64-Userport-Druckroutinen
>meist nur auf das Ende von Busy gewartet und dann das nächste Byte zum
>Drucker geschickt.

>Ack wird normalerweise nicht beachtet bzw. nur im interrupt Betrieb
>genutzt.

Danke, das war's; ich hatte durch das Erzeugen des Ack-Impulses Zeichen 
verloren, nachdem ich das entfernt hatte ging es ohne Probleme!

Für alle die das gleiche Problem haben und diesen Beitrag mit der Suche 
finden:
1
  BUSYOFF;
2
  ERROFF;
3
  SELON; //Printer online
4
  while (1)
5
  {
6
    loop_until_bit_is_clear(PINC, PC5); //Wait for STROBE
7
    BUSYON;
8
    loop_until_bit_is_set(UCSRA, UDRE);
9
    UDR = PINA;
10
    BUSYOFF;
11
  }

Vielen Dank,
Ja mann

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren