1
\$\begingroup\$

This is my programmer circuit:

circuit

I decided to try the HCT version of the nor gate (74HCT02) and I also decided to omit the capacitor to the reset. I selected 10K for all resistors except for reset, I used a 220 ohm resistor.

I did a very basic reset test on two different computers each with a parallel port.

Computer 1 is an old IBM pentium 4 with a built-in parallel port. I ran tests in Qbasic for DOS from a boot CD with no other drivers loaded.

I did the following test and got the following results on Computer 1:

Output value 1 to 378h. Got returned value C7h from 379h (seems normal) Output value 0 to 378h Got returned value 47h from 379h (seems normal)

Now Computer 2 is linux with only the basic parallel port driver loaded and with ACPI extensions disabled but the tests are awful. Here's the results:

I did the following test and got the following results on Computer 1:

Output value 1 to 378h. Got returned value C0h from 379h (seems normal maybe) Output value 0 to 378h Got returned value C0h from 379h (somethings wrong)

Whats weird is that neither parallel port is damaged and I always run circuit tests on computer 1 before I use the circuit in computer 2.

So then I thought use 10K pull-up resistors on the data input lines, but that made no difference at all.

Is there some modification I can perform in my circuit to make it work with ALL parallel ports instead of only certain ones?

I also tried disabling the parallel port drivers in linux one-by-one to see if I get more favorable results and I couldn't.

On both computers I setup my port to SPP with no bidirectional capability and same address on both computers (378-37Ah)

And yes I have tested the reset line on my circuit with a voltmeter when I ran the tests and that part responded normally.

\$\endgroup\$
  • \$\begingroup\$ don't go banging ports on linux, install the parport_pc driver and use the apropriate IOCTL calls. \$\endgroup\$ – Jasen Aug 3 '18 at 3:55
  • \$\begingroup\$ You only use D0,1 and D2-7 are floating. Many parallel port adapters have RC filters on the lines, so I would fully expect you'd read C0 for input values. Since you clearly need a serial driver for the programmer, why are you not testing with that? \$\endgroup\$ – Jack Creasey Aug 3 '18 at 4:18
  • 1
    \$\begingroup\$ I made a circuit similar to this before but I used tristate logic gates but at least the programming worked when I powered it but when I attempted a hardware reset, the circuit didn't work and i had to remove power and apply power again to get the circuit to work. As for serial driver, USB is too over-the-top and trying to use UART is also ridiculous. At least with bit-banging I got somewhere but I will take note about the RC filters. What's the worst case timing for the RC filter? \$\endgroup\$ – Mike Aug 3 '18 at 4:51
  • 1
    \$\begingroup\$ @Jasen I just tried out ioctls with the ppdev driver and the results are exactly the same. No better. Also, just for crude testing, I connected a 1K resistor between busy and ground on the problematic computer parallel port and reading the port then showed that the busy line does work but somehow it doesn't when my circuit is attached \$\endgroup\$ – Mike Aug 3 '18 at 6:11
  • \$\begingroup\$ I juste looked closer at the schematic, have you tried the software avrp , there may be some useful hints in the documentation, \$\endgroup\$ – Jasen Aug 3 '18 at 10:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.