mplabx c18 la int externa rev221112

Upload: manuel-lavado-silva

Post on 12-Oct-2015

16 views

Category:

Documents


0 download

TRANSCRIPT

  • PIC 18F45XX

    La Interrupcin externa

  • 1. Caractersticas generales sobre interrupciones (I)

    La familia 18F45XX incorpora mltiples fuentes de interrupcin.

    Cuando se produce una interrupcin se produce un salto hacia la direccin que indica el vector de interrupcin.

    Cada fuente de interrupcin puede configurarse como:ALTA prioridad (vector: 000008h)BAJA prioridad (vector: 000018h)

    Si no se utilizan las prioridades (RCON.SPEN=0) todas las interrupciones son consideradas de alta prioridad.

    Cada fuente de interrupcin tiene tres bits que configuran su funcionamiento: Bit de habilitacin (Enable bit), permite/impide el salto al vector de interrupcin.Bit de prioridad (Priority bit), configura el vector de salto ALTA o BAJA.Bit de bandera (Flag bit), se pone a uno cuando se produce la interrupcin.

    La interrupcin externa est implementada en los pines RB0, RB1 y RB2.

    Para habilitar la int. Externa en RB0 sin prioridad hay que poner a uno los bits GIE, y INT0IE del registro INTCON.

  • 1. Caractersticas generales sobre interrupciones (II)

    Las rutinas de atencin a las interrupciones tienen las siguientes limitaciones: No devuelven ni aceptan parmetros No pueden invocarse desde otros puntos del programa Las variables globales que se utilicen se deben declarar como volatile

    La directiva : #pragma interruptlow nombre_interrupcion Define la rutina de servicio a la interrupcin como de baja prioridad La directiva:

    #pragma interrupt nombre_interrupcion Define la interrupcin como alta prioridad Ejemplos de programacin:#pragma interrupt UserHighPriorityISRCodevoid UserHighPriorityISRCode(){ }

    #pragma interruptlow UserLowPriorityISRCodevoid UserLowPriorityISRCode() {}

  • 2. Hardware de interrupciones

  • 3. Registro de configuracin INTCONPara deshabilitar el control de prioridades poner a cero el bit IPEN del registro RCON:RCONbits.IPEN=0;

    Todas las interrupciones saltan al vector: 000008

    Cuando se produce la int. Externa se pone a uno su bandera de interrupcion:INTCONbits.INT0IF=1

    Para habilitar la int. Externa:INTCONbit.INT0IE=1;INTCONbits.GIE=1;

  • 4. Registro de configuracin INTCON2La int. Externa en RB0 puede configurarse para activarse con flanco de subida o de bajada.

    Para configurar con cada flanco de bajada:INTCON2bits.INTEDG0=0;

    Para configurar con cada flanco de subida:INTCON2bits.INTEDGE=1;

  • 5. Interrupciones en la placa de perifricos

    Para poder generar una interrupcin por flanco de bajada:a) Poner el jumper J2 en posicin (B0-E)b) Pulsar RB0

  • 6. Programacin en C18

    Para configurar la interrupcin externa RB0 sin prioridades se puede seguir el siguiente procedimiento:

    En la funcin main() Deshabilitar prioridades. RCONbits.IPEN=0; Hablilitar todas las interrupciones. INTCONbits.GIE=1; Habilitar interrupcin en RB0. INTCONbits.INT0IE=1; Configurar el tipo de flanco (subida/bajada). INTCON2bits.INTEDG0=1/0; Poner a cero la bandera de control. INTCONbits.INT0IF=0;

    En la funcin de interrupcin

    Deshabilitar todas las interrupciones. INTCONbits.GIE=0; Guardar el estado del programa principal (si procede) Programar la funcin segn necesidades. Recuperar el estado del programa principal (si procede) Poner a cero la bandera de control. INTCONbits.INT0IF=0; Habilitar todas las interrupciones. INTCONbits.GIE=1;

  • 7. Programa de ejemplo

    Disear un programa que presente un segmento girando en la parte baja del display de la placa de perifricos a intervalos de 300ms. Configurar la interrupcin externa en RB0, generada por flanco de bajada, para que cuando se produzca parpadee la parte baja del display tres veces a intervalos de 200ms. Cuando termine la interrupcin el segmento debe seguir girando en la misma posicin donde se encontraba.

  • Solucin (programa principal)

  • Solucin (funcin de interrupcin)

  • Simulacin

    Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12