Demasiado pequeño:
Esto provoca un exceso de consumo de corriente cuando se quiere "contrarrestar" el pull-up/pull-down.
Digamos que tienes un circuito pull-up como este:
simular este circuito - Esquema creado con CircuitLab
Cuando M1 está "cerrado", estás cortocircuitando la salida a tierra. Así que la corriente que fluye a través de R1 es:
\begin {Ecuación} I = \frac {Vs}{R1} \end {Ecuación}
Dependiendo de la potencia de la resistencia que tengas, de las limitaciones de Vs, y de las limitaciones del interruptor M1 (no tiene que ser un MOSFET o incluso un transistor), puedes calcular un límite inferior de resistencia que empezará a causar problemas. Puedes hacer un cálculo similar para las resistencias pull-down. Cuando R1 se hace muy pequeño (o la resistencia de encendido del interruptor se hace grande), empiezas a tener circuitos divisores de voltaje y de repente el nivel de salida ya no es una señal digital. Podrías usar esto para mejorar el valor del límite inferior, pero en realidad no suele haber necesidad de acercarse a este límite inferior.
Demasiado grande:
Las resistencias de pull-up grandes limitan excesivamente la cantidad de corriente que se puede suministrar a la salida. Esto tiene algunas consecuencias:
- Si la salida tiene alguna capacitancia (parásitos de la traza, capacitancias de la puerta, etc.), la tensión de salida podría tener algún tiempo de subida significativo similar al de un circuito RC.
- La suposición de que todas las "fuentes" y "acoplamientos" externos son insignificantes empieza a romperse. Por ejemplo, los efectos de interferencia o de antena pueden llegar a ser significativos.
No puedo decir cómo explicar el segundo punto o los otros puntos en general, pero veamos el primer punto:
Un circuito RC tiene una constante de tiempo de t=RC. Si tienes una línea de señal que depende de resistencias pull-up/pull-down (I2C), el tiempo de subida de señal más rápido que puedes transmitir está limitado por esta constante de tiempo.