Você está na página 1de 4

Daniel Solorzano Calderon A01213695

Edgar Alfonso Mosso Trujillo A01335468


Miguel A. Larumbe Bolado A01129215

Actividad Prctica
Mdulo PM-GPIO
Entrega Jueves 17 de septiembre
I- Revisar para la actividad del prximo jueves los siguientes temas:
-

Revisar archivo de Inicializacin de mdulo PM.


Configuracin de osciladores
Configuracin de relojes sncronos y genricos
Configuracin de PLL
Configuracin 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 librera de funciones del mdulo PM y GPIO realice las siguientes configuraciones
de los distintos componentes del mdulo:
2.1Configuracin del reloj principal del sistema (relojes sncronos) 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 80180MHz
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
// tambin se puede hacer con
// pm_switch_to_clock(&AVR32_PM, 2); //Habilita la salida del PLL0: 2
}

2.2 Configurar los relojes sncronos ( CPU, HSB, PBA y PBB)


especificaciones:
-

con las siguientes

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 funcin A y el pin PB12 en su funcin 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 interrupcin del pin PB23 por frente de cada (Falling Edge).
gpio_enable_pin_interrupt(AVR32_PIN_PB23,
(VQFP144-EVK1105) de GPIO

// Pin: PB23 es el pin 9


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 saln de clases


1- Configurar el mdulo de reloj del UC3A con las siguientes especificaciones:
Configuracin del reloj principal del sistema (relojes sncronos) 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 80180MHz
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
// tambin 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 genrico 2 para dar reloj a un mdulo de comunicacin 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,
2,
0,
0,
1,
15);

//Power Managment
//Reloj genrico: 2
//Fuente: Oscilador
//Osc: 0
//Habilitarelog genrico: 1
//Fgen = Fosc/(2*(DIV+1)) => 16MHz = (16MHz/32) / (2*(DIV+1))
//Se divide el Fosc entre 32 / Se despeja DIV

3- Funcin 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);
}
}

Você também pode gostar