Pregunta:
¿Por qué es necesario conectar cualquier señal de sensor a los pines de interrupción en las placas Andruino?
user3646338
2014-05-17 03:52:20 UTC
view on stackexchange narkive permalink

Me he encontrado con algunos sensores de Andruino como Motion, Light y todos recomiendan estar conectados al pin 2 o 3 en la placa Andruino Uno, que son pines de interrupción. Esto es especialmente cierto si busca valores ALTOS o BAJOS. ¿Por qué se conecta a los pines de interrupción?

Un ejemplo sería si utilicé CC3000 Wifi Breakout y sensor de movimiento. Ambos estaban peleando por ocupar el pin de interrupción 2. He visto que el sensor de movimiento no funciona correctamente después de conectar la señal al pin 4 [Tiene resistencia de pull up habilitada]

¿Qué debo hacer si necesito para conectar más sensores que usan los pines de interrupción limitados y ¿cómo debo manejar el escenario anterior?

Dos respuestas:
#1
+6
Ignacio Vazquez-Abrams
2014-05-17 04:39:23 UTC
view on stackexchange narkive permalink

Los pines de interrupción se utilizan para notificar a la MCU que un dispositivo necesita atención. Los pines INTx se eligen primero porque son fáciles de programar; cada uno obtiene un vector de interrupción dedicado y, por lo tanto, ISR.

Sin embargo, existe otro tipo de interrupción externa, la interrupción de cambio de pin. Esto se puede invocar a través de cualquiera de los pines PCINTxx del dispositivo; en el '328 cualquier pin puede actuar como una interrupción.

La principal diferencia entre INT y PCINT es que los PCINT se agrupan en bancos de 8, lo que significa que una vez que el ISR se han invocado los pines apropiados deben verificarse para su nivel, lo que además significa que es posible leer mal una interrupción si un banco es compartido por varios dispositivos y el pulso de interrupción en sí es muy corto.

Más detalles se puede leer en las secciones "Interrupciones externas" e "Interrupciones" de la hoja de datos de MCU.

#2
+4
Chris Stratton
2014-05-17 18:13:27 UTC
view on stackexchange narkive permalink

Ignacio proporciona una gran respuesta sobre las diferencias entre los dos tipos de interrupciones. Pero para agregar a eso, no es un requisito universal incluso usar una interrupción.

Sondeo también es una posibilidad, aunque se ha comparado con levantar el teléfono periódicamente para ver si alguien está tratando de hablar contigo.

  • Las ventajas de usar una interrupción pueden incluir una respuesta más rápida, una respuesta en segundo plano mientras un programa está haciendo principalmente otra cosa y, a menudo, una capacidad asociada para activar el procesador desde el modo de suspensión de bajo consumo utilizado en dispositivos que funcionan con baterías.

  • Pero el sondeo puede tener un papel, por ejemplo, cuando el programa se ejecuta en un bucle cerrado y solo puede actuar en respuesta a la entrada en ciertos momentos de todos modos: una rutina de servicio de interrupción que simplemente establece una bandera para decirle al ciclo principal del programa que algo ha sucedido puede o no ser de gran beneficio.

  • A menudo, la mejor solución es un enfoque híbrido: una rutina de servicio de interrupción registra eventos, especialmente aquellos que pueden desaparecer o repetirse antes de que el ciclo principal del programa pueda sondearlos. Luego, cuando el ciclo del programa principal alcanza un punto de decisión lógica, verifica las banderas o la cola de eventos para ver si la rutina del servicio de interrupción ha registrado algo a lo que debería responder. La recepción serial se maneja típicamente de esta manera en el marco de Arduino.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...