0
\$\begingroup\$

I attempted to make myself a 2-in-1 programmer so I can program both AT89Cx051 and AT89S52 on the same board without having to do so much plugging/unplugging of the port.

circuit

The main issue is the strobe pin aka reset (RST in circuit). (pin 1 of the DB25 connector). I tested it with a PC and got no results.

What seems to somewhat work is if I connected RST to VCC via a 1K resistor. It somewhat works because even though the output is only at 3.8V instead of 5 (which VCC is also at), it puts the AT89S52 in reset mode as expected, but I'm not getting 12V at pin 1 of the small AT89Cx051 socket.

If I don't make the manual connection, then I get 1.4V measured at RST, even after I added a 10K resistor between VCC and RST. Without RST being forced to ground, I should get 5V but I'm not.

I have also tested the transistors manually from leg to leg using the diode setting on the multimeter and they turned out fine. The resistors going to the base of the transistors are 2.2K and I used 1K resistors in place of the diodes. All other resistors are 10K. The resistor going into the buffer (74HC125) is 0 ohm.

All capacitors are 0.1uF.

Why would I be getting such awkward voltages for reset pin? Am I using too weak of resistors or something?

UPDATE

So I ended up making myself an ms-dos 6.22 bootdisk and booted my machine into that with qbasic to test the parallel port (with port at address 278-27AH ) in general with simple circuitry and that seems to work decently.

When I teted only the parallel port on the pc with only a voltmeter with anode lead connected to the strobe pin, I get the following results:

Qbasic code           Result
OUT &H27A, 0          4V output from strobe
OUT &H27A, 1          0V output from strobe

When I plugged my circuit into the port, the voltage dropped:

Qbasic code           Result
OUT &H27A, 0          1.56V output from strobe
OUT &H27A, 1          0V output from strobe

How is it possible I'm only getting 1.56V from that pin?

update 2

I disconnected the 12V line from the circuit and the voltages on the reset line are now 1.52V and 0V

\$\endgroup\$
  • \$\begingroup\$ These diagrams are very confusing. How exactly are the two connected (assuming they are connected)? \$\endgroup\$ – BeB00 Jan 20 '18 at 20:24
  • \$\begingroup\$ I tested it with a PC and got no results. ... what does this even mean? \$\endgroup\$ – jsotola Jan 20 '18 at 20:26
  • \$\begingroup\$ What's the voltage on X2, pin 1? If there is an external pull-up on that line it may be turning on T1 somewhat and pulling RST low. \$\endgroup\$ – Transistor Jan 20 '18 at 20:26
  • 1
    \$\begingroup\$ jsotola. it means I was expecting some kind of reaction to my circuit as a result of using the PC to change the strobe value but it seemed nothing happened. I could blame the PC since the tests were done in Windows XP. I'm looking at putting on a DOS partition to help me troubleshoot better once I figure out why I have a low voltage problem \$\endgroup\$ – user152879 Jan 20 '18 at 20:35
  • 1
    \$\begingroup\$ jsotola, I'm taking the PC out of the equation right now because the reset line isn't of the right voltage (without the PC connected) \$\endgroup\$ – user152879 Jan 20 '18 at 20:42
2
\$\begingroup\$
  1. You are missing a 10 K pull-up resistor in series with a 1N4148 diode at the reset pin of the MPU itself. You show CRESET as being there for programming the IC, but no 3.3 volt pull up which MUST be there. Your reset transistor needs a current on its collector at all times or the IC may stay in reset state.

  2. The diode is to prevent 12 volts from going back into the Vcc 3.3 volt line during programing.

  3. Pin 1 of your DB25 connector should have a 10 K resistor to ground so the reset transistor does not turn ON due to leakage currents.

  4. To reset the IC you need to ground its RESET pin or connect pin1 of the DB25 connector to Vcc. At least that should be your goal.

  5. I am not sure where or why you get 1.4 volts on the reset pin. First of all your are not defining which reset pin. The IC or the DB25 pin 1. Plus you are missing important pull-up and pull-down resistors so by my standards the 1.4 volts is just leakage current.

  6. I am sure you will see the 1.4 volt reading change and be more sensible once you install the resistors and diode I mentioned.

  7. You missed a couple of important steps that should get it working correctly, at least the RESET function anyways.

  8. In all honesty your diagram is a bit confusing. I am only looking at the left schematic with the DB25 connector, which you have pin1 as RESET if it is high. It cannot be open collector unless it is a PNP transistor because T1 must have its base pulled low or it will reset the MPU.

  9. You are sooo close to having it right. Yes the diode is forward biased from a 3.3 or 5 volt line, through the 10 K resistor. This insures that the MPU RESET pin is held high, yet can still act as a programming pin. The 3 pin connector should NOT be used unless you are programming the MPU.

\$\endgroup\$
  • \$\begingroup\$ I guess my schematic wasn't clear. that resistor labelled CRESET is 2.2K which connects to +12VDC. the 3-pin jumper is the power connection. And the diode needs to be the 1N400x forward biased I guess? I'm not sure what 3.3V you're referring to but my circuit uses 5V mostly (but 12V for AT89Cx051 reset pin). I will consider trying point #3, but isn't the strobe line (pin 1) for parallel port open-collector? The reset line I'm having an issue with is the one connected to parallel port pin 1. I'm unsure why I need pull-downs. I'm trying to comply with port standards unless they changed? \$\endgroup\$ – user152879 Jan 21 '18 at 4:11
  • \$\begingroup\$ In all honesty your diagram is a bit confusing. I am only looking at the left schematic with the DB25 connector, which you have pin1 as RESET if it is high. It cannot be open collector unless it is a PNP transistor because T1 must have its base pulled low or it will reset the MPU. You are sooo close to having it right. Yes the diode is forward biased from a 3.3 or 5 volt line, through the 10 K resistor. This insures that the MPU RESET pin is held high, yet can still act as a programming pin. The 3 pin connector should NOT be used unless you are programming the MPU. \$\endgroup\$ – Sparky256 Jan 21 '18 at 4:21
  • \$\begingroup\$ I added the above comment to the answer. \$\endgroup\$ – Sparky256 Jan 21 '18 at 4:28
  • \$\begingroup\$ That is the intention of this whole board to be able to program both microcontrollers. I have NPN for T1 because then the plan is reset pin can see 12V (programming mode) if NPN base is low or 0V if the NPN base is high. I don't understand where the 3.3V is coming from unless theres some resistor network I made that I'm not seeing? \$\endgroup\$ – user152879 Jan 21 '18 at 4:29
  • \$\begingroup\$ and the open collector I'm referring to is what's in a parallel port at the PC end. I got the info here: retired.beyondlogic.org/spp/parallel.htm and it states: "The printer would not send a signal to initialize the computer, nor would it tell the computer to use LF. However these outputs can also be used as inputs. If the computer has placed a pin high (e.g. +5v) and your device wanted to take it low, you would effectively short out the port. Therefore these lines are "open collector" outputs. This means that it has two states. A low state (0v) and a high impedance state." \$\endgroup\$ – user152879 Jan 21 '18 at 4:31

Your Answer

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