viernes, 30 de diciembre de 2016

PRACTICA # 7 TIMER ARRAY UNIT (TAUx)


OBJETIVO: 

Haremos uso de la unidad Timer canal 0 de 16 bits con la que cuenta el MCU R5F104PJAFB de la tarjeta de evaluación YRDKRL78G14. Por medio del led 3 verificamos la interrupción programada por overflow cada segundo.
  •  Configurar el módulo TAUx
  •  Crear interrupción cada segundo apagando y prendiendo el led 3

DESARROLLO:
  • Del manual Renesas RL78G14 RDK User's Manual ubicamos el LED 3


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



  •  Configurar proyecto:
1.- Clic derecho en el proyecto generado y seleccionar Properties



2.- Seleccionar C/C++ Build / Settings / Linker / Device y establecer los siguientes parámetros:
OCD = 85
Option Byte = efffe8
Palomear: Use range of debug monitor area. Nota: No establecer ningún valor solo dejarlo en blanco.
Apply y después OK.



3.- Configuraremos el módulo TAU0 para que interrupta cada segundo en el archivo r_cg_timer.c

void R_TAU0_Create(void)
{
    TAU0EN = 1U;    /* supplies input clock */
    TPS0 = _0009_TAU_CKM0_FCLK_9 | _0000_TAU_CKM1_FCLK_0 | _0000_TAU_CKM2_FCLK_1 | _0000_TAU_CKM3_FCLK_8;
    /* Stop all channels */
    TT0 = _0001_TAU_CH0_STOP_TRG_ON | _0002_TAU_CH1_STOP_TRG_ON | _0004_TAU_CH2_STOP_TRG_ON |
          _0008_TAU_CH3_STOP_TRG_ON | _0200_TAU_CH1_H8_STOP_TRG_ON | _0800_TAU_CH3_H8_STOP_TRG_ON;
    /* Mask channel 0 interrupt */
    TMMK00 = 1U;    /* disable INTTM00 interrupt */
    TMIF00 = 0U;    /* clear INTTM00 interrupt flag */
    /* Mask channel 1 interrupt */
    TMMK01 = 1U;    /* disable INTTM01 interrupt */
    TMIF01 = 0U;    /* clear INTTM01 interrupt flag */
    /* Mask channel 1 higher 8 bits interrupt */
    TMMK01H = 1U;    /* disable INTTM01H interrupt */
    TMIF01H = 0U;    /* clear INTTM01H interrupt flag */
    /* Mask channel 2 interrupt */
    TMMK02 = 1U;    /* disable INTTM02 interrupt */
    TMIF02 = 0U;    /* clear INTTM02 interrupt flag */
    /* Mask channel 3 interrupt */
    TMMK03 = 1U;    /* disable INTTM03 interrupt */
    TMIF03 = 0U;    /* clear INTTM03 interrupt flag */
    /* Mask channel 3 higher 8 bits interrupt */
    TMMK03H = 1U;    /* disable INTTM03H interrupt */
    TMIF03H = 0U;    /* clear INTTM03H interrupt flag */
    /* Set INTTM00 low priority */
    TMPR100 = 1U;
    TMPR000 = 1U;
    /* Channel 0 used as interval timer */
    TMR00 = _0000_TAU_CLOCK_SELECT_CKM0 | _0000_TAU_CLOCK_MODE_CKS | _0000_TAU_COMBINATION_SLAVE |
            _0000_TAU_TRIGGER_SOFTWARE | _0000_TAU_MODE_INTERVAL_TIMER | _0000_TAU_START_INT_UNUSED;
    TDR00 = _F423_TAU_TDR00_VALUE;
    TO0 &= ~_0001_TAU_CH0_OUTPUT_VALUE_1;
    TOE0 &= ~_0001_TAU_CH0_OUTPUT_ENABLE;
}

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

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


VÍDEO:

No hay comentarios.:

Publicar un comentario