7 votos

¿Buena solución para interrupciones más en un arduino?

Estoy construyendo un circuito con un Arduino Mega y simple de los chips ci (por ejemplo, 7432), pero tengo muchas líneas de monitor para la interrupción condiciones y no lo suficiente pines en el Atmel, así que estoy buscando una manera de ampliar este. Presentarse problemas porque tengo que ser capaz de cambiar la condición de disparo de flanco de subida de caer por el borde de algunas líneas sobre la base de condiciones, y algunas de las líneas que seguirá siendo alto, después de haber sido reparados, por lo que un codificador de prioridad sufriría la condición de que una mayor prioridad de interrupción podría enmascarar una prioridad más baja. Para el segundo problema, estoy pensando en usar un registro y algunas puertas para permitir la desactivación de algunas interrupciones, pero no tengo una buena solución para el primero. ¿Alguien tiene alguna sugerencia? Me estoy poniendo de nuevo las fichas como sea necesario, por lo soluciones con extra de serie 7400 ICs o similar sería apreciada, pero algo más exótico que iba a estar bien.

3voto

Morris Maynard Puntos 49

Usted podría utilizar un Controlador Programable de interrupciones (PIC) , tales como la 82C59A. Se cascada si usted necesita más de las ocho interrupciones que proporciona. Es un poco antigua, pero creo que va a manejar todas sus necesidades. A partir de estos conferencia de las diapositivas:

Diagrama de bloques de 82C59A

  • Se trata por el procesador principal como un dispositivo periférico.
  • Está configurado por el host pocessor para seleccionar las funciones.
  • Chip Select se utiliza de nuevo para la dirección de la 82C59A cuando sea necesario.
    • \$\text{A0}\$ dirección selecciona las diferentes palabras de comando dentro de la 8259
  • \ $\text{INT}\$ \ $\overline{INTA}\$ rojo se utiliza como el protocolo de la interfaz.
    • \$\text{INT}\$ salida se conecta a la \$\text{INTR}\$ pin del maestro y está conectado a un maestro de IR pin en un esclavo
    • En un sistema con el maestro y los esclavos, sólo el maestro \$\overline{INTA}\$ se conecta una señal.
  • Interrupción de las entradas \ $\text{IR}_{0}\$ \ $\text{IR}_{7}\$ puede ser configurado como nivel sensible o edge-triggered entradas. Edge-triggered entradas se active en 0 a 1 las transiciones.
  • Cascada de la interfaz \$\text{CAS}_{0}\$ - \$\text{CAS}_{2}\$ y \$\overline{SP}\$/\$\overline{EN}\$:
    • Cascada de la interfaz \$\text{CAS}_{0}\$ - \$\text{CAS}_{2}\$ llevar la dirección del esclavo para ser atendidos.
    • \$\overline{SP}\$/\$\overline{EN}\$ :=1 selecciona el chip de la maestría en modo de cascada.

Actualmente producido por Intersil y en stock en Digikey.

3voto

martino Puntos 1179

Utilizar un expansor de I/O como la MCP23008 o el MCP23017. Ambos tienen SPI ya C2versiones; interrupciones pueden ser configurado (borde sensible, nivel sensible) para cada entrada.

2voto

Hope Pires Puntos 6

Un Arduino Mega tiene "sólo" 24 pines cambio interrupciones para sus 80 pines. Que puede ser suficiente para que el cartel original, y él puede no haber sido consciente de esta posibilidad, porque los pernos "INT" con apoyo de la API en el entorno de Arduino, mientras que las interrupciones de cambio de pin no.

Aquí algunos bastante elaboran código para fijar interrupciones de cambio de pin

0voto

Steven McConnon Puntos 101

Sé que esta respuesta es un poco tarde, pero lo respondo para cualquier lector tarde a esta pregunta.

La versión del software de adición de interrupciones más sería hacer una "interrupción de cambio de Pin". Hay bibliotecas para él que cualquier pin poder activar una interrupción porque el ATMega es capaz con un poco de codificación inteligente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X