Buenas prácticas para cambiar el AVR

Después de leer muchas publicaciones (aquí y en la web), estoy un poco confundido.
Todo lo que quiero hacer es obtener la mejor práctica de conexión de botón a AVR.

Tengo 2 "secciones" a mi pregunta. el primero es la conexión ALTA o BAJA, y el segundo es el problema de la resistencia. Comenzaré con las opciones HIGH/LOW:

  1. +5V --\ ----AVR: El pin AVR está configurado en BAJO de forma predeterminada y se comprueba si el pin está en ALTO (por lo que el interruptor está encendido).
  2. GND --\ ----AVR : El pin AVR está configurado en ALTO (¿Pull-up?), Verificándolo en BAJO para ver el clic.

La segunda sección de la pregunta es sobre la resistencia y si necesito usarla.

  • Si estoy usando el pin con valor ALTO y al presionar el botón se conectó a tierra,
    vi que algunos de los blogueros pusieron una resistencia antes del botón y la conectaron a VCC: ¿La necesito? si es así, ¿cuál debería ser el valor de R1?
    VCC_RES

  • Si configuro el pin en BAJO de forma predeterminada, ¿debo usar también la resistencia, pero conéctelo a GND?

Gracias chicos..

Respuestas (1)

Realmente no importa si lo implementa como un interruptor activo bajo o alto. Sin embargo, dado que necesita una resistencia pull-up o pull-down de todos modos (para tener un nivel lógico definido cuando el botón/interruptor está abierto), puede valer la pena señalar que los pines IO de los controladores AVR tienen una resistencia pull-up integrada ( de alrededor de 10k Ohm) que podría ser activado/utilizado.

Si estoy usando el pin con un valor ALTO y al presionar el botón se conectó a tierra, vi que algunos de los blogueros pusieron una resistencia antes del botón y la conectaron a VCC:

Esa resistencia en realidad actúa como una resistencia pull-up. No es necesario limitar la corriente desde/hacia el puerto IO a través del interruptor cerrado a GND, porque tiene una impedancia muy alta cuando se configura como entrada.

¿Cuál debería ser el valor de R1?

Dado que la velocidad de transmisión y los tiempos de borde no son un problema para algo "lento" como presionar un botón, la consideración principal es limitar la corriente a un valor razonable. Con algo alrededor de 50k Ohm, limitaría la corriente a 0.1mA a 5V, lo que debería estar bien. No quieres un pull-up que sea demasiado "débil". Imagina usar 1 Giga Ohm. Eso sería esencialmente lo mismo que dejar el pull-up fuera y no sesgaría adecuadamente la entrada contra el nivel respectivo.

Si configuro el pin en BAJO de forma predeterminada, ¿debo usar también la resistencia, pero conéctelo a GND?

Sí, esa sería su resistencia desplegable.

Gracias por la respuesta detallada, solo para aclarar: si estoy usando AVR (que tiene pull-up interno), ¿puedo dejar caer la resistencia externa?
@gabi Sí. Puede activar el pull-up interno configurando el pin como ENTRADA y configurándolo ALTO. Algo como esto (con los valores de su puerto/pin, por supuesto): DDRA &= ~(1<<PINA0); PORTA |= (1<<PINA0);
¿Está bien (en términos de eficiencia) conectar el interruptor de encendido/apagado permanente al pin de ENTRADA levantado? El problema es que el pin estará en ALTO y conectado a GND de forma permanente. ¿Será mejor usar una resistencia de 10K entre GND y la palanca? Ejemplo: GND--10K--/-AVR
@gabi: cuando el interruptor está cerrado, la corriente ya estará limitada por la resistencia pull-up. No hay (casi) corriente procedente del pin IO cuando está configurado como entrada. Sin embargo, tenga cuidado de que si accidentalmente configura el pin como salida y cierra el interruptor, podría dañar el controlador.