Al usar un ATmega (la familia 48/88/168/328, si es relevante) con un suministro muy débil, las resistencias de pull-up internas han demostrado que consumen demasiada corriente.
El microcontrolador se acciona a velocidades de reloj muy bajas, con un suministro entre 2 y 3 V, con todo lo que no es esencial apagado, por lo que utiliza menos de 100 µA. Todo esto está bien, pero el dispositivo necesita unos pocos botones. Si simplemente conecto los botones al suelo y uso las resistencias integradas, un solo botón, cuando se presiona, puede atraer más corriente que el resto del microcontrolador. Esto conduciría al colapso de la fuente de alimentación. Por lo tanto, tengo la intención de establecer los pines en "tri-state" y utilizar un pull-up externo mucho más alto que el integrado de 20-50k.
Sin embargo, tengo problemas para especificar el valor del pull-up externo. Obviamente, me gustaría que fuera lo más grande posible, a la vez que puedo detectar de manera confiable un alto nivel lógico.
Mi problema es que no pude encontrar en la documentación cuán alto es realmente el Z alto. Al buscar en varios foros, la única indicación fue que se mide en megaohms. ¿Pero qué tan alto es realmente? ¿Y cuál es el valor más bajo que puede tomar? ¿Cómo puedo averiguarlo, además de intentar contactar directamente con el fabricante?
No confiaría en un método empírico, ya que los pull-ups internos se especifican en la hoja de datos como 20-50k, un rango muy generoso, así que supongo que la impedancia en tri-state también podría variar significativamente. / p>
Lo probé con 330k, y funcionó, con un consumo de corriente tolerable en el rango de 10µA. Un método sería aumentar la resistencia hasta que ya no funcione, y luego tomar un valor significativamente menor que ese. Sin embargo, como no sé cuánto puede variar la impedancia del pin en el modo de triple estado entre los dispositivos, dudo que este sea el mejor enfoque.
¿Alguien tiene más información o experiencia al respecto?