introducci on a lpcxpresso y repaso del lenguaje...

18
LPCXpresso Repaso de Lenguaje C Actividades Resumen Introducci´on a LPCXpresso y repaso del lenguaje C Alan Kharsansky 8 - Febrero - 2011 Alan Kharsansky Introducci´ on a LPCXpresso y repaso del lenguaje C 1 / 54 LPCXpresso Repaso de Lenguaje C Actividades Resumen ´ Indice 1 LPCXpresso Introducci´ on LPCXpresso Target board BaseBoard LPCXpresso IDE 2 Repaso de Lenguaje C Introducci´ on Proceso de creaci´ on de software en C Pasando del Assembly al C 3 Actividades Actividad Nro 1 - Blinky Led Actividad Nro 2 - RGB Led Actividad Nro 3 - Fading Led Recursos 4 Resumen Alan Kharsansky Introducci´ on a LPCXpresso y repaso del lenguaje C 2 / 54 LPCXpresso Repaso de Lenguaje C Actividades Resumen Introducci´ on LPCXpresso Target board BaseBoard LPCXpresso IDE Introducci´on El LPCXpresso es un toolchain completo para evaluaci´ on y desarrollo con microcontroladores de NXP. Esta compuesto por: LPCXpresso IDE y ”development tools” IDE basado en Eclipse compiler y linker GNU GDB debugger LPCXpresso target board (stick) BaseBoard o hardware adicional (opcional) Alan Kharsansky Introducci´ on a LPCXpresso y repaso del lenguaje C 3 / 54 Notes Notes Notes

Upload: phungbao

Post on 22-Feb-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Introduccion a LPCXpresso y repaso del lenguaje C

Alan Kharsansky

8 - Febrero - 2011

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 1 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Indice

1 LPCXpressoIntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

2 Repaso de Lenguaje CIntroduccionProceso de creacion de software en CPasando del Assembly al C

3 ActividadesActividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

4 ResumenAlan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 2 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

Introduccion

El LPCXpresso es un toolchain completo para evaluacion ydesarrollo con microcontroladores de NXP.

Esta compuesto por:

LPCXpresso IDE y ”developmenttools”

IDE basado en Eclipsecompiler y linker GNUGDB debugger

LPCXpresso target board (stick)

BaseBoard o hardware adicional(opcional)

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 3 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso target board

El target board es un un microcontrolador con todo lo necesariopara encender y tambien una herramienta que incluye unprogramador y debugger.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 4 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso target board

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 5 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso target board

Del lado del target este incluye algunos perifericos basicos y secomercializan con diferentes micrcontroladores. Por el momento seencuentran disponibles:

LPC1114: ARM Cortex-M0, 32KB flash, 4/8KB SRAM

LPC1343: ARM Cortex-M3, 32KB flash, 8K SRAM, USB

LPC1768: ARM Cortex-M3, 512KB flash, 64KB SRAM,Ethernet, USB On the go.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 6 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso target board

En este curso vamos a utilizar el target que viene con el LPC1768.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 7 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso BaseBoard

El BeseBoard fue disenado por Embedded Artists Junto con NXP.Permite conectarle un MBed o un LPCXpresso Target.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 8 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso BaseBoard

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 9 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso BaseBoard

La placa contiene perifericos para desarrollo y experimentacion:

Generales:

Socket for LPCXpresso and mbed module

50 pin expansion dual row pin/header listconnector

Battery powering (small coin battery)

USB interface

Reset pushbutton

Digitales:

RGB-LED (can be PWM controlled)

5-key joystick switch

2 pushbuttons, one for activating bootloader

Rotary switch with quadrature encoding (timercapture)

Temperature sensor with PWM output (timercapture)

Analogicos:

Trimming potentiometer input (analog input)

PWM to analog LP-filtering (PWM output andanalog input)

Speaker output (PWM output)

Oscilloscope probe inout stage

Serial - UART:

USB-to-serial bridge, with automatic ISPactivation

RS422/485 interface

Interface socket for XBee RF-module

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 10 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso BaseBoard

Continuacion:

Serial - SPI:

Shift register driving 7-segment LED

SD/MMC memory card interface

Dataflash SPI-NOR flash

Serial - I2C:

PCA9532 port expander connected to 16 LEDs

8kbit E2PROM

MMA7455L accelerometer with I2C interface

Light sensor

Serial - I2C/SPI

SC16IS752 - I2C/SPI to 2xUART bridge;connected to RS232 full-modem interface andone expansion UART

96x64 pixel white OLED (alternative I2C/SPIinterface)

Extras

CAN bus interface (can be simulated withLPCXpresso LPC1114/LPC1343)

Ethernet RJ45 connector with integratedmagnetic

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 11 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

Informacion adicional

Se recomienda revisar los siguientes documentos:

LPC1768 User Manual (datasheet) Ver

LPCXpresso 1768 Target board: Esquematicos Ver

LPCXpresso BaseBoard: Guıa de usuario Ver

LPCXpresso BaseBoard: Esqumaticos Ver

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 12 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

LPCXpresso IDE (Eclipse)

El LPCXpresso IDE fue desarrollado por CodeRed junto a NXP. Elmismo incluye un entorno de Eclipse especıficumente adaptadopara interactuar con el target board.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 13 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

Conceptos basicos

Eclipse utiliza algunos conceptos que no siempre son comunes aotros entornos de desarrollo por lo que vamos a ver algunos deellos.

Workspace Es el contenedor de nuestros proyectos. Estos proyectos pueden seraplicaciones y/o bibliotecas. Tambien almacena todas lasconfiguraciones del entorno por lo que se puede mover muy facilmente decomputadora en computadora.

Proyecto Este puede ser de dos tipos. Biblioteca estatica o una aplicacionejecutable. Contiene archivos de codigo fuente (.c), encabezados (.h) ycualquier otro archivo que se desee.

En general utilizaremos el workspace para intercambiar proyectos (en el sentido

convencional de la palabra) ya que el mismo incluıra todas las bibliotecas

necesarias.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 14 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

Tipos de proyectos

Los proyectos pueden ser de dos tipos:

Aplicaciones: Se compilan y se pueden descargar directamente altarget.

Bibliotecas estaticas: Se pueden compilar, pero para usarlas, unproyecto de tipo aplicacion debe hacer llamadas a las funciones queeste contiene. Es decir, no puede tener un main(). Este tipo deproyectos no se puede descargar por si solo al microcontrolador.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 15 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

Tipos de proyectos - Ejemplo

Para ejemplificar pensemos en un ejemplo de un sistema embebido:un reproductor de MP3. Este podrıa estar compuesto por unamemoria SD, una pantalla tactil y un decodificaro de MP3. Todosestos perifericos estan controlados por un microcontrolador, porejemplo un LPC1768.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 16 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionLPCXpresso Target boardBaseBoardLPCXpresso IDE

Tipos de proyectos - Ejemplo

Las bibliotecas estaticas que podrıamos tener son:

Para el manejo de una memoria SD

Para el manejo del display

Para el manejo del touchscreen

Para el manejo del decodificador

Nuestra aplicacion en sı serıa la que tendra el programa principal ydesde donde se ejecutara nuestro programa. Pero las bibliotecasnos proveen funciones para el manejo de estos perifericos. Puededarse el caso en el que el fabricante nos provea de estas bibliotecasya compiladas. En ese caso solo debemos conocer los prototiposde las funciones.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 17 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Repaso de lenguaje C

Tenemos que recordar que vamos a estar programando en ellenguaje C estandar y que nuestra plataforma donde se ejecutara elcodigo es distinta a donde lo compilaremos. Es por eso quedecimos que estamos usando un:

Cross Compiler

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 18 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Proceso de creacion de software en C

Al programar en C, generalmente el proceso que se sigue es elsiguiente:

Edicion Compilacion Linkeo Descarga Depuracion

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 19 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Edicion de codigo

En C tenemos dos tipos de archivos,

.c Archivos compilables. Solo puede haber uno por ejecutableque contenga un main. Cada programa puede utilizar tantoscomo se requiera.

.h Archivos no compilables. Suelen incluirse en los .c para usardefiniciones y prototipos.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 20 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Edicion de codigo - un ejemplo

#i n c l u d e ” l e d s . h”#i n c l u d e ” d e l a y . h”

i n t main ( v o i d ){i n t a , b ;a = 10000;b = 2∗a ;

w h i l e ( 1 ){ledOn ( 0 , 2 2 ) ;d e l a y ( b ) ;l e d O f f ( 0 , 2 2 ) ;d e l a y ( b ) ;}

r e t u r n 1 ;}

app.c

v o i d d e l a y ( i n t t ){i n t i ;f o r ( i =0; i<t ∗10000; i ++){//No hago nada}}

leds.c

v o i d d e l a y ( i n t t ) ;

leds.h

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 21 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Compilacion

Al querer generar un programa ejecutable. Primero necesitaremosejecutar el compilador. Este antes de empezar a compilar, ejecutael pre-procesador.

Algunas de las tareas que este realiza son:

Inclusion de archivos.

Compilacion condicional.

Interpretacion de macros y definiciones.

Comprobacion de errores de sintaxis.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 22 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Compilacion

Ahora el compilador es quien se encarga de generar codigoejecutable (o codigo objeto).Incluir archivos .h (o prototipos de funciones) en el archivo .c leindican al compilador que las funciones existen, tienen una formadeterminada y en algun momento seran linkeadas. Es decir que elcodigo tendra llamadas a las funciones pero no su implementacion.

En nuestro ejemplo, se debera entonces ejecutar el compilador paracompilar leds.c y app.c El resultado del mismo son archivos .o. Esdecir:

leds.o

app.o

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 23 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Linkeo

Cuando se tienen todos los archivos .o, se puede proceder al linkeoo union de los archivos para generar un archivo ejecutable. Porejemplo app.hex

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 24 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Resumen

Cuando utilizamos Eclipse (en este caso el CodeRed) podemos,entonces, tener diferentes proyectos dentro de un workspace yluego linkearlos para producir una salida final.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 25 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Resumen

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 26 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Resumen

Mini Tutorial para realizar proyectos con CodeRedDescargar

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 27 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Diferencias

Al programar un microcontrolador tendremos que tener algunasconsideraciones. Al no tener control (preciso) de las lineas deAssembly ni de donde se ubicara nuestro codigo en memoria,debemos usar nombres de funciones que el compilador luegoubicara en lugares especiales.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 28 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Punto de entrada

El punto de entrada que antes lo asociabamos a una posicion dememoria, por ejemplo 0x0000, ahora lo debemos utilizar con unnombre de funcion especifico.

Para el LPCXpresso esta funcion se llama Reset Handler().

Tambien existen otros para diferentes interrupciones y handlers

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 29 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Punto de salida

A diferencia de un programa decomputadora, los programas delos microcontroladores no puedenretornar del main. Esto se debe aque no fue llamado por ningunsistema operativo (por ejemplo).Por eso generalmente utilizamosla siguiente estructura:

v o i d main ( v o i d ){// De c l a r a c i o n de v a r i a b l e s// Rut i na s de i n i c i a l i z a c i o n

w h i l e ( 1 ){// Programa p r i n c i p a l// . . . . . . .// . . . . . . .}

r e t u r n 0 ;}

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 30 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

IntroduccionProceso de creacion de software en CPasando del Assembly al C

Interrupciones

Las interrupciones en elmicrocontrolador, al igual que elmain, se asocian a una posicionde memoria. Solamenteutilizamos su nombre. Porejemplo:

v o i d main ( v o i d ){// De c l a r a c i o n de v a r i a b l e s// Rut i na s de i n i c i a l i z a c i o n

w h i l e ( 1 ){// Programa p r i n c i p a l// . . . . . . .// . . . . . . .}

}

v o i d IRQ Handler ( v o i d ){% S e r v i c i o de i n t e r r u p c i o n}

El compilador y el microcontrolador se encargan de poner el codigo necesariopara guardar y devolver el contexto.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 31 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Actividad Nro 1 - Blinky Led

Blinky Led

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 32 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Objetivo

Familiarizarse con el entorno y lograr hace nuestro primer:

Hello World!

En microcontroladores, esto equivale a hacer parpadear un LEDconectado a algun pin de I/O del microcontrolador.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 33 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Paso 1

Debemos abrir el workspace provisto con esta clase. Una vezabierto podremos ver que ya existen dos proyectos dentro:

FreeRTOS-Library Kernel del FreeRTOS

Lib-CMSIS CMSIS provisto por NXP y Drivers basicos paraperifericos

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 34 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Paso 1

Crearemos un nuevo proyecto. Elegir que el target es un NXPLPC17XX C project. Poner un nombre, por ejemplo: ”Blinky” yelegir el microcontrolador LPC1768. Luego presionar finish.

Debemos configurar al proyecto para que sepa los paths con losque trabajaremos. Tambien debemos definir el macro global

USE CMSIS

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 35 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Paso 2

Ahora que ya tenemos configurado el proyecto, podemos empezara escribir nuestro codigo. Para ello lo primero que debemos haceres configurar el pin como salida digital. Esto se debe a que cadapin del LPC1768 puede ser utilizado para diferentes funciones.

Por ahora para poder configurar perifericos, accederemos a travesde los registros especiales. El Led que utilizaremos esta ubicado enel stick y conectado al puerto 0 y pin 22 (GPIO0 22).

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 36 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Paso 2

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 37 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Paso 2

Para poder acceder a estos registros, el CMSIS nos provee de unasestructuras en las que se incluyen todos los registros de cadapuerto. En este caso como usamos el puerto 0, la estructura queutilizaremos sera:

LPC GPIO0

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 38 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Paso 2

La estructura LPC GPIO0 esta formado por los siguientes registros:

FIODIR: Permite establecer la direccion del pin. 1 para salida,0 para entrada

FIOSET: Permite poner un 1 logico en un pin.

FIOCLEAR: Permite poner un 0 logico en un pin.

FIOPIN: Permite leer el estado de los pines

FIOMAS: Establece una mascara para las acciones de PIN,SET o CLEAR

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 39 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Paso 2

Para setear la direccion de un pin utilizamos el siguiente codigo:

L P C G P I O 0−>FIODIR |= (1<<22);

Para setear el bit o borrarlo, podemos hacer:

L P C G P I O 0−>FIOSET = (1<<22);LPC GPIO0−>FIOCLR = (1<<22);

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 40 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Ejercicio completo

El codigo completo queda entonces:

#i f d e f USE CMSIS#i n c l u d e ”LPC17xx . h”#e n d i f

i n t main ( v o i d ) {

LPC GPIO0−>FIODIR |= (1<<22); // D i r e c c i o n

w h i l e ( 1 ) {LPC GPIO0−>FIOSET = (1<<22); // PrendoLPC GPIO0−>FIOCLR = (1<<22); // Apago

}

r e t u r n 0 ;}

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 41 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Adicional

El ejemplo anterior solo es visible si se debuggea el programa, ¿Porque?

Como podrıamos implementar un ”delay” en nuestro codigo quenos permita ver parpadear el led (sin utilizar Timers).

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 42 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Actividad Nro 2 - RGB Led

RGB Led driver para el BaseBoard

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 43 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Objetivo

El objetivo de este ejercicio es poder crear una biblioteca estaticade funciones y poder vincularla con nuestro proyecto. La mismadebera tener funciones para poder cambiar los colores del led RGBque incluye el BaseBoard.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 44 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Consigna

Se debera crear una biblioteca estatica que permita manejar el LedRGB que trae el BaseBoard. El mismo se controla mediante 3pines de salida:

RED: GPIO2, pin 0

GREEN: GPIO2, pin 1

BLUE: GPIO0, 26

Ojo con los jumpers del BaseBoard. Chequear que esten conectados.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 45 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Consigna

Las funciones que debera tener esta biblioteca son:

Inicializar el hardware

Apagar todos los leds

Prender los leds independientemente para mostrar los coloresprimarios

Opcional: Hacer funciones para generar colores a partir de losprimarios.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 46 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Consigna

La intencion es lograr unabiblioteca (o driver)totalmente separado denuestro codigo para luegotener un main que seasimilar al siguiente:

#i n c l u d e ”RGBLed . h”

i n t main ( v o i d ) {

l e d s I n i t ( ) ;

w h i l e ( 1 ) {redLedOn ( ) ;l e d s O f f ( ) ;greenLedOn ( ) ;l e d s O f f ( ) ;blueLedOn ( ) ;

}r e t u r n 0 ;

}

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 47 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Actividad Nro 3 - Fading Led (PWM)

Fading LED

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 48 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Consigna

El objetivo de esta actividad es hacer un programa que permitavariar la intensidad de brillo de un Led. Para ello solamentepodremos usar las funciones b ’asicas C y las de entrada y salidavistas en la actividad Nro 1.

Se debera disenar entonces un programa que permita variar elperiodo de actividad de un pulso cuadrado (PWM) por software.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 49 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Actividad Nro 3 - Fading Led (PWM)

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 50 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Actividad Nro 1 - Blinky LedActividad Nro 2 - RGB LedActividad Nro 3 - Fading LedRecursos

Recursos

Para poder realizar las practicas se encuentran disponiblesworkspaces para descargar:

Workspace vacio (incluye Lib CMSIS y FreeRTOS) Descargar

Workspace completo (incluye el vacio y las actividades 1 y 2terminadas) Descargar

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 51 / 54

Notes

Notes

Notes

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Resumen

Los temas que vimos hoy fueron:

LPCxpresso y su toolchain: target, BaseBoard, IDE

Proceso de desarrollo de software: edicion, compilacion,linkeo, descarga y depuracion

Repaso de C: punteros, estructuras, operadores de bits ymascaras.

Ejemplos basicos: manejos de I/O y estructuras repetitivas.

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 52 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Resumen

¿Dudas? ¿Consultas?

Cualquier comentario o consulta lo pueden hacer a la lista delgrupo:

[email protected]

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 53 / 54

LPCXpressoRepaso de Lenguaje C

ActividadesResumen

Resumen

Muchas gracias

Alan Kharsansky Introduccion a LPCXpresso y repaso del lenguaje C 54 / 54

Notes

Notes

Notes