The text describes "Internal Weak Pull-Ups and Pull-Downs" in the book Microcontrollers From Assembly Language to C Using the PIC24 Family:

"The term weak is used because the resistance is high enough that an 
external driver can overpower the pull-up resistor and pull the 
current to near ground, producing a 0 input.
The weak pull-up is implemented as a high-resistance P-transistor and
when enabled, the gate of this transistor is 0, turning it on."

I get that a high resistance leads to a weak current output from the resistor. It's the way it is worded that doesn't register based on the previous definition of a pull-up resistor which is simply to ensure that there exists a logic level and not a float, and with the control being dictated by a pushbutton.

How can an external driver [a device that controls high and low output to the input of circuit in question] "overpower" the pull-up resistor? By increasing this current? If that is the case, doesn't V = IR imply that an increase in current increases the voltage? If this is true, how can a 0 input be generated when both scenarios have two different levels of currents flowing, which both take the same path down the pull-up resistor and either to the input, or to ground, based on whether or not the pushbutton was pressed? I am assuming based on my careful analysis of wording that the effect of "pull[ing] the current to near ground, producing a 0 input" can only happen if an external driver "overpowers" the pullup resistor.

Thanks for any help.

  • \$\begingroup\$ Just think about a voltage divider with large pull and small pull down \$\endgroup\$ – sstobbe Jul 28 '17 at 1:23

The pull-up is just a resistor connected between input pin and power rail. Weak pull-up is usually equivalent to about 50 kOhm, but sometimes it gets specified in terms of "pull-up current". This resistor pulls the input state to HIGH level, providing a defined state and avoid uncertainty related to manufacturing imperfections.

How an external driver can "overpower" the resistor? Very simple, it just drives whatever it wants, ignoring the resistor, because the resistor is weak (3V / 50k = ~ 60 uA), and the usual external driver is "strong", at least 2 mA. So it overpowers the high level to any level the driver wants. What is the problem here?

The rest of the wording refers to a particular implementation of this weak resistor, in a form of FET, apparently to be able to configure/disable this pull-up if necessary.

  • \$\begingroup\$ I think the problem is my inability to understand any composed English but my own, because I depend on the tiny nuances of language to convey a full message. I've always had this problem and overcoming it when reading a book not written by myself is difficult. Now that you worded it in a different way, I understand it better. \$\endgroup\$ – ABC DEF Jul 28 '17 at 0:10

Like this:


simulate this circuit – Schematic created using CircuitLab

M1 draws all the current from the pull-up, drawing the voltage towards 0.

  • \$\begingroup\$ OK, so the "external driver" would be M1? I think this is a confusion of definition. I thought external driver drove output of logic levels to the input of a circuit, rather than being the receiver. \$\endgroup\$ – ABC DEF Jul 28 '17 at 0:05
  • 1
    \$\begingroup\$ A "driver" can also drive the voltage towards ground. \$\endgroup\$ – Ignacio Vazquez-Abrams Jul 28 '17 at 0:06

It sounds like it might just be the terminology that's confusing you. To look at this a different way, imagine a standard pushbutton interface:


When the button is not being pressed, R1 holds the Input node to V+. When the button gets pressed, the Input node gets shorted to ground. R1 is large enough that very little current flows through the resistor during this time.

In this case, your textbook might say that the "...button is providing a short-circuit to ground which will overpower the pull-up resistor..."

I hope this helps. Also, it's a good demonstration of why we choose a large pull-up (or pull-down) resistor. If the resistance was too small, a large current would flow when the button was pushed!


Your Answer

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

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