4
\$\begingroup\$

The pins in Port 1 has internal pull-ups when used for input. The Mosfet is off and the drain is pulled high using an internal pull-up resister.

enter image description here

I connect an ammeter and see that the current (IL current) flowing to ground is about 15uA. I inferred that the value of the internal pull-up resister is 333k.

Now I connect a 10k resister and measure the current. I get 0.5mA (5/10k). What happened to the internal pull-up resister? Is not the internal pull-up resister and the 10k resister in series?

enter image description here

What is happening? When I use external pull-up at Port 0, things appear as expected - Resisters in series and both resisters acting as voltage divider to create a voltage drop at the pin.

ps: I am using AT89s52.

ps: The same problem exists in port 2,3

ps: Here is the current for different resisters:

- 330 ohms - 15uA
- 1k - 15uA
- 100k - 50uA 
- 220k - 22uA

The Max IL (as per datasheet) is -50uA

\$\endgroup\$
  • \$\begingroup\$ What happens if you change the 10k resistor for 4k7 or 2k2? \$\endgroup\$ – jippie May 24 '13 at 14:43
4
\$\begingroup\$

This is an informed guess rather than a definite answer, but I suspect there isn't a resistor there at all: resistors take up a lot of area in CMOS and aren't very accurate. Instead there will be a small current source made out of MOSFETs and limited to 50uA. It might be non-linear to guarantee that, no matter what pulldown you connect, the input is close to one rail or the other.

\$\endgroup\$
  • \$\begingroup\$ Thanks. I guess you are right. Either that, or something supernatural. What is amazing is that datasheet does not say more than, it to be a pullup resistor. \$\endgroup\$ – Arjob Mukherjee May 24 '13 at 18:34

Not the answer you're looking for? Browse other questions tagged or ask your own question.