actividad práctica pm_gpio

4
Daniel Solorzano Calderon A01213695 Edgar Alfonso Mosso Trujillo A01335468 Miguel A. Larumbe Bolado A01129215 Actividad Práctica Módulo PM-GPIO Entrega Jueves 17 de septiembre I- Revisar para la actividad del próximo jueves los siguientes temas: - Revisar archivo de Inicialización de módulo PM. - Configuración de osciladores - Configuración de relojes síncronos y genéricos - Configuración de PLL - Configuración de pines de GPIO - Lectura y escritura de pines de GPIO II- Traer resuelto para la clase del jueves por equipos las siguientes actividades realizadas. Utilizando la librería de funciones del módulo PM y GPIO realice las siguientes configuraciones de los distintos componentes del módulo: 2.1Configuración del reloj principal del sistema (relojes síncronos) con las siguientes especificaciones: - PLL0 como reloj principal con una frecuencia de 120MHz, modo Wide Bandwidth inhabilitado, PLLCOUNT = 16. - La fuente de reloj del PLL0 será el oscilador 1 en modo cristal con una frecuencia de 12MHz y startup de 36ms. #include "pm.h" #include "flashc.h" void inicializa_pm(void){ pm_enable_osc1_crystal(&AVR32_PM, 12000000, 4); // usa oscilador 1 a 12MHz, con 36 ms de espera pm_pll_setup(&AVR32_PM, 0, //PLL:0 en uso 4, //MUL=4 que viene del despeje de Fvco=2*(MUL+1)*Fosc => 120MHz=2*(MUL+1)*12MHz 0, //DIV es 0, es por eso que se usó 1, //Osc:1 en uso 16); //Lockcount para el PLL pm_pll_set_option(&AVR32_PM, 0, //PLL: 0 en uso 1, //PLL_frec = Vco_frec: 1 frecuencia de 80- 180MHz 0, //PPL_div2: 0 No divide la frecuencia del PLL

Upload: miguel-larumbe-bolado

Post on 06-Dec-2015

223 views

Category:

Documents


1 download

DESCRIPTION

examen practico

TRANSCRIPT

Page 1: Actividad Práctica PM_GPIO

Daniel Solorzano Calderon A01213695

Edgar Alfonso Mosso Trujillo A01335468

Miguel A. Larumbe Bolado A01129215

Actividad Práctica

Módulo PM-GPIO

Entrega Jueves 17 de septiembre

I- Revisar para la actividad del próximo jueves los siguientes temas:

- Revisar archivo de Inicialización de módulo PM.

- Configuración de osciladores

- Configuración de relojes síncronos y genéricos

- Configuración de PLL

- Configuración de pines de GPIO

- Lectura y escritura de pines de GPIO

II- Traer resuelto para la clase del jueves por equipos las siguientes actividades

realizadas.

Utilizando la librería de funciones del módulo PM y GPIO realice las siguientes configuraciones

de los distintos componentes del módulo:

2.1Configuración del reloj principal del sistema (relojes síncronos) con las siguientes

especificaciones:

- PLL0 como reloj principal con una frecuencia de 120MHz, modo Wide Bandwidth

inhabilitado, PLLCOUNT = 16.

- La fuente de reloj del PLL0 será el oscilador 1 en modo cristal con una frecuencia de

12MHz y startup de 36ms.

#include "pm.h" #include "flashc.h" void inicializa_pm(void){ pm_enable_osc1_crystal(&AVR32_PM, 12000000, 4); // usa oscilador 1 a 12MHz, con 36 ms de espera pm_pll_setup(&AVR32_PM, 0, //PLL:0 en uso 4, //MUL=4 que viene del despeje de Fvco=2*(MUL+1)*Fosc => 120MHz=2*(MUL+1)*12MHz 0, //DIV es 0, es por eso que se usó 1, //Osc:1 en uso 16); //Lockcount para el PLL pm_pll_set_option(&AVR32_PM, 0, //PLL: 0 en uso 1, //PLL_frec = Vco_frec: 1 frecuencia de 80-180MHz 0, //PPL_div2: 0 No divide la frecuencia del PLL

Page 2: Actividad Práctica PM_GPIO

Daniel Solorzano Calderon A01213695

Edgar Alfonso Mosso Trujillo A01335468

Miguel A. Larumbe Bolado A01129215

1);//Modo Wide Bandwidth inhabilitado pm_pll_enable(&AVR32_PM,0); // Habilita el PLL 0 pm_wait_for_pll0_locked(&AVR32_PM); //Espera a que se estabilice el PLL0 pm_switch_to_clock(pm, AVR32_PM_MCSEL_PLL0); // Configura el PLL0 como reloj principal // también se puede hacer con // pm_switch_to_clock(&AVR32_PM, 2); //Habilita la salida del PLL0: 2 }

2.2 Configurar los relojes síncronos ( CPU, HSB, PBA y PBB) con las siguientes

especificaciones:

- Reloj CPU y HSB trabajando a la frecuencia del reloj principal/2

- Reloj del PBA y PBB trabajando a la frecuencia de reloj principal / 16

pm_cksel(pm, 1, 3, PBA divisor habilitado 1, 3, 1, 0);

2.3 Habilitar el pin PB23 en su función A y el pin PB12 en su función B.

gpio_enable_module_pin(AVR32_PIN_PB23,0); TC-A0 // el pin 23 con PMR1=0 PRM0=0 gpio_enable_module_pin(AVR32_PIN_PB12,1); //TC-clk0 // el pin 12 con PMR1=0 PRM0=1

2.4 Habilitar la interrupción del pin PB23 por frente de caída (Falling Edge).

gpio_enable_pin_interrupt(AVR32_PIN_PB23, // Pin: PB23 es el pin 9 (VQFP144-EVK1105) de GPIO

2); // Modo: falling edge => mode GPIO_FALLING_EDGE

#define QT1081_TOUCH_SENSOR_1 AVR32_PIN_PB23

#define QT1081_TOUCH_SENSOR_DOWN QT1081_TOUCH_SENSOR_1

gpio_enable_pin_interrupt(QT1081_TOUCH_SENSOR_DOWN,GPIO_FALLING_EDGE);

Page 3: Actividad Práctica PM_GPIO

Daniel Solorzano Calderon A01213695

Edgar Alfonso Mosso Trujillo A01335468

Miguel A. Larumbe Bolado A01129215

III Actividad colaborativa en el salón de clases

1- Configurar el módulo de reloj del UC3A con las siguientes especificaciones:

Configuración del reloj principal del sistema (relojes síncronos) con las siguientes

especificaciones:

Oscilador 1 en modo cristal con una frecuencia de 8MHz y startup de 18ms.

PLL0 como fuente de reloj con una frecuencia de 96MHz, modo Wide Bandwidth

inhabilitado, PLLCOUNT = 16.

Relojes CPU/HSB/PBA/PBB trabajando a la frecuencia del reloj principal (Sin

prescaler)

void inicializa_pm(void){ pm_enable_osc1_crystal(&AVR32_PM, 8000000, 3); // usa oscilador 1 a 12MHz, con 18 ms de espera pm_pll_setup(&AVR32_PM, 0, //PLL:0 en uso 5, //MUL=5 que viene del despeje de Fvco=2*(MUL+1)*Fosc => 120MHz=2*(MUL+1)*12MHz 0, //DIV es 0, es por eso que se usó 1, //Osc:1 en uso 16); //Lockcount para el PLL pm_pll_set_option(&AVR32_PM, 0, //PLL: 0 en uso 1, //PLL_frec = Vco_frec: 1 frecuencia de 80-180MHz 0, //PPL_div2: 0 No divide la frecuencia del PLL 1);//Modo Wide Bandwidth inhabilitado pm_pll_enable(&AVR32_PM,0); // Habilita el PLL 0 pm_wait_for_pll0_locked(&AVR32_PM); //Espera a que se estabilice el PLL0 pm_switch_to_clock(pm, AVR32_PM_MCSEL_PLL0); // Configura el PLL0 como reloj principal // también se puede hacer con // pm_switch_to_clock(&AVR32_PM, 2); //Habilita la salida del PLL0: 2 pm_cksel(&AVR32_PM, 0,0,0,0,0,0); }

Page 4: Actividad Práctica PM_GPIO

Daniel Solorzano Calderon A01213695

Edgar Alfonso Mosso Trujillo A01335468

Miguel A. Larumbe Bolado A01129215

2- Configurar el reloj genérico 2 para dar reloj a un módulo de comunicación con las

siguientes especificaciones:

- Fuente de reloj: Oscilador 0 trabajando a una frecuencia de 16MHz

- Frecuencia de reloj: Frecuencia del oscilador / 32

pm_gc_setup(pm, //Power Managment 2, //Reloj genérico: 2 0, //Fuente: Oscilador 0, //Osc: 0

1, //Habilitarelog genérico: 1 15); //Fgen = Fosc/(2*(DIV+1)) => 16MHz = (16MHz/32) / (2*(DIV+1)) //Se divide el Fosc entre 32 / Se despeja DIV

3- Función que realice un Polling de la tecla “Down” del Touch sensor de la EVK1105 y de

acuerdo al valor encienda o apague el LED 2 While(1) { if (gpio_get_pin_value(QT1081_TOUCH_SENSOR_DOWN)==true) { Delay_ms(10); gpio_clr_gpio_pin(LED2_GPIO); } else { Delay_ms(10); gpio_set_gpio_pin(LED2_GPIO); } }