En primer lugar, muchos microcontroladores y controladores de señales digitales tienen resistencias pull up internas. Aquí hay un ejemplo, un Atmel ATMega164.
Normalmente habrá un registro que permita activar y desactivar los pull ups internos. Debido a las variaciones en el proceso de fabricación, estos pullups internos vienen en un rango muy amplio, y no son una buena opción si necesitas un control muy estrecho sobre el consumo de corriente en aplicaciones de ultra bajo consumo. Si es importante mantener un bajo número de componentes, esta es una manera fácil de hacerlo. Utilizar pull ups internos para el debounce por hardware no sería una buena idea, ya que no es posible predecir su valor exacto.
Si el 100 \$k\Omega\$ valor es adecuado depende. Si sólo se trata de un interruptor que será accionado periódicamente por un usuario, entonces 100 \$k\Omega\$ sería una buena opción para minimizar el consumo de energía. Para las cosas que van a cambiar más rápidamente, como los codificadores rotativos, el proceso que yo seguiría es
- Encuentre la corriente máxima de caída en la hoja de datos
- Calcular un valor de pull up utilizando la ley de Ohm
- Elija una resistencia de tamaño estándar un poco más grande, en función de la velocidad realmente necesaria
- Prueba y comprueba si el tamaño de la resistencia elegida da los tiempos de subida y bajada requeridos
- Ajustar en consecuencia
Por lo tanto, si la corriente máxima de disipación por pin GPIO fuera de 10 mA y operara a 5V: \$R=\dfrac{V}{I}=\dfrac{5V}{10mA}=500\Omega\$ . Mantener este valor R lo más pequeño posible permitirá obtener los bordes más afilados y las frecuencias de conmutación más altas.