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!