View
223
Download
1
Category
Preview:
DESCRIPTION
examen practico
Citation preview
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
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);
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); }
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); } }
Recommended