¿Es seguro controlar los pines de E/S de un AVR ATmega328P sin alimentación? [duplicar]

¿Es seguro controlar los pines de este chip AVR mientras no tiene alimentación?

Por ejemplo, si compartiera un controlador de motor de modo que pueda ser controlado por dos microcontroladores, ¿se dañaría alguno de los microcontroladores mientras el otro no tiene alimentación, pero está viendo los voltajes de señal en sus pines del otro microcontrolador?

EDITAR: debido a que esto se marcó como duplicado, aquí hay algunas aclaraciones. La MCU especificada aquí es diferente de un fabricante diferente. Aunque no estoy seguro, su operación y límites ciertamente serían diferentes. Esta pregunta no se trataba de si 'debilitará' la MCU, sino de si es seguro hacerlo en primer lugar. El debilitamiento de la OMI significaría que es posible, pero con el tiempo degradará el rendimiento de la MCU.

¿Qué dice la hoja de datos bajo calificaciones máximas absolutas?
Tenga en cuenta que los pines IO probablemente tengan diodos de protección ESD que significarán que su MCU tendrá alimentación fantasma si lo conduce sin alimentación.

Respuestas (7)

Quizás le interese el video de EEVBlog sobre cómo alimentar una MCU sin conectar los pines de alimentación . Si maneja los pines de E/S en la MCU, puede terminar encendiendo la MCU a través de sus diodos de protección.

Si, después de la caída del diodo, su VCC termina por debajo o por encima del voltaje mínimo requerido para impulsar su MCU (o consume más corriente de la que pueden manejar los diodos internos), entonces no funcionará correctamente. Por supuesto, esto supone que su VCC tiene un circuito abierto y no tiene un cortocircuito a tierra (o cero voltios).

Aquí hay un diagrama del circuito equivalente para su Atmega328p:

ingrese la descripción de la imagen aquí

Tenga en cuenta los diodos de tierra a VCC.

De cualquier manera, la hoja de datos no especifica explícitamente el comportamiento exacto de conducir el Atmega328p desde un pin de E/S.

Sin embargo, dice que el voltaje máximo absoluto que puede aplicar a un pin de E/S (no nRESET) es Vcc+0.5V. Como señaló mbrig en los comentarios, si enciende el chip con alimentación fantasma, es muy probable que la caída del diodo provoque que el voltaje en el pin de E/S sea mayor que Vcc+0.5V.

La hoja de datos establece que operar el ATmega328p fuera de sus clasificaciones máximas absolutas puede causar daños permanentes, por lo que recomendaría no hacerlo.

Y si el VCC está conectado a tierra, un voltaje en el pin de E/S simplemente provocaría un cortocircuito a tierra, lo que generaría una corriente excesiva y posiblemente quemaría al menos el diodo de protección, ¿verdad?
Voté a la baja porque esta situación no es "no especificada", está bastante claro en la hoja de datos: aplicar voltajes> Vcc + 0.5 (que debe ser cierto para la alimentación fantasma del IC) a cualquier pin viola las clasificaciones máximas absolutas y puede dañar el chip.
Entiendo. Si tuviera que mantener la MCU alimentada, eso mantendría los voltajes de E/S dentro de límites seguros y eso debería estar bien, ¿verdad?
@electrophile Verifique la hoja de datos con su diseño. Si lo está operando dentro de los umbrales recomendados, estará bien
@mbrig he editado la respuesta para aclarar
@ilkkachu Sí, si Vcc está conectado a tierra de alguna manera, correrá el riesgo de dañar el ATmega328p y lo que sea que lo esté impulsando.
Genial, ¡voto negativo eliminado!

De la hoja de datos:

Hoja de datos de ATmega328p: "Características eléctricas: clasificaciones máximas absolutas"

El voltaje máximo en cualquier pin que no sea _RESET se especifica como "Vcc + 0.5V". Si el chip no tiene alimentación, Vcc es 0, así que no, no puede aplicar con seguridad ningún voltaje superior a 0,5 V.

Si desea compartir una E/S entre dos partes, donde una de ellas puede estar sin alimentación, necesita algún tipo de interruptor.

Sin alimentación podría significar circuito abierto y no necesariamente 0V
@tangrs Cierto. La hoja de datos realmente no tiene en cuenta esa posibilidad, pero ciertamente tampoco dice que esté bien. (Y definitivamente no lo es).
Es probable que los rieles de alimentación contengan capacitancia que requiera carga para elevar el Vcc, por lo que "sin alimentación" es muy similar a "a 0 voltios". +1.

No.

En la entrada de la mayoría de los pines de un dispositivo como el AVR ATmega328 hay diodos para proteger el chip de descargas electrostáticas (ESD). Estos diodos se conectan al riel de suministro del dispositivo.

Si conduce una señal lógica a un pin cuando el dispositivo no está encendido, intentará encenderse a través del diodo. Es posible que esto no cause daños, pero a menudo afectará el circuito de encendido y reinicio, por lo que el dispositivo no se encenderá correctamente cuando haya energía disponible. A menudo es una causa de consumo de energía inesperado en los circuitos alimentados por batería.

Debe instalar un multiplexor para seleccionar qué MCU impulsa su controlador de motor o disponer que ambas MCU reciban alimentación, pero la que no está diseñada para operar el motor mantiene sus puertos de E/S en un estado de alta impedancia (por ejemplo, como un aporte).

Puerto típico de E/S de MCU

Sé que se pueden configurar como entradas a través del software, sin embargo, ¿hay alguna forma a través del hardware de poner todos los puertos IO en estado de alta impedancia?
Puede colocar búferes de tres estados entre los pines de E/S de cada microcontrolador y el controlador del motor. Haría arreglos para que los búferes siempre estén encendidos, pero configure la señal de habilitación de salida en el búfer en consecuencia según el microcontrolador que esté encendido. Este es esencialmente el mismo hardware que está dentro de los controladores de salida de las MCU, pero al separarlo como una parte discreta, puede controlarlo por separado de la alimentación de la MCU.
Si mantiene el procesador en reinicio, todos los puertos IO deberían tener una alta impedancia (la hoja de datos explica lo que sucede en el reinicio). El procesador tardará un tiempo en iniciarse cuando suelte el reinicio. Aunque eso puede funcionar para ti.

Inseguro tanto para AVR como para el otro MCU. El AVR intentará encenderse cuando la otra MCU lleve su pin de E/S a "alto". No es bueno para AVR: está destinado a encenderse desde su pin de suministro dedicado. De lo contrario, pueden pasar cosas malas. Dado que el fabricante dice explícitamente "no hagas esto", el fabricante no está obligado a decir qué "cosas malas" podrías encontrar. Mi experiencia es que "malo" va desde muy extraño hasta humo .
Dado que el AVR puede parecer un cortocircuito a tierra, la otra MCU (tratando de subir su pin de salida) encontraría una carga pesada. Puede fallar al tirar tan alto como debería y hacer que fluya demasiada corriente (poniéndola en riesgo).
En riesgo también está su controlador de motor, especialmente si es PWM. Sin saber si va a ser "alto" o "bajo" (en algún punto intermedio), puede sobrecalentarse.
Así que lo arriesgas todo .

De acuerdo con la especificación, V ih = V CC + 0,5 V, por lo que solo por eso es no.

Sin embargo, si V CC está realmente "abierto", la alimentación de los pines de E/S aplicará un V CC fantasma al dispositivo, por lo que en realidad no estará apagado, lo que anula el problema anterior, pero abre un nuevo lata de gusanos.

Incluso si lo anterior no fuera un problema, no hay garantía de que realmente pueda conducir un pin de E/S alto cuando el dispositivo está apagado. Es posible que la salida tenga una resistencia a tierra extremadamente baja.

Por cierto, el último problema también se aplica a los pines de entrada . Suponiendo que los chips V CC se hayan degradado a tierra, la entrada representará un diodo a un capacitor a tierra en cualquier señal que esté tratando de medir con el otro dispositivo.

Básicamente... no lo hagas.

Aunque no está en la hoja de datos, la regla general es que los diodos de protección ESD internos pueden tener 1 mA para un chip AVR de 8 bits. Los diodos permiten más corriente, pero el 1mA es el máximo recomendado.
Cuando un divisor de voltaje se hace con dos resistencias, este 1mA se puede usar para calcular el voltaje máximo permitido para el divisor de voltaje.

La Nota de aplicación de Atmel AVR182 menciona el 1mA.

Una corriente positiva en un pin fluye a VCC y podría alimentar el chip AVR y/o el circuito. Eso podría resultar en un comportamiento impredecible cuando el chip AVR está funcionando cerca de su límite de voltaje más bajo.
Con suficiente voltaje y corriente, incluso podría elevar el voltaje muy por encima de 5.5V y destruir el chip AVR. Especialmente cuando el chip AVR está en modo de suspensión. Por lo tanto, es peligroso usarlo, pero se puede hacer.

Siempre tenga cuidado al aplicar voltajes a un pin. Utilice una resistencia de protección para limitar la corriente. Eso también es más seguro para el funcionamiento normal. Eso significa que cuando dos chips AVR de 5 V están conectados entre sí, debe haber resistencias de 4k7 entre ellos para limitar la corriente a aproximadamente 1 mA cuando un chip AVR no tiene energía. Dependiendo del circuito, ese 4k7 podría influir en las señales.

Puede haber aún más consecuencias, no estoy seguro de haberlas mencionado todas.

¿Es seguro controlar los pines de este chip AVR mientras no tiene alimentación?

lo que es seguro o no es relativo.

la alimentación fantasma de un dispositivo puede ser útil -> básicamente encender a pedido. por ejemplo, puede tener una configuración en la que los esclavos tengan alimentación fantasma y normalmente estén apagados. el maestro puede enviar algunos pulsos en la línea de transmisión para despertarlo y una vez que finaliza la transmisión, el dispositivo se apaga solo.

pero como todo en la vida, conlleva sus propios riesgos que deben reconocerse y gestionarse adecuadamente.

por lo que es erróneo decir categóricamente que la alimentación fantasma es una buena o mala práctica.