Sistemas Embebidos-2011 2doC-Intro a LPCXpresso y Repaso Lenguaje C-Kharsansky

March 21, 2018 | Author: Facu Zubiaurre | Category: Integrated Development Environment, Compiler, Computer Program, Programming Language, Version Control


Comments



Description

LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o ActividadesIntroducci´n a LPCXpresso y repaso del lenguaje C o Seminario de Sistemas Embebidos - FIUBA Alan Kharsansky Agosto - 2011 Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 1 / 64 LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades ´ Indice 1 2 3 4 LPCXpresso Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE Repaso de Lenguaje C Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Repositorio de c´digo o VCS Topolog´ ıa VCSs populares Herramientas para el curso Mercurial Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o Actividades 2 / 64 LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE Introducci´n o El LPCXpresso es un toolchain completo para evaluaci´n y o 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´n a LPCXpresso y repaso del lenguaje C o 3 / 64 LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso target board El target board es un una herramienta de desarrollo que incluye Un uC de las familias LPC1100. LPC1300 o LPC1700 junto con eletr´nica m´ o ınima necesaria para su funcionamiento Un programador y debugger JTAG Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 4 / 64 . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso target board Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 5 / 64 . Ethernet. 512KB flash. USB On the go. 32KB flash. USB. muy similar al LPC1769 o o Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 6 / 64 . LPC1343: ARM Cortex-M3. 32KB flash. Por el momento se encuentran disponibles: LPC1114: ARM Cortex-M0. 64KB SRAM. 120 Mhz. Nota: En su primera versi´n existi´ el LPC1768. LPC1769: ARM Cortex-M3. 50 Mhz. 72 Mhz.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso target board Del lado del target este incluye algunos perif´ricos b´sicos y se e a comercializan con diferentes micrcontroladores. 8K SRAM. 4/8KB SRAM. LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso target board En este curso vamos a utilizar el target que viene con el LPC1768/9. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 7 / 64 . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso BaseBoard El BeseBoard fue dise˜ado por Embedded Artists Junto con NXP. n Permite conectarle un MBed o un LPCXpresso Target. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 8 / 64 LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso BaseBoard Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 9 / 64 LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso BaseBoard La placa contiene perif´ricos para desarrollo y experimentaci´n: e o Generales: Socket for LPCXpresso and mbed module 50 pin expansion dual row pin/header list connector 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 (timer capture) Temperature sensor with PWM output (timer capture) Anal´gicos: o Trimming potentiometer input (analog input) PWM to analog LP-filtering (PWM output and analog input) Speaker output (PWM output) Oscilloscope probe inout stage Serial - UART: USB-to-serial bridge, with automatic ISP activation RS422/485 interface Interface socket for XBee RF-module Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 10 / 64 connected to RS232 full-modem interface and one expansion UART 96x64 pixel white OLED (alternative I2C/SPI interface) Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 11 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso BaseBoard Continuaci´n: o Serial .I2C: PCA9532 port expander connected to 16 LEDs 8kbit E2PROM MMA7455L accelerometer with I2C interface Light sensor Extras CAN bus interface (can be simulated with LPCXpresso LPC1114/LPC1343) Ethernet RJ45 connector with integrated magnetic Serial .I2C/SPI SC16IS752 .I2C/SPI to 2xUART bridge.SPI: Shift register driving 7-segment LED SD/MMC memory card interface Dataflash SPI-NOR flash Serial . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE Informaci´n adicional o Se recomienda revisar los siguientes documentos: LPC1768 User Manual LPC1768 Datasheet Ver Ver Ver LPCXpresso 1768 Target board: Esquem´ticos a LPCXpresso BaseBoard: Gu´ de usuario ıa LPCXpresso BaseBoard: Esquem´ticos a Ver Ver Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 12 / 64 . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 13 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE LPCXpresso IDE (Eclipse) El LPCXpresso IDE fue desarrollado por CodeRed junto a NXP. El mismo incluye un entorno de Eclipse espec´ ıficamente adaptado para interactuar con el target board. Tambi´n almacena todas las e configuraciones del entorno por lo que se puede mover muy f´cilmente de a computadora en computadora. Proyecto Este puede ser de dos tipos. Biblioteca est´tica o una aplicaci´n a o ejecutable. En general utilizaremos el workspace para intercambiar proyectos (en el sentido convencional de la palabra) ya que el mismo inclu´ todas las bibliotecas ıra necesarias.c). Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 14 / 64 . Estos proyectos pueden ser aplicaciones y/o bibliotecas. encabezados (.h) y o cualquier otro archivo que se desee. Contiene archivos de c´digo fuente (. Workspace Es el contenedor de nuestros proyectos.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE Conceptos b´sicos a Eclipse utiliza algunos conceptos que no siempre son comunes a otros entornos de desarrollo por lo que vamos a ver algunos de ellos. no puede tener un main(). Este tipo de proyectos no se puede descargar por si solo al microcontrolador. un a proyecto de tipo aplicaci´n debe hacer llamadas a las funciones que o este contiene. pero para usarlas.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE Tipos de proyectos Los proyectos pueden ser de dos tipos: Aplicaciones: Se compilan y se pueden descargar directamente al target. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 15 / 64 . Bibliotecas est´ticas: Se pueden compilar. Es decir. Todos a estos perif´ricos est´n controlados por un microcontrolador. Este podr´ estar compuesto por una ıa memoria SD.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE Tipos de proyectos . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 16 / 64 .Ejemplo Para ejemplificar pensemos en un ejemplo de un sistema embebido: un reproductor de MP3. por e a ejemplo un LPC1768. una pantalla t´ctil y un decodificaro de MP3. LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE Tipos de proyectos .Ejemplo Las bibliotecas est´ticas que podr´ a ı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 Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 17 / 64 . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o LPCXpresso Target board BaseBoard LPCXpresso IDE Tipos de proyectos . o Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 18 / 64 . Estos prototipos se agregan a los archivos fuente utilizando la directiva #include y generalmente de archivos con extensi´n . En ese caso solo debemos conocer los prototipos de las funciones. Pero las bibliotecas nos proveen funciones para el manejo de estos perif´ricos. Puede e darse el caso en el que el fabricante nos provea de estas bibliotecas ya compiladas.h.Ejemplo Nuestra aplicaci´n en s´ ser´ la que tendr´ el programa principal y o ı ıa a desde donde se ejecutara nuestro programa. Es por eso que o decimos que estamos usando un: Cross Compiler Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 19 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Repaso de lenguaje C Tenemos que recordar que vamos a estar programando en el lenguaje C estandar y que nuestra plataforma donde se ejecutar´ el a c´digo es distinta a donde lo compilaremos. generalmente el proceso que se sigue es el siguiente: Edici´n o Compilaci´n o Linkeo Descarga Depuraci´n o Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 20 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Proceso de creaci´n de software en C o Al programar en C. S´lo puede haber uno por ejecutable o que contenga un main. . Cada programa puede utilizar tantos como se requiera. Suelen incluirse en los . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 21 / 64 . .h Archivos no compilables.c para usar definiciones y prototipos.c Archivos compilables.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Edici´n de c´digo o o En C tenemos dos tipos de archivos. c Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 22 / 64 . while (1){ ledOn ( 0 . a = 10000. b.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Edici´n de c´digo . } return 1. } void d e l a y ( i n t t ){ int i . delay (b ). f o r ( i =0. delay (b ).22).h app. delay. i ++){ //No hago nada } } delay. h” #i n c l u d e ” d e l a y . 2 2 ) . b = 2∗ a . h” i n t main ( v o i d ) { int a .un ejemplo o o #i n c l u d e ” l e d s . i <t ∗ 1 0 0 0 0 . ledOff (0 .c void delay ( int t ) . ejecuta el pre-procesador. o Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 23 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Compilaci´n o Al querer generar un programa ejecutable. o Interpretaci´n de macros y definiciones. Algunas de las tareas que este realiza son: Inclusi´n de archivos. Primero necesitaremos ejecutar el compilador. o Compilaci´n condicional. Este antes de empezar a compilar. o Comprobaci´n de errores de sintaxis. h (o prototipos de funciones) en el archivo . Es decir que el u a c´digo tendra llamadas a las funciones pero no su implementaci´n.c El resultado del mismo son archivos . se deber´ entonces ejecutar el compilador para a compilar leds. o o En nuestro ejemplo.c y app.o Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 24 / 64 .o: leds.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Compilaci´n o Ahora el compilador es quien se encarga de generar c´digo objeto. tienen un prototipo determinada y en alg´n momento ser´n linkeadas.o app. o Incluir archivos .c le indican al compilador que las funciones existen. LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Linkeo Cuando se tienen todos los archivos .axf o . Luego se puede pasar a un archivo . se puede proceder al linkeo o uni´n de los archivos para generar un archivo ejecutable.o. La o salida generalmente es un archivo .hex o Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 25 / 64 .elf que contienen el c´digo ejecutable. data Variables globales read-only y read-write inicializadas .text C´digo ejecutable o . La memoria din´mica. a Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 26 / 64 . Las variables locales de una funci´n se alojan en o el stack. Se tienen los sectores de memoria: o .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Zonas de memoria Es importante tener en cuenta en donde se va a ubicar cada parte del c´digo generado. en el heap.bss Variables sin inicializar (son inicializadas en 0 automticamente) Notas: Es com´n en microcontroladores utilizar el segmento text para u guardar variables const. LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Linkeo . Por defaut.data y .bss se alojan en el primer banco de RAM aunque es posible ubicarlos en uno diferente.Linker Script El linker script es un archivo de configuraci´n que le indica al linker o (ld) donde ubicar cada segmento de memoria. en el IDE de LPCXpresso los segmentos . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 27 / 64 . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 28 / 64 . entonces. tener diferentes proyectos dentro de un workspace y luego linkearlos para producir una salida final.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Resumen Cuando utilizamos Eclipse (en este caso el CodeRed) podemos. LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Resumen Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 29 / 64 . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Resumen Mini Tutorial para realizar proyectos con CodeRed Descargar Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 30 / 64 . Al no tener control (preciso) de las lineas de Assembly ni de donde se ubicar´ nuestro c´digo en memoria. a o debemos usar nombres de funciones que el compilador luego ubicar´ en lugares especiales.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Diferencias Al programar un microcontrolador tendremos que tener algunas consideraciones. a Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 31 / 64 . o Para el LPCXpresso esta funci´n se llama Reset Handler(). por ejemplo 0x0000.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Punto de entrada El punto de entrada que antes lo asociabamos a una posici´n de o memoria. o Tambi´n existen otros para diferentes interrupciones y handlers e Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 32 / 64 . ahora lo debemos utilizar con un nombre de funci´n especifico. . . . . . . . Esto se debe a que no fue llamado por ning´n u sistema operativo (por ejemplo). } return 0. Por eso generalmente utilizamos la siguiente estructura: i n t main ( v o i d ) { // D e c l a r a c i o n de v a r i a b l e s // R u t i n a s de i n i c i a l i z a c i o n while (1){ // Programa p r i n c i p a l // . . . . los programas de los microcontroladores no pueden retornar del main.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Punto de salida A diferencia de un programa de computadora. } Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 33 / 64 . . // . . . . . al igual que el main. Por ejemplo: while (1){ // Programa p r i n c i p a l // . .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Introducci´n o Proceso de creaci´n de software en C o Pasando del Assembly al C Interrupciones v o i d main ( v o i d ) { // D e c l a r a c i o n de v a r i a b l e s // R u t i n a s de i n i c i a l i z a c i o n Las interrupciones en el microcontrolador. . . . se asocian a una posici´n o de memoria. . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 34 / 64 . . Solamente utilizamos su nombre. // . } } void IRQ Handler ( void ){ // S e r v i c i o de i n t e r r u p c i o n } El compilador y/o el microcontrolador se encargan de poner el c´digo necesario o para guardar y devolver el contexto. . . . c Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 35 / 64 . que debe ser o compartido por m´s de una persona y que esta sujeto a constantes a modificaciones por parte de los programadores de manera eficiente.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades VCS Topolog´ ıa VCSs populares Herramientas para el curso Mercurial Sistema de control de versiones (VCS) Un sistema de control de versiones es una herramienta que permite administrar un c´digo que va evolucionando. No m´s: a main final final superfinal8 elposta. Distribuido: No existe un repositorio central de c´digo. Todos o los usuarios se conectan a este para trabajar sobre el proyecto. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 36 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades VCS Topolog´ ıa VCSs populares Herramientas para el curso Mercurial VCSs distribuido vs centralizado Hay dos topolog´ de sistemas de control de versiones: ıas Centralizado: existe un repositorio central de c´digo. o Todos los usuarios manejan copias locales del repositorio completo. A veces se suele usar un sistema h´ ıbrido. LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades VCS Topolog´ ıa VCSs populares Herramientas para el curso Mercurial VCSs populares Hoy en dia los m´s populares son: a Centralizado: Subversion Distribuido: Mercurial (Hg) y Git Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 37 / 64 . utilizaremos un plugin para eclipse llamado MercurialEclipse que nos permitira integrar esta tecnolog´ directamente en el entorno ıa del LPCXpresso.org.com es un muy buen tutorial para comenzar Ver Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 38 / 64 . HgInit. Para utilizar el VCS dentro de nuestro entorno de trabajo.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades VCS Topolog´ ıa VCSs populares Herramientas para el curso Mercurial Herramientas para VCS Durante el transcurso del seminario utilizaremos Mercurial como sistema de control de versiones y un repositorio central en BitBucket. Los conceptos m´s importantes que tenemos que saber para comenzar a son: Clone Push Pull Commit Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 39 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades VCS Topolog´ ıa VCSs populares Herramientas para el curso Mercurial Mercurial Mercurial es un sistema distribuido muy simple de usar. Un commit es la manera de guardar los cambios que se hicieron. Luego agregar los archivos que queremos administrar (lo ideal: la mayor´ ıa). Estos son SIEMPRE en el repositorio local.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades VCS Topolog´ ıa VCSs populares Herramientas para el curso Mercurial Commit Cuando queremos utilizar Mercurial debemos crear un repositorio en alguna carpeta. Estos son incrementales por lo que no se copia cada versi´n sino o solo las modificaciones. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 40 / 64 . Por ejemplo el central en bitBucket. El comando pull permite descargar los cambios de un repositorio ya clonado El comando push permite guardar los cambios en un repositorio que no es el local.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades VCS Topolog´ ıa VCSs populares Herramientas para el curso Mercurial Clone. push y pull El comando clone permite clonar un repositorio existente. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 41 / 64 .org a mi computadora local. Fading Led Actividad Nro 1 .Blinky Led Blinky Led Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 42 / 64 .Blinky Led Actividad Nro 2 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .RGB Led Actividad Nro 3 . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .RGB Led Actividad Nro 3 . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 43 / 64 . esto equivale a hacer parpadear un LED conectado a algun pin de I/O del microcontrolador.Blinky Led Actividad Nro 2 .Fading Led Objetivo Familiarizarse con el entorno y lograr hace nuestro primer: Hello World! En microcontroladores. Fading Led Paso 1 Debemos clonar el repositorio de la materia. Este nos descargara un workspace que contiene bibliotecas est´ticas y recursos a adicionales: Lib CMSIS and Drivers CMSIS provisto por NXP y Drivers b´sicos para perifericos a FreeRTOS-Library Kernel del FreeRTOS Documentaci´n o Ejemplos Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 44 / 64 .RGB Led Actividad Nro 3 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .Blinky Led Actividad Nro 2 . Elegir que el target es un NXP LPC17XX C project.Fading Led Paso 1 Crearemos un nuevo proyecto. Debemos configurar al proyecto para que sepa los paths con los que trabajaremos. Luego presionar finish.Blinky Led Actividad Nro 2 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .RGB Led Actividad Nro 3 . por ejemplo: ”Blinky” y elegir el microcontrolador LPC1768/9. Tambi´n debemos definir el macro global e USE CMSIS Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 45 / 64 . Poner un nombre. Por ahora para poder configurar perifericos. accederemos a traves de los registros especiales. Para ello lo primero que debemos hacer o es configurar el pin como salida digital. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 46 / 64 . podemos empezar a escribir nuestro c´digo.RGB Led Actividad Nro 3 . Esto se debe a que cada pin del LPC1768 puede ser utilizado para diferentes funciones.Blinky Led Actividad Nro 2 .Fading Led Paso 2 Ahora que ya tenemos configurado el proyecto. El Led que utilizaremos est´ ubicado en a el stick y conectado al puerto 0 y pin 22 (GPIO0 22).LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . RGB Led Actividad Nro 3 .Fading Led Paso 2 Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 47 / 64 .Blinky Led Actividad Nro 2 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .Fading Led Paso 2 Para poder acceder a estos registros. la estructura que utilizaremos ser´: a LPC GPIO0 Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 48 / 64 . NXP nos provee de archivos para cada uC con definiciones y estructuras en las que se incluyen todos los registros de cada perif´rico.Blinky Led Actividad Nro 2 . En este caso como usamos el e puerto 0.RGB Led Actividad Nro 3 . RGB Led Actividad Nro 3 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . o 0 para entrada FIOSET: Permite poner un 1 l´gico en un pin. 1 para salida. o FIOPIN: Permite leer el estado de los pines FIOMAS: Establece una mascara para las acciones de PIN.Fading Led Paso 2 La estructura LPC GPIO0 esta formado por los siguientes registros: FIODIR: Permite establecer la direcci´n del pin.Blinky Led Actividad Nro 2 . o FIOCLEAR: Permite poner un 0 l´gico en un pin. SET o CLEAR FIO: Fast I/O Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 49 / 64 . Para setear el bit o borrarlo.LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . podemos hacer: LPC GPIO0−>FIOSET = (1 < <22).Fading Led Paso 2 Para setear la direcci´n de un pin utilizamos el siguiente c´digo: o o LPC GPIO0−>FIODIR |= (1 < <22). LPC GPIO0−>FIOCLR = (1 < <22). Notar que SET y CLEAR no se usan con m´scaras. ¿Por qu´? a e Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 50 / 64 .Blinky Led Actividad Nro 2 .RGB Led Actividad Nro 3 . h” #e n d i f i n t main ( v o i d ) { LPC GPIO0−>FIODIR |= (1 < <22).RGB Led Actividad Nro 3 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . } // D i r e c c i o n // Prendo // Apago Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 51 / 64 . LPC GPIO0−>FIOCLR = (1 < <22).Fading Led Ejercicio completo El c´digo completo queda entonces: o #i f d e f USE CMSIS #i n c l u d e ” LPC17xx . while (1) { LPC GPIO0−>FIOSET = (1 < <22).Blinky Led Actividad Nro 2 . } return 0 . Blinky Led Actividad Nro 2 . ¿Por qu´? e Como podr´ ıamos implementar un ”delay” en nuestro c´digo que o nos permita ver parpadear el led (sin utilizar Timers).RGB Led Actividad Nro 3 . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 52 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .Fading Led Adicional El ejemplo anterior solo es visible si se debuggea el programa. RGB Led Actividad Nro 3 .Fading Led Actividad Nro 2 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .Blinky Led Actividad Nro 2 .RGB Led RGB Led driver para el BaseBoard Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 53 / 64 . Blinky Led Actividad Nro 2 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .RGB Led Actividad Nro 3 . La misma deber´ tener funciones para poder cambiar los colores del led RGB a que incluye el BaseBoard. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 54 / 64 .Fading Led Objetivo El objetivo de este ejercicio es poder crear una biblioteca est´tica a de funciones y poder vincularla con nuestro proyecto. pin 1 BLUE: GPIO0.RGB Led Actividad Nro 3 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .Blinky Led Actividad Nro 2 . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 55 / 64 . pin 0 GREEN: GPIO2. 26 Ojo con los jumpers del BaseBoard. Chequear que esten conectados.Fading Led Consigna Se deber´ crear una biblioteca estatica que permita manejar el Led a RGB que trae el BaseBoard. El mismo se controla mediante 3 pines de salida: RED: GPIO2. LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .Blinky Led Actividad Nro 2 . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 56 / 64 .Fading Led Consigna Las funciones que debera tener esta biblioteca son: Inicializar el hardware Apagar todos los leds Prender los leds independientemente para mostrar los colores primarios Opcional: Hacer funciones para generar colores a partir de los primarios.RGB Led Actividad Nro 3 . Fading Led Consigna #i n c l u d e ”RGBLed . blueLedOn ( ) . ledsOff (). greenLedOn ( ) . Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 57 / 64 . while (1) { redLedOn ( ) .Blinky Led Actividad Nro 2 . h” i n t main ( v o i d ) { La intenci´n es lograr una o biblioteca (o driver) totalmente separado de nuestro c´digo para luego o tener un main que sea similar al siguiente: } ledsInit ().RGB Led Actividad Nro 3 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . } return 0 . ledsOff (). Blinky Led Actividad Nro 2 .Fading Led Actividad Nro 3 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .RGB Led Actividad Nro 3 .Fading Led (PWM) Fading LED Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 58 / 64 . RGB Led Actividad Nro 3 .Fading Led Consigna El objetivo de esta actividad es hacer un programa que permita variar la intensidad de brillo de un Led. Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 59 / 64 . Para ello solamente podremos usar las funciones b´sicas C y las de entrada y salida a vistas en la actividad Nro 1.Blinky Led Actividad Nro 2 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . Se deber´ dise˜ar entonces un programa que permita variar el a n periodo de actividad de un pulso cuadrado (PWM) por software. LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .Fading Led (PWM) Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 60 / 64 .RGB Led Actividad Nro 3 .Blinky Led Actividad Nro 2 .Fading Led Actividad Nro 3 . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . compilaci´n.Fading Led Resumen Los temas que vimos hoy fueron: LPCxpresso y su toolchain: target. estructuras. o linkeo. Ejemplos b´sicos: manejos de I/O y estructuras repetitivas. a Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 61 / 64 . operadores de bits y mascaras.Blinky Led Actividad Nro 2 .RGB Led Actividad Nro 3 . BaseBoard. descarga y depuraci´n o Sistemas de control de versiones Repaso de C: punteros. IDE Proceso de desarrollo de software: edicion. Blinky Led Actividad Nro 2 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .RGB Led Actividad Nro 3 .Fading Led Resumen Pr´cticamos sobre la herramienta LPCXPresso: a Descargar un repositorio Escribir un programa nuevo Compilarlo y descargarlo Debuggear paso por paso nuestra aplicaci´n o Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 62 / 64 . Fading Led Resumen ¿Dudas? ¿Consultas? Cualquier comentario o consulta lo pueden hacer a la lista del grupo: [email protected] Led Actividad Nro 3 .Blinky Led Actividad Nro 2 .com Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 63 / 64 .LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 . LPCXpresso Repaso de Lenguaje C Repositorio de c´digo o Actividades Actividad Nro 1 .RGB Led Actividad Nro 3 .Blinky Led Actividad Nro 2 .Fading Led Resumen Muchas gracias Alan Kharsansky Introducci´n a LPCXpresso y repaso del lenguaje C o 64 / 64 .
Copyright © 2024 DOKUMEN.SITE Inc.