Está en la página 1de 6

Universidad Galileo Octubre de 2014

Microprocesadores Eduardo Corpeo


Prctica de Laboratorio #8
Pulse Width Modulation

Objetivo
Que el estudiante aprenda el procedimiento necesario para implementar PWM
utilizando interrupciones en un CPU ARM Cortex-m0, implementndolo en un
microcontrolador LPC1115, con el IDE Keil Vision.

Teora
El Timer del microcontrolador LPC1115 es un bloque operacional independiente del
CPU que cuenta con varias funciones para operaciones de tiempo real. En esta prctica
nos enfocamos en la funcin de PWM.

La funcin de PWM compara el valor del contador con el registro de Match asociado al
pin de salida que se est utilizando para que ocurra un flanco positivo. El flanco
negativo ocurre cuando el contador alcanza el valor del registro que lo reinicia
(tpicamente Match3).

En esta prctica usted desarrollar una aplicacin para el LPC1115 en el lenguaje C, la
cual hace uso del ADC, GPIO y Timer para ilustrar cmo pueden estos mdulos trabajar
en armona. Para su comodidad, hemos incluido la informacin pertinente a
continuacin.

ADC
Para emplear este mdulo operacional, es necesario utilizar los siguientes registros:

Escritura:
Input/Output Configuration (IOCON_PIOx_y). Para configurar el pin GPIO.
AHB Clock Control (SYSAHBCLKCTRL). Para suministrar la seal de reloj al ADC.
Power-Down Configuration (PDRUNCFG). Para encender el ADC.
A/D Control Register (AD0CR). Aqu se configura el ADC.
A/D Interrupt Enable Register (AD0INTEN). Para configurar interrupciones.

Lectura:
A/D Global Data Register (AD0GDR). La conversin ms reciente est aqu.
A/D Channel x Data Register (AD0DRx). Conversiones de cada canal (x:0-7)
A/D Status Register (AD0STAT). Guarda informacin de las conversiones realizadas.

GPIO
El microcontrolador LPC1115/303 cuenta con 4 puertos paralelos bidireccionales de
propsito general: Los puertos 0, 1, y 2 (12 pines cada uno), y el puerto 3 (6 pines).

Cada puerto tiene un registro de datos asociado (GPIO2DATA por ejemplo). Si se
escribe a este registro, se escribe a los pines configurados como salidas, y los bits
configurados como entradas tienen el estado lgico de los pines asociados.

Cada puerto tiene tambin un registro de direccin de datos (Data Direction Register o
GPIOnDIR), que se utiliza para configurar los bits del puerto como entradas o salidas
individualmente (GPIO2DIR por ejemplo).

Cada pin de cada puerto tiene un registro de configuracin llamado IOCON (por ejemplo
IOCON_PIO2_11) que controla, entre otras cosas, la funcin del pin, habilitacin de Pull
Resistors, y otros modos de operacin.

Los cuatro registros de datos soportan escritura y lectura enmascarada por la direccin
de memoria. Es decir: La direccin de memoria que utilice
S, La direccin de memoria se est utilizando para hacer contrabando de informacin!
A continuacin tenemos la lgica de operacin de esta caracterstica:


Para conocer ms, puede buscar Masked access en el ARM Infocenter.

Counter Timer
El microcontrolador LPC1115/303 cuenta con 2 mdulos Counter/Timer de 16 bits y 2 de
32 bits (Salvo por la cantidad de bits de sus contadores, estos mdulos son idnticos).
Los registros y bits que nos interesan son los siguientes (Revise el manual del
microcontrolador para una descripcin detallada):
Timer Control Register (TMR32B0TCR por ejemplo)
Aqu nos interesan los bits 0 y 1, que sirven para habilitar el contador, y para
reiniciar la cuenta respectivamente.
Match Control Register (TMR32B0MCR por ejemplo)
En este registro configuramos qu queremos que suceda cuando el contador
alcance el valor almacenado en el registro Match Register correspondiente (MR0
por ejemplo). En los bits 0,1, y 2 configuramos si deseamos generar una
interrupcin, reiniciar o detener la cuenta respectivamente.
Interrupt Register (TMR32B0IR por ejemplo)
En este registro se encuentran las banderas de interrupcin.
Pulse Width Modulation Configuration Register (TMR32B0PWMC por ejemplo)
En este registro se habilita el comportamiento de PWM. Lea el manual.


En la Tarjeta LPCXpresso Base Board
La mayora de los pines del microcontrolador estn conectados a un perifrico. Algunos
de estos perifricos son controlados digitalmente sin protocolos especiales. En esta
prctica, usted utilizar los siguientes:

Potencimetro rotacional.
Joystick discreto.
LED tricolor (RGB) diseado para generar mltiples colores con PWM.

A continuacin tenemos parte del diagrama esquemtico de la tarjeta LPCXpresso Base
Board, en donde aparecen estos perifricos.








Materiales y Equipo (Proporcionados por el Laboratorio)
Tarjeta LPCXpresso Base Board con una tarjeta LPCXpresso LPC1115.
PC con Windows 7 y Keil Vision 4.
2 Cables USB 2.0 a USB Mini-B (no Micro-B, sino Mini-B).



Procedimiento
Siga los siguientes pasos prestando atencin a las indicaciones de su instructor. Si tiene
alguna duda o no est seguro de cmo proceder, pregunte a su instructor.

1. Asegrese de conocer el hardware con el que trabajar. En particular verifique
lo siguiente:

a. Mantenga la tarjeta alejada de piezas metlicas como joyas y llaves.
b. Mantenga la tarjeta alejada de piezas metlicas como joyas y llaves.
c. Note que en adelante nos referiremos a dos tarjetas:
i. La tarjeta LPCXpresso Base Board, que contiene perifricos.
ii. La tarjeta LPCXpresso LPC1115, que contiene:
1. El hardware LPC-Link, para descargar programas.
2. El microcontrolador LPC1115 de NXP.

Tarjeta LPCXpresso LPC1115, de Embedded Artists

d. La tarjeta LPCXpresso Base Board es alimentada por el conector USB
Mini-B llamado X1 (Cerca del conector Ethernet RJ45), sin interruptor de
encendido. No la conecte a la PC todava.
e. La tarjeta LPCXpresso LPC1115 es programada por su conector USB
Mini-B llamado J3 (El nico). No la conecte a la PC todava.
f. Para conectar los extremos USB Mini-B de los cables, asegrese de
sujetar el conector hembra y NO la tarjeta. Si no entendi esto, pregunte
a su instructor.
g. Si en algn momento necesita apagar las tarjetas temporalmente,
desconecte los cables de sus extremos de la PC (USB standard). No
manipule los extremos de los cables que se conectan a las tarjetas ms
que para iniciar y finalizar su prctica. Cuando lo haga, recuerde hacerlo
sujetando el conector y NO la tarjeta.

2. Cree un proyecto en Keil para desarrollar una aplicacin para el
microcontrolador LPC1115 en lenguaje C, en un directorio vaco creado para ese
proyecto. Pngale un nombre simple, sin espacios ni caracteres especiales, ni
longitudes grandes. No olvide utilizar la extensin .uvproj

3. Este es el paso ms importante de esta prctica. Se le recomienda llevarlo a
cabo antes de presentarse al laboratorio. No le recomendamos dejar esto para el
momento de su prctica, ya que si tiene dudas, su instructor probablemente
estar atendiendo a sus compaeros y no le podr ayudar tan pronto como
usted lo necesite.

En el archivo main.c, escriba cdigo en lenguaje C para configurar el ADC a
4.2MHz (recuerde que cuenta originalmente con un reloj de 42MHz), luego debe
hacer un ciclo infinito para hacer una conversin y utilizar el dato convertido para
controlar el LED RGB.

Los colores del LED deben depender del valor obtenido del ADC y del estado del
joystick, de la siguiente manera:

Joystick Rojo Verde Azul
Arriba Valor del ADC Sin Cambios Sin Cambios
Izquierda Sin Cambios Valor del ADC Sin Cambios
Abajo Sin Cambios Sin Cambios Valor del ADC

De este modo, usted podr variar el brillo de cada uno de los colores del LED
RGB y producir cualquier combinacin. Si el joystick est en reposo, los valores
de ciclo de trabajo para los colores del LED deben permanecer sin cambios.

Esta es la configuracin recomendada:

Resolucin del ADC 10 bits
Frecuencia del ADC 4.2MHz
Frecuencia de PWM Alrededor de 1kHz
Preescala del Timer 42
Perodo en Cuentas 1030


Recomendaciones
Puede reutilizar partes del cdigo de sus prcticas anteriores para implementar los
pasos de configuracin y uso del Joystick y ADC.

Utilice el simulador para formarse una idea del comportamiento de su programa.

Utilice el manual del microcontrolador para saber cmo utilizar los registros de
configuracin. Lo necesitar para escribir su cdigo.

Utilice el diagrama esquemtico de la tarjeta LPCXpresso Base Board para
identificar los pines GPIO a los que estn conectados el LED RGB, el Joystick, y el
potencimetro.

4. Una vez haya depurado su cdigo, ejecute su programa y muestre a su
instructor lo siguiente:
a. El cdigo que escribi.
b. El hardware funcionando. Al mover el potencimetro, el LED RGB debe
mostrar un cambio de intensidad en el color correspondiente a la posicin
del Joystick.

5. Ahora usted debe agregar a su programa la funcionalidad de hacer titilar el LED
de la tarjeta LPCXpresso a una frecuencia de 1Hz utilizando una interrupcin
peridica. Esto ya lo hizo en la prctica pasada en las funciones Init_Timer32
y TIMER32_0_IRQHandler.

Usted puede!

6. Muestre su programa funcionando a su instructor. Esto es esencial para obtener
sus puntos.

7. Ahora modifique su cdigo para no utilizar el dato convertido por el ADC,
manteniendo apagado el LED de la tarjeta LPCXpresso. Muestre a su instructor
esta aplicacin corriendo. El mover el potencimetro de extremo a extremo no
debe ocasionar ningn cambio en el LED RGB. Esto lo puede lograr
comentando las lneas en donde escribe a los registros Match de los Timers. El
LED de la tarjeta LPCXpresso debe permanecer apagado.

8. Si ha llegado exitosamente hasta este paso, usted ha aprendido a utilizar
interrupciones y PWM!

También podría gustarte