Upload
phungbao
View
228
Download
0
Embed Size (px)
Citation preview
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:
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