miércoles, 18 de enero de 2017

PRACTICA # 7 INTERRUPCIÓN EXTERNA (IRQx)

OBJETIVO:
       Se habilitará la interrupción externa IRQ8 con la que cuenta el MCU R5F562N8 de la tarjeta de evaluación YRDKRX62N. Por medio del Switch 1 si simulara la entrada para que la interrupción detecte ambos francos de subida y bajada respectivamente.
  • Configurar el módulo IRQ8
  •  Detectar la interrupción por franco encendiendo un led 8

DESARROLLO:
  • Del manual Renesas RX62N RDK User's Manual ubicamos el switch 3 y led 8



  •  Del RX62N Group User's Manual: Hardware página 346 hacemos referencia al vector de interrupcion IER09. 


PASOS:
  •  Creación de un proyecto:
1.- Abrir el software e2studio
2.- New/ C Project / Renesas RXC ToolChain


3.- Seleccionar el target R5F562N8, debug hardware Segger jLink, después next


4.- Seleccionar C/C++ Source file y por ultimo Finish.


5.- Configuraremos el módulo de interrupción externa IRQ8 en el archivo IRQx.c

void init_irq8(void)
{
            ICU.IER[9].BIT.IEN0 = 0; //Disable Interrupt Request IER
            PORT4.DDR.BIT.B0 = 0; //Set P40 by input
            PORT4.ICR.BIT.B0 = 1; //Enable P40 buffer
            /*
             * Select operation mode of the IRQ (IRQMD)
             * 0 -> low level
             * 1 -> Falling edge
             * 2 -> Rising edge
             * 3 -> Rising and Falling edge
             */
            ICU.IRQCR[8].BIT.IRQMD = 1;
            ICU.IPR[0x28].BIT.IPR = 5; //Set priority level
            ICU.IR[72].BIT.IR = 0; //Reset interrupt indication
            ICU.IER[9].BIT.IEN0 = 1; //Enable Interrupt Request IER
}

6.- El código en la interrupción para apagar y prender el LED 8 queda de la siguiente forma en el archivo interrupt_handlers.c:

// ICU IRQ8
void Excep_ICU_IRQ8(void)
{
            PORTD.DR.BIT.B4   = ~PORTD.DR.BIT.B4;
}

  •  Agregar código, compilar y debug:
1.- Bajar el código de:

2.- Compilar con el icono del martillo y debug con el icono del insecto:


VÍDEO:


No hay comentarios.:

Publicar un comentario