Busy /Ack Time
State Action bat baT bAt bAT Bat BaT BAt BAT
1 Get next byte of data
T=0.5us Release /Strobe, Assert Data
1 5 1a 2b 1 6 4
2 T=0.5us, Assert /Strobe, Assert Data 2 1 2c 6 5 3d 3
3 T=0.5us, Release /Strobe, Assert Data 5 3 4 3 4 3e 4f
4 T=10s, Release /Strobe and Data 5i 4h 1 5 4g 6
5 T=5ms, Release /Strobe and Data 5j 6 1k 5 5 4

  1. a: bAt - Printer not Busy, has released /Ack, we assert data without /Strobe and wait .5us

    b: bAT - We have been waiting .5us, now its time to:

  2. c: bAt - Printer still not Busy, /Ack released, we keep data on and assert /Strobe

    d: BAt - We have a Busy from the printer in response to our /Strobe. Do we need to wait anyway? If so make this a 2 and move to 3 when BAT.

  3. e: BAt - We can release /Strobe since the printer responded to it and just need to keep the data on for another .5us.

    f: BAT - Data was kept up for .5us, now we can:

  4. g: BAt - Release the data and wait for a long while to let the printer work.
    h: bAt - The printer is finished working on the data, but has not yet acknowledged reciept

    i: bat - The printer is asserting /Ack

  5. j: bat - We believe we have sent a byte to the printer. Now we just wait for the /Ack to release

    k: bAt - The /Ack is over, we can repeate the process.

1 2 3 3 4 4 5

Busy

_ _ ~ ~ ~ _ _

/Ack

~ ~ ~ ~ ~ ~ _

/Strobe

~ _ _ ~ ~ ~ ~

Data

D D D - - - -