La pregunta se puede aplicar a cualquier microcontrolador con capacidades de E/S, pero actualmente estoy trabajando con el popular ATmega328p. Considere el siguiente circuito: Un simple interruptor SPST Normalmente Abierto con una resistencia pull-up de 10k y un condensador cerámico conectado a cualquier puerto de E/S. El pin específico debe ser obviamente configurado como INPUT en el respectivo DDRx. El datasheet describe, dentro de la sección de características DC, un pin de E/S de corriente de fuga de entrada \$ (I_{IL}/I_{IH})\$ de 1µA, mientras que en el horizonte la corriente continua por pin de E/S se limita a 40,0mA. No es un problema en absoluto.
DDRD = 0x00; // Entire port as INPUT
Ahora considera que olvidé el hecho de que el pin dado tiene que ser puesto como Entrada, lo puse como Salida y puse el Puerto en ALTO.
DDRD = 0xFF; // Entire port as OUTPUT
PORTD = 0xFF; // Entire port HIGH
Aunque la hoja de datos no proporciona una Impedancia de Salida se puede estimar en un 25 en base a los gráficos dados. Ahora en el momento en que el botón es presionado la corriente encuentra su camino a través del microcontrolador desde la fuente de 5V con una resistencia de 25 más una resistencia insignificante debido a la traza de cobre. Esto teóricamente produce una sobrecorriente de 160mA por encima del techo de corriente continua por pin de E/S. ¿Podría esto freír el puerto y el dispositivo? Análogamente, si paso a lógica positiva y pongo el puerto en LOW podría darse el mismo problema:
DDRD = 0xFF; // Entire port as OUTPUT
PORTD = 0x00; // Entire port LOW
Teniendo en cuenta que este tipo de circuito se fomenta ávidamente, ¿cómo no parece traer problemas? Ahora, volviendo a la pregunta original, ¿no debería ser extremadamente cauteloso al establecer un pin de E/S como Salida? ¿O al menos colocar una pequeña resistencia en serie como protección primitiva?
Nota: No soy un hablante nativo de inglés, no dudes en editar el post si ves algo incómodo.