¿Qué valores de resistencia y condensador usar para el aislamiento del pin de reinicio del AVR?

Fondo...

Soy un novato en las aplicaciones AVR. Recientemente construí dos circuitos basados ​​en ATTINY13 (luces intermitentes LED glorificadas) que funcionaron correctamente (independientemente) en la placa de prueba. Cuando los combiné en una placa perforada de soldadura con una fuente de alimentación compartida, las cosas se volvieron locas. Después de mucha investigación, parecía que se reiniciaban constantemente.

Me había dejado el pin 1 (reset) de cada micro desconectado. Investigué formas adecuadas de manejar el pin de reinicio y, a partir de esto, implementé lo siguiente:

  1. Se agregó un condensador electrolítico de 100 uF en paralelo con la fuente de alimentación para ayudar con cualquier consumo de corriente potencial que la fuente de alimentación sería demasiado "lenta" para manejar.

  2. Se agregó una resistencia de 4.7K de VCCaRESET

  3. Se agregó un capacitor cerámico de 0.1uF de GNDaRESET

Estos pasos resolvieron el problema por completo.

La pregunta:

La página que vinculé anteriormente brinda consejos al hacer ISP (programación en el sistema) que no estoy haciendo (todavía). (Estoy programando los micros por separado sin otros componentes conectados a ellos).

He visto varios valores diferentes de capacitor (10nF, 0.1uF, etc.) y resistencia (4.7K, 10K, etc.) y no estoy seguro de qué factores alteran estos valores. ¿Alguien puede arrojar algo de luz sobre cómo funciona el aislamiento del pin de restablecimiento y cómo calcular los valores de los componentes para usar? ¿Puede explicar qué valores usar si no hay un encabezado de programación en el sistema?

Esquema de aislamiento del pin de reinicio del AVR

Respuestas (2)

Atmel AVR042: Las consideraciones de diseño de hardware AVR nos dicen que el capacitor en el pin de reinicio no es necesario. Personalmente creo que es exagerado. No hay razón para que sigas haciendo decenas de circuitos AVR, todos y cada uno con ese condensador redundante.

En cuanto a la resistencia pullup de reinicio:

La línea de reinicio tiene una resistencia pull-up interna, pero si el ambiente es ruidoso, puede ser insuficiente y, por lo tanto, el reinicio puede ocurrir esporádicamente. Consulte la hoja de datos para conocer el valor de la resistencia pull-up en dispositivos específicos. La conexión del RESET para que sea posible ingresar tanto a la programación de alto voltaje como al reinicio de bajo nivel ordinario se puede lograr aplicando una resistencia pull-up a la línea RESET. Esta resistencia pull-up se asegura de que el reinicio no sea bajo sin querer. En teoría, la resistencia pull-up puede ser de cualquier tamaño, pero si el Atmel®AVR® debe programarse desde, por ejemplo, STK500/AVRISP, el pull-up no debe ser tan fuerte que el programador no pueda activar RESET dibujando la línea RESET baja. La resistencia pull-up recomendada es de 4,7 kΩo mayor cuando se utiliza STK500 para la programación. Para que debugWIRE funcione correctamente, el pull-up no debe ser inferior a 10kΩ.

Si echa un vistazo a los productos profesionales que incorporan los micros AVR, como Arduino, sus numerosos clones, docenas de kits de desarrollo, encontrará que la mayoría usa una resistencia de 4.7kΩ o 10kΩ.

Y en particular para su ATtiny13, su hoja de datos especifica que el pull-up debería oscilar idealmente [20kΩ, 80kΩ].

20k a 80k, o 20k dividido por 80k? :)
Gracias por el enlace Consideración de diseño de hardware. ¡No conocía este documento!
Jaja, usé ese signo porque todo el mundo usa el signo menos. La resistencia negativa tampoco tendría ningún sentido :)
Por lo general, veo que la tilde (~) se usa para significar "a través de" pero también "aproximado". Supongo que depende del contexto. Gracias por señalar que la hoja de datos enumera la resistencia pullup de reinicio, no me había dado cuenta de que incluiría esa información. La hoja de datos que tengo muestra que la resistencia pull-up para el pin de reinicio está entre 30k y 80k. Al menos sé dónde mirar ahora. ¡Gracias!
Otro buen indicador para el rango de resistencia de valores que comúnmente veo es: 20 k Ω 80 k Ω
Tal vez la notación matemática para un intervalo [20kΩ, 80kΩ] encaje bien.
@BrunoFerreira: También es tentador usar la notación matlab 20k:80k... pero eso se está volviendo cada vez más tonto. Supongo que la próxima vez simplemente pegaré la tabla de la hoja de datos :)
@JonnyBGood, las probabilidades de que pueda demostrar una diferencia funcional entre un pullup de 10k, un pullup de 20k o un pullup de 80k están en algún lugar del intervalo [escaso, ninguno)... Estoy a favor de seguir la guía de notas de la aplicación, pero ¿en serio?
@vicatcu No depende de mí demostrar la diferencia. Atmel probó sus chips en condiciones realmente difíciles y obtuvo los valores. Supongo que graficaron la confiabilidad del arranque de reinicio y decidieron que se necesita un mínimo de 20k para lograr una tasa de falla del 0.0001%. Claro, incluso puedes usar un LED como un pullup, o un trazo de lápiz y papel, también tiene resistencia. Personalmente, nunca me molesto en verificar esos valores de pullup, pero como JYelton quiere hacerlo correctamente, ¿quién soy yo para detenerlo?
AFAIR, la hoja de datos especifica que hay un pull-up interno del rango, no que el valor del rango deba usarse para uno externo; el valor para pull-up externo (más fuerte) debería ser aún menor que eso, 4K7-10K AFAIK de aplicaciones Kanda y AVR.

Siempre uso una resistencia pullup de 10k a Vcc en el pin /Reset y nunca he tenido ningún problema. En general, también es una buena idea incluir un capacitor de 100 nF cerca del pin Vcc entre Vcc y GND para una operación estable del chip. En mi opinión, el condensador en el pin de reinicio no es necesario, lo que quiere decir que nunca he incluido uno en ningún circuito AVR que haya desarrollado (y he desarrollado muchos) y nunca me causó problemas.

¿Puede explicar (o señalar un buen tutorial para novatos) cómo estos pequeños condensadores ayudan además o en lugar de un electrolítico más grande que es paralelo a la fuente de alimentación?
se trata de "frecuencias de ondulación" y puede ser un tema más complicado de lo que parece, pero un mínimo de 100 nF es una práctica estándar aceptada como regla empírica para los condensadores de derivación. Aquí hay uno (de muchos) artículo de referencia que podría ser de interés: seattlerobotics.org/encoder/jun97/basics.html . También puede encontrar publicaciones relacionadas en este sitio buscando 'bypass' o 'decoupling'
Los capacitores electrolíticos grandes manejan las frecuencias bajas, pero no son efectivos en las frecuencias altas. Los condensadores cerámicos pequeños (0.1uF) manejan las frecuencias altas, pero no son efectivos en las frecuencias bajas.
Así que use ambos, el suministro debe tener uno grande de todos modos y tener el pequeño localmente. La inducción y el HF pueden ser un problema, pero en extremo. Es interesante que las consideraciones de HSVP no tengan un diodo en serie con esa resistencia de pin de reinicio también.