Usando una interrupción externa desde cualquier pin PIC16F873A

1

Estoy tratando de usar una interrupción, que se producirá en el flanco ascendente de una señal proveniente de mi acelerómetro LSM303DLHC. El acelerómetro tiene una señal de Data Ready (DRDY) que se dispara cada vez que se agregan datos nuevos a los registros de los que he leído y quiero usar esta señal para disparar una interrupción, de modo que solo puedo leer del acelerómetro cuando los datos están listos. El problema es que no tengo pines del puerto B disponibles porque los estoy usando para interactuar con un LCD (no en serie). En este momento, solo estoy encuestando un bit de registro de estado en el acelerómetro para ver cuándo hay datos disponibles, pero esto obviamente no es muy eficiente, ya que también quiero leer datos de GPS y controlar los servos al mismo tiempo. Si no hay ninguna forma de obtener una interrupción de cualquiera de los pines del puerto A o del puerto C, ¿podría alguien posiblemente darme otra forma de sincronizar con mi acelerómetro usando el PIC16F873A?

    
pregunta Alexander Villa

1 respuesta

7

Varios problemas:

  1. Este es el estuche del póster por el que debe elegir con cuidado qué pines del micro se usarán de qué manera. "Los estoy usando para interactuar con una pantalla LCD" no es una excusa. Vaya a usar otros pines para la pantalla LCD que no tienen también una función de hardware especial que necesita. Asigne pines que usen primero funciones de hardware especiales, luego asigne E / S general a los pines que queden.

  2. El PIC 16F873A es bastante antiguo. Probablemente hay PIC más nuevos con la misma huella que tienen mucha más capacidad de E / S, posiblemente incluyendo más interrupciones en los pines de cambio.

  3. Hay otras formas de causar una interrupción, como el pin INT específicamente para ese propósito, las entradas CCP e incluso las entradas de reloj del temporizador si eres listo. Algunos de estos pueden usar otro hardware solo para obtener la interrupción, pero no hay ningún daño en eso si de todos modos no utilizarías ese hardware.

  4. Vea el punto uno. Asigna los pines correctamente. Esto realmente debería ser obvio.

respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas