ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 LECTURA 1 ¿Qué es un Microcontrolador? Microcontroladores Un Microcontrolador es Circuito integrado o chip que incluye en su interior las tres unidades funcionales de un ordenador: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completo en un solo circuito integrado. Aunque sus prestaciones son limitadas, además de dicha integración, su característica principal es su alto nivel de especialización. Aunque los hay del tamaño de una moneda, lo normal es que sean incluso más pequeños, ya que, lógicamente, forman parte del dispositivo que controlan. Un microcontrolador típico posee en su interior un generador de reloj integrado, una pequeña cantidad de memoria RAM y ROM/EPROM/EEPROM. Para hacerlos funcionar todo lo que se necesita son unos pocos programas de control, alimentación (típicamente 3.3V o 5V) y un cristal de sincronización. Los microcontroladores disponen generalmente también de una gran variedad de dispositivos de entrada/salida, como convertidores de analógico a digital, temporizadores, UARTs y buses de interfaz serie especializados, como I2C y CAN. Los microcontroladores mas utilizados son los: AVR ARM MSP430 PIC A continuación se detallan las principales diferencias entre ellos. ARM Los microcontroladores ARM son dispositivos de altas prestaciones, con un core RISC de 16/32bits. El mercado de los ARM es uno de los que ha crecido mas rápido en cuanto a microcontroladores se refiere. Los precios de los ARM son similares a los dispositivos de 8 bit, sin embargo proveen mucho mas poder y periféricos que cualquier dispositivo de 8 bit. Se encuentran disponibles de 1 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 distintos proveedores como: Texas Instruments, Atmel, Phillips, OKI, ST, Cirrus Logic, Analog Devices y otros. Muchos expertos en el tema dicen que dentro de 5 años los ARM reemplazaran la industria ocupada por la arquitectura 8051 en la mayoría de las aplicaciones. Olimex intenta proveer herramientas de desarrollo de bajo costo utilizando ARM de la mayor cantidad de proveedores posible. Este año cubriremos 7 proveedores y tenemos mas de 40 diferentes prototipos que incorporan dispositivos ARM7 y ARM9. Lo positivo Muy rápidos: la mayoría de los ARM7 corren a 60 Mhz y los ARM9 a 150Mhz+ siendo mas poderosos que los antiguos procesadores Intel 386 Bajo Consumo: Los ARM7 necesitan aproximadamente 0.5-1mA por Mhz Gran rango de perifericos: ADC,DAC,USB,SPI, UART, I2C, CAN, Ethernet, SDRAM Memoria Flash Interna: 32-512KB Memoria Ram Interna: 4-64KB Lo Negativo Complejo de utilizar para principiantes, definitivamente no es un microcontrolador con el que se puedan dar los primeros pasos para aprender sobre microcontroladores. MSP430 El microcontrolador MSP430 es de ultra bajo consumo, con un core de 16-Bit RISC. Pueden correr hasta 8 Mhz y tiene un consumo de tan solo 250uA por MIPS, lo cual lo hace perfecto para dispositivos portátiles. Lo Positivo Muy bajo consumo: 250uA por MIPS Un producto muy desarrollado con una arquitectura limpia, permite portar código a otro miembro de la familia MSP430 casi sin necesidad de retoque. Disponible en bajas cantidades a través de los distribuidores de Texas Instruments Muchas aplicaciones desarrolladas y códigos de ejemplo. 2 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 Muy buen rango de periféricos: ADC y DAC de precisión, Comparadores, OAMPs, LCD Drivers, SPI, UART, DMA. Lo negativo Posee una arquitectura Von Neuman, las instrucciones se toman de 1 a 4 bytes y utilizan de 1 a 6 ciclos de reloj. PIC Los microcontroladores PIC son unos de los mas populares de 8-bit. Microchip tiene cientos de diferentes microcontroladores desde los pequeños en encapsulados SOT23 hasta los 84-PLCC. Ellos pueden correr hasta 40Mhz y ejecutar instrucciones cada 4 ciclos de reloj. Lo Positivo Son muy baratos, los dispositivos como el PIC10Fxx llegan a costar $0.40 cuando se compran en volúmenes. Software de desarrollo en assembler gratuito (MPLAB) Se encuentra una gran gama de dispositivos con diferentes tamaños de memorias y cantidad de periféricos. Los puertos GPIO pueden entregar hasta 20mA lo que permite manejar LED`s y otros dispositivos directamente. Hay disponibles para rangos de temperaturas extendidos de -40 a +125ºC Lo Negativo Escribir un programa en assembler es un arte que no muchos dominan y puede extender el código a cientos de líneas. Algunos de los nuevos dispositivos tienen bugs de hardware y no son tan estables como los viejos OTP No hay compatibilidad entre los diferentes PIC's y hay que reescribir el código cada vez que se quiera cambiar de un PIC a otro. Tomado de http://www.psoc-chile.es.tl/%BFMicrocontrolador-f-.htm LECTURA 2 3 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 Herramientas de desarrollo Las herramientas de desarrollo están formadas por un conjunto de programas e interfaces que permiten realizar los proyectos de la forma más eficiente posible. Las principales herramientas de ayuda al desarrollo de sistemas basados en microcontroladores se describen a continuación Ensamblador. La programación en lenguaje ensamblador puede resultar un tanto ardua para el principiante, pero permite desarrollar programas muy eficientes, ya que otorga al programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el programa ensamblador de forma gratuita y en cualquier caso siempre se puede encontrar una versión gratuita para los microcontroladores más populares. Compilador. La programación en un lenguaje de alto nivel (como C o Basic) permite disminuir el tiempo de desarrollo de un producto y si además está familiarizado con C o Basic es una buena opción. No obstante, cuando el compilador convierta el código del programa a un lenguaje ensamblado, cada línea de código del programa en lenguaje de alto nivel habrá generado bastantes más líneas de código en lenguaje ensamblador, normalmente en una relación de uno a tres. Esto significa que para utilizar un lenguaje de alto nivel necesitaremos un microcontrolador con una capacidad de memoria relativamente grande. Si el programa que estamos desarrollando necesita utilizar números con decimales, o con notación científica o se utilizan operaciones complejas, como pueden ser las trigonométricas, es casi obligado utilizar un lenguaje de alto nivel. Pero si lo que se va a hacer es manipular bits en registros, entradas, salidas y cálculos sencillos, el lenguaje ensamblado es la mejor opción. Las versiones más potentes de compiladores suelen ser muy caras, aunque para los microcontroladores más populares pueden encontrarse versiones demo limitadas e incluso compiladores gratuitos. Como compilador gratuito puede utilizarse el compilador C GNU, que es un compilador C de código abierto tan bueno como los compiladores C comerciales pero que sin embargo tiene un proceso de instalación que no es sencillo. Además hay que comprobar que arquitecturas de microcontrolador soporta. Algunas de las cuales son MSP430 de TI, AVR de Atmel y HC11 de Motorola, (ver www.gnu.org y www.fsf.org). También puede conseguirse un compilador C GNU en binario ya construido. Por ejemplo para la arquitectura ARM puede conseguirse un 4 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 compilador C GNU binario para win32 desde www.gnuarm.com, que trabaja con línea de comandos e incluye un depurador de código. Para obtener un entorno de desarrollo (IDE) para windows que pueda utilizarse con el conjunto de herramientas GNU puede utilizarse la aplicación VIDE, que puede conseguirse en www.objectcentral.com/vide.htm. Simulador. Se trata de software que es capaz de ejecutar en un PC programas realizados para el microcontrolador. Los simuladores permiten tener un control absoluto sobre la ejecución de un programa, siendo ideales para la depuración de los mismos. Su gran inconveniente es que es difícil simular la entrada y salida de datos del microcontrolador. Tampoco cuentan con los posibles ruidos en las entradas, pero, al menos, permiten el paso físico de la implementación de un modo más seguro y menos costoso, puesto que ahorraremos en grabaciones de chips para la prueba in-situ. Placas de evaluación. Se trata de pequeños sistemas con un microcontrolador ya montado y que suelen conectarse a un PC desde el que se cargan los programas que se ejecutan en el microcontrolador. Las placas suelen incluir visualizadores LCD, teclados, LEDs, fácil acceso a los pines de E/S, etc. Pueden incluir un programa de control o sistema operativo que recibe el nombre de programa monitor. El programa monitor de algunas placas de evaluación, aparte de permitir cargar programas y datos en la memoria del microcontrolador, puede permitir en cualquier momento realizar ejecución paso a paso, monitorizar el estado del microcontrolador o modificar los valores almacenados los registros o en la memoria. Emuladores en circuito. Se trata de un instrumento que se coloca entre el PC anfitrión y el zócalo de la tarjeta de circuito impreso donde se alojará el microcontrolador definitivo. El programa es ejecutado desde el PC, pero para la placa de la aplicación es como si lo hiciese el mismo microcontrolador que luego irá en el zócalo. Presenta en pantalla toda la información tal y como luego sucederá cuando se coloque la cápsula. Programador. Es un dispositivo que conectado a un PC permite grabar en el microcontrolador el programa desarrollado. Algunos puede fabricarlos uno mismo (ver Programador PIC y EEPROM JDM y Programador JDMD) y resultan muy económicos. También existe software gratuito para programar no ya solo microcontroladores sino también otros dispositivos, como memorias (ver Programación de PIC con ic-prog). Actualmente se tiende a realizar la programación en la propia placa de utilización mediante ISP, In System 5 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 Programmation o ICSP, In Circuit Serial Programation. De esta manera se puede programar al microcontrolador una vez esté montado en la placa del circuito utilizando una conexión de dos, tres o cuatro terminales. Para utilizar esta técnica se utiliza un programador que suele ser muy sencillo y que en algunos casos puede construir uno mismo. Otra posibilidad es utilizar un "cargador de arranque", muy util en la etapa de desarrollo de un programa. Un cargador de arranque es un pequeño programa en el microcontrolador que está montado en la placa del circuito que se está desarrollando y que puede comunicarse con las herramientas de desarrollo (que se van a utilizar para escribir el código del programa de la aplicación) a través de un enlace serie, como puede ser RS232, USB, I2C o un bus CAN. El programa cargador de arranque debe interpretar comandos para leer, grabar y borrar la parte de memoria reservada para el programa de la aplicación. Cuando se desea verificar el programa que se está desarrollando se inicia la comunicación con el programa cargador de arranque, que carga el código de programa en la memoria de programa del microcontrolador. Después el programa cargador de arranque transfiere el control al programa cargado y entonces se puede ejecutar y verificar el programa cargado. Esta operación de carga y prueba puede realizarse tantas veces como sea necesario. Los requerimientos que tiene que cumplir el microcontrolador a utilizar son: Suficiente memoria de programa para alojar tanto el cargador de arranque como el programa en desarrollo. Que el microcontrolador permita que pueda modificarse la memoria de programa por si mismo. Un puerto serie para la comunicación. Por ejemplo, el microcontrolador LPC210x de la casa Philips incluye un cargador de arranque serie integrado que está ubicado en los 8 K primeros de su memoria Flash. Estándo el terminal P0.14 a masa y generando un reset el LPC210x ejecuta el programa cargador de arranque. Utilizando un programa para PC gratuito de la casa Philips y un cable serie conectado entre el PC y la UART del microcontrolador LPC210x (a través de un conversor TTL/RS232 como el c.i. MAX232) se puede realizar la programación del microcontrolador. 6 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 También resulta interesante el interface JTAG (que por ejemplo posee el microcontrolador LPC210x), que puede utilizarse para programar el dispositivo y para depurar un programa durante su ejecución en el microcontrolador. Para utilizar el interface JTAG se necesita un módulo interfaz de depuración JTAG que se conecta con entre el sistema de desarrollo del microcontrolador y el PC que lo aloja. En el mercado existen distintos módulos interfaces JTAG comerciales pero también se pueden encontrar otros en Internet. Paquetes IDE Actualmente existen paquetes de software denominados "Entornos de Desarrollo Integrado", IDE, que suelen funcionar bajo Windows y que incluyen editores de texto para el ensamblador o el compilador, permiten la simulación del programa y también pueden integrar el control de emuladores y programadores de dispositivos. Ejemplos de estos entornos de desarrollo son MPLAB de Microchip (ver MPLAB-IDE v6.60) que permite programar en lenguaje ensamblado y PCWH de la casa CCS que incluye un compilador C para los microcontroladores PIC de Microchip. MPLAB es gratuito y muy bueno, incluye un editor, un ensamblador y un simulador y también puede trabajar con compiladores y emuladores de otros fabricantes. http://perso.wanadoo.es/pictob/microcr.htm#herramientas_de_desarrollo> LECTURA 3 Recursos especiales Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el coste, el hardware y el software. Los principales recursos específicos que incorporan los microcontroladores son: Temporizadores o "Timers" 7 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores). Para la medida de tiempos se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de las patillas del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos. Perro guardián o "Watchdog" Cuando un ordenador personal se bloquea por un fallo del software u otra causa, se pulsa el botón del reset y se reinicializa el sistema. En la mayoría de los casos y a diferencia de un ordenador personal, un microcontrolador funciona sin el control de un supervisor y de forma continuada las 24 horas del día y 365 días al año. El Perro guardián consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset automáticamente en el sistema. Se debe diseñar el programa de trabajo que controla la tarea de forma que refresque o inicialice al Perro guardián antes de que provoque el reset. Si falla el programa o se bloquea, el programa no refrescará al Perro guardián y, al completar su temporización, provocará el reset del sistema. Protección ante fallo de alimentación o "Brownout" Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentación (VDD) es inferior a un voltaje mínimo ("brownout"). Mientras el voltaje de alimentación sea inferior al de brownout el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor. Esto es muy útil para evitar datos erróneos por transiciones y ruidos en la línea de alimentación. Estado de reposo ó de bajo consumo Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le ponga de nuevo en funcionamiento. Para ahorrar energía, (factor clave en los aparatos portátiles), los microcontroladores disponen de una instrucción especial 8 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 (SLEEP en los PIC), que les pasa al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj principal y se "congelan" sus circuitos asociados, quedando sumido en un profundo "sueño" el microcontrolador. Al activarse una interrupción ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. Para hacernos una idea, esta función es parecida a la opción de Suspender en el menú para apagar el equipo (en aquellos PCs con administración avanzada de energía). Conversor A/D (CAD) Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas desde las patillas del circuito integrado. Conversor D/A (CDA) Transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente señal analógica que saca al exterior por una de las patillas de la cápsula. Existen muchos dispositivos de salida que trabajan con señales analógicas. Comparador analógico Algunos modelos de microcontroladores disponen internamente de un Amplificador Operacional que actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de las patillas de la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. También hay modelos de microcontroladores con un módulo de tensión de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores. Modulador de anchura de impulsos o PWM Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a través de las patillas del encapsulado. Resulta util para sistemas de control de potencia, como por ejemplo motores. Puertos de comunicación 9 ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 208006 – Sistemas Embebidos Act 7: Reconocimiento Unidad 2 Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan: UART, adaptador de comunicación serie asíncrona. USART, adaptador de comunicación serie síncrona y asíncrona Puerto paralelo esclavo para poder conectarse con los buses de otros microprocesadores. USB (Universal Serial Bus), el conocido bus serie para los PC. Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips. Interface SPI, un puerto serie síncrono. CAN (Controller Area Network), para permitir la adaptación con redes de conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automóviles. En EE.UU. se usa el J185O. TCP/IP, ya existen microcontroladores con un adaptador de comunicación para este protocolo. Tanto el I2C en televisores, como el Bus CAN en automóviles, fueron diseñados para simplificar la circuitería que supone un bus paralelo de 8 líneas dentro de un televisor, así como para librar de la carga que supone una cantidad ingente de cables en un vehículo. http://perso.wanadoo.es/pictob/microcr.htm#recursos_especiales 10