domingo, 26 de febrero de 2017

PRACTICA # 1 USO DE I/O, LEDS Y SWITCH

OBJETIVO: 
       Se configurará el oscilador externo de 12 Mhz para generar 96 Mhz con la que cuenta el MCU R5F563NBDDFP de la tarjeta de evaluación YRDKRX63N. Por medio del Switch 1 activaremos el LED 4.
  • Configurar el Oscilador externo para generar 96 Mhz
  • Configurar las entradas y salidas del R5F563NB
  • Encender un led a través de un switch
  • Debug 

DESARROLLO:
  • Del manual Renesas RX63N RDK User's Manual ubicamos el LED 4 y el SWITCH 1:


PASOS:

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

3.- Seleccionar Renesas RXC ToolChain después en Next >


4.- Seleccionar el target R5F563NBDxFP, debug hardware Segger jLink, después next


5.- Seleccionar C/C++ Source file de forma opcional y por ultimo Finish.


Entorno de desarrollo e2studio configurado:


6.- Configuraremos el oscilador externo:
void SR_Oscilador(void)
{
    unsigned long i;

            SYSTEM.PRCR.WORD = 0xA503; /* Access registers via PRCR                    */
            SYSTEM.SOSCCR.BYTE = 0x00; /* Sub-clock oscillator ON                      */

            SYSTEM.HOCOPCR.BYTE = 0x00; /* HOCO ON                                      */

            SYSTEM.MOSCWTCR.BYTE = 0x0e; /* Main Clock Oscillator Wait Control Register  */
            /* 262144 states                                */
            SYSTEM.PLLWTCR.BYTE = 0x0e; /* PLL Wait Control Register                    */
            /* 2097152 states                               */

            SYSTEM.MOSCCR.BYTE = 0x00; /* EXTAL ON                                     */
            SYSTEM.PLLCR2.BYTE = 0x01; /* PLL OFF                                      */
            SYSTEM.PLLCR.WORD = 0x0f00; /* x16 @PLL                                     */
            /* Input to PLL = EXTAL                            */
            /* Therefore:                                   */
            /*   PLL = EXTAL                                */
            /*       = 12                                   */
            /*   PLL * 16 = 192MHz                          */
            /* External oscillation input selection         */
            SYSTEM.PLLCR2.BYTE = 0x00; /* PLL ON                                       */

            for (i = 0; i < 2500; i++) /* Wait for stabilisation of PLL and main clock */
            { /* = 20ms                                       */
                        /*   (2500 x 1/125kHz = 20ms)                   */

            }

            /************************************************************************/
            /*                                                                      */
            /*  SYSTEM.SCKCR.BIT.PCKB   = 2; ( b11: b8 ) PLL/4 = 48MHz                           */
            /*  SYSTEM.SCKCR.BIT.PCKA   = 2; ( b15:b12 ) PLL/4 = 48MHz                           */
            /*  SYSTEM.SCKCR.BIT.BCK    = 2; ( b16:b19 ) PLL/4 = 48MHz                           */
            /*  SYSTEM.SCKCR.BIT.PSTOP0 = 1; ( b22     ) SDCLK CLK OUT Disabled     */
            /*  SYSTEM.SCKCR.BIT.PSTOP1 = 1; ( b23     ) BUS CLK OUT   Disabled     */
            /*  SYSTEM.SCKCR.BIT.ICK    = 1; ( b24:b27 ) PLL/2 = 96MHz                           */
            /*  SYSTEM.SCKCR.BIT.FCK    = 2; ( b31:b28 ) PLL/3 = 48MHz                           */
            /*                                                                      */
            /*  SYSTEM.SCKCR2.BIT.UCK   = 2;                        PLL/4 = 48MHz              */
            /*  SYSTEM.SCKCR2.BIT.IEBCK = 3;                        PLL/4 = 48MHz                            */
            /************************************************************************/

            SYSTEM.SCKCR.LONG = 0x21c22222; /* set these bits to the same a this bit   */
            /*                             |||               |                   |             */
            /*                             |++---------------+                   |             */
            /*                                                                    |                                     |             */
            /*                             +-------------------------------------+             */

            SYSTEM.SCKCR2.WORD = 0x0033;
            //          SYSTEM.SCKCR3.WORD = 0x0000;                            /* LOCO -> LOCO         */
            //          SYSTEM.SCKCR3.WORD = 0x0100;                            /* LOCO -> HOCO         */
            //          SYSTEM.SCKCR3.WORD = 0x0200;                            /* LOCO -> MAIN         */
            //          SYSTEM.SCKCR3.WORD = 0x0300;                            /* LOCO -> Sub-Clock    */
            SYSTEM.SCKCR3.WORD = 0x0400; /* LOCO -> PLL          */

            /* Gain access to the Port Function Select Registers */
            MPC.PWPR.BIT.B0WI = 0;
            MPC.PWPR.BIT.PFSWE = 1;
}


7.- El programa principal queda de la siguiente forma:

void main(void)
{
            set_ipl( 0 ); // enable interrupts
            SR_Oscilador();
            SR_INIT_PORTS();

            while(1)
            {
                        if (SW1 == 1)
                {
                                    LED4 = OFF_;
                        }
                        else
                        {
                                    LED4 = ON_;
                        }
            }
}

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

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

3.- Correr el programa con el icono start:


VÍDEO: 


No hay comentarios.:

Publicar un comentario