You are on page 1of 13

Microcontroladores

Profesor Eduardo Gabriel Balderas

1 INTRODUCCIN
1.1 Introduccin
Los microcontroladores estn presentes en muchos de los productos electrnicos que empleamos en nuestra vida cotidiana. Existen en el mercado una gran variedad de modelos y una gran cantidad de aplicaciones posibles. Sin embargo, a pesar de su diversidad, hay coincidencia en los principios de funcionamiento y en las arquitecturas de muchos microcontroladores. En estos apuntes se aprovecha esa coincidencia presente en la diversidad para aplicar los fundamentos del diseo y la programacin de los microcontroladores. El objetivo de estos apuntes es ensear la arquitectura y la programacin de los microcontroladores en general, tomando como ejemplo los microcontroladores AVR de ATMEL. La documentacin que ofrecen los fabricantes es tan abundante que su mero acopio ocupara varios volmenes. En estos apuntes se han seleccionado los temas de forma que el estudiante adquiera un panorama general pero al mismo tiempo detallado en base al microcontrolador seleccionado

1.2 Microcontrolador y microprocesador

En este punto se estudian las caractersticas generales comunes a muchos microcontroladores. En primer lugar se define que se entiende por microcontrolador y se establece su diferencia con el microprocesador Un microcomputadora. Se compone de tres bloques fundamentales: la CPU (de sus inciales en ingles), la memoria, la entrada y salida. Los bloques se conectan entre s mediante grupos de lneas elctricas denominadas buses. Los buses pueden ser de direcciones (si transportan direcciones de memoria o de entrada y salida), de datos (si transportan datos o instrucciones) o de control (si transportan seales diversas). La CPU es el cerebro de la microcomputadora y acta bajo el control del programa almacenado en la memoria. La CPU se ocupa de traer las instrucciones del programa desde la memoria, interpretarlas y hacer que se ejecute. La CPU tambin incluye los circuitos para realizar las operaciones aritmticas y lgicas elementales con los datos binarios, en la denominada ALU unidad aritmtica lgica-. En una microcomputadora, la CPU no es otra cosa que el microprocesador, el circuito capaz de realizar las funciones antes mencionadas. Un microcontrolador es una microcomputadora en un circuito integrado. Histricamente, los microcontroladores aparecieron con posteridad a los microprocesadores y han tenido evoluciones independientes.

Los microprocesadores se han desarrollado fundamentalmente orientados al mercado de las computadoras personales y las estaciones de trabajo, donde se requiere una elevada potencia de clculo, el manejo de gran cantidad de memoria y una gran velocidad de procesamiento. Un parmetro importante en los microprocesadores es el tamao de sus registros internos (8, 16,32 64 bits), que determina la cantidad de bits que pueden procesar simultneamente. Los microcontroladores se han desarrollado para cubrir las ms diversas aplicaciones. Se emplean en la industria automotriz, en equipos de comunicaciones y de telefona, en instrumentos electrnicos, en equipos mdicos e industriales de todo tipo, en electrodomsticos, en juguetes, etc. Los microcontroladores estn concebidos para ser empleados en aplicaciones puntuales, es decir, aplicaciones donde los microcontroladores deben realizar un pequeo nmero de tareas, al menor costo posible. En estas aplicaciones el microcontrolador ejecuta un programa almacenado permanentemente en su memoria, el cual trabaja con algunos datos almacenados temporalmente e interacta con el exterior a travs de las lneas de entrada salida de que dispone. El microcontrolador es parte de la aplicacin: es un controlador incrustado o embebido en la aplicacin (embedded controller). En aplicaciones de cierta envergadura se utilizan varios microcontroladores, cada uno de los cuales se ocupa de un pequeo grupo de tareas Hay varias caractersticas que son deseables en un microcontrolador: Recursos de entrada salida Espacio optimizado El microcontrolador idneo para la aplicacin Seguridad en el funcionamiento del microcontrolador (watchdog) Bajo consumo Proteccin de los programas frente a copias

1.3 Arquitectura abierta y arquitectura cerrada

Una arquitectura abierta es aquella que puede ampliarse despus de la construccin de un sistema, generalmente aadiendo circuitos adicionales, por ejemplo aadiendo mdulos de memoria o conectando al sistema principal un circuito integrado con un nuevo microprocesador. En la arquitectura abierta, las especificaciones del sistema se hacen pblicas, lo que permite que otras empresas puedan fabricar los productos de expansin. Una arquitectura cerrada es aquella que es lo opuesto a una abierta, es decir suelen utilizarse en computadoras o equipos especializados que no requieren modificaciones o ampliaciones de ningn tipo. 6

1.4 Arquitecturas RISC y CISC


CISC (Complex Instruction Set Computer) y RISC (Reduced Instruction Set Computer) son dos modelos generales de computadoras, desde el punto de vista de la concepcin de su repertorio de instrucciones, lo cual repercute directamente sobre la arquitectura del CPU. Una computadora CISC tiene un repertorio de instrucciones complejo y una computadora RISC tiene un repertorio de instrucciones reducido. Al aparecer los microprocesadores y los microcontroladores, la tendencia inicial fue proveerlos de un repertorio de instrucciones lo ms potente posible, de modo que el modelo predominante fue el CISC. La complejidad de las instrucciones fue en aumento; en un mismo repertorio haba instrucciones que hacan operaciones simples, como por ejemplo mover un dato desde la memoria del acumulador, junto a otras que efectuaban operaciones tan complejas como mover una cadena de datos de un lugar a otro en la memoria. Las instrucciones tenan diferente longitud y los modos de direccionamiento se hicieron cada vez ms elaborados. Este aumento en la complejidad de las instrucciones se reflejo, en la complejidad del hardware de la CPU, en el que se haca necesario dedicar un gran espacio del circuito integrado a la decodificacin y ejecucin de instrucciones. En la arquitectura RISC, la CPU dispone de un repertorio corto de instrucciones sencillas. Cada instruccin puede realizar una operacin muy simple, como mover un dato entre la CPU y la memoria, pero a alta velocidad. Se puede lograr que todas las instrucciones tengan la misma longitud. Hay pocos modos de direccionamiento de los datos y son aplicables a todas las celdas de memoria de datos. La complejidad de la CPU disminuye, de modo que es fcil aumentar la frecuencia del oscilador de la CPU y con ello la velocidad de las instrucciones. Como tiene menos transistores, son ms baratas de disear y producir. Desde mediados del octavo decenio del siglo XX, est ha sido la tendencia predominante en el diseo de los microprocesadores y microcontroladores. Los microcontroladores AVR de ATMEL son un ejemplo de arquitectura RISC.

1.5 Familia de microcontroladores AVR de TMEL


Los microcontroladores que estudiaremos en estos apuntes son dispositivos construidos con tecnologa CMOS, para tener menor consumo de energa, de 8 bits basados en arquitectura RISC, capaces de ejecutar instrucciones en cada ciclo de reloj y una estructura bien definida de entradas/salidas (I/O) que limitan el uso de dispositivos externos. Poseen osciladores internos, timers, USART, SPI, PWM, ADC, watch-dog timer, comparadores analgicos entre otras cosas. Soportan programacin en ensamblador y en lenguaje C Programacin ISP (In system Programming). 7

Alto desempeo y bajo consumo de energa (<1 A en estado apagado, 1.1 mA. en activo). Cuenta con una gama de instrucciones sencillas que operan con 32 registros de propsito general.

1.6 Comparacin entre microcontroladores.

Tarea a realizar

Suma de 16 bits Multiplicacin de 16 bits Divisin de 16 bits Multiplicacin de 32 bits Resta de 32 bits Ordenamiento de burbuja Movimiento y comparacin de bloques de memoria Saltos condicionales Pushing & popping Frecuencia de prueba

Tiempos empleados para desarrollar la tarea en s MSP 430 ATmega323 PIC18F452 Rabbit TI Atmel Microchip 2000 27 40.4 71.6 63.6 72.4 60.8 193 80 480 538 940 608 182 191 344 286 57.2 75.6 76.4 172 992 834 3330 6380 6750 5800 12400 6360 131.2 314 8 MHz 143.6 258 8 MHz 169 412 20 MHz 242 426 22.1 MHz

Tabla 1.1 comparativo entre diferentes familias de microcontroladores

1.7 Arquitectura de los microcontroladores AVR de Atmel 1.7.1 ALU Unidad Aritmtica Lgica
La ALU opera en conexin directa con los 32 registros de propsito general del AVR. Est dividida en tres categoras: aritmtica, lgica y funciones de bits. Soportando inclusive operaciones de multiplicacin en algunos dispositivos.

1.7.2 Status Register (registro de estatus).


Contiene informacin acerca de las operaciones aritmticas realizadas ms recientemente. Esta informacin puede ser utilizada para alterar el flujo del programa o realizar operaciones condicionales.

Bit 7- I: habilitacin global de interrupciones. Bit 6 - T: almacenamiento de bit de copia. Bit 5 H: bandera de medio acarreo. Bit 4 S: bandera de signo, S=N V. Bit 3 V: bandera de sobre flujo de complemento a 2. Bit 2 N: bandera negativa. Bit 1 Z: bandera de cero. Bit 0 C: bandera de acarreo. 1.7.3 Registros de propsito general.

1.7.4 Stack Pointer (apuntador de pila).


El stack o pila es empleado para almacenar direcciones de regreso despus de interrupciones o llamadas a subrutinas; as como para almacenar datos temporales o variables locales. El stack pointer siempre apunta a la parte ms alta de la pila de datos de la SRAM. El espacio del stack debe ser definido por el usuario antes de la ejecucin de un regreso de interrupcin o subrutina.

1.7.5 Organizacin de la memoria.

Memoria flash

10

Memoria RAM

Diagrama de tiempos 1.7.6 Arquitecturas. En la memoria de una computadora, una microcomputadora o un microcontrolador, se almacenan las instrucciones y datos. Las instrucciones deben pasar secuencialmente a la CPU para su decodificacin y ejecucin, en tanto que algunos datos en memoria son ledos por la CPU y otros datos escritos en la memoria desde la CPU. Puede intuirse que la organizacin de la memoria y su comunicacin con la CPU son dos aspectos que influyen en las caractersticas de la computadora. 11

1.7.6.1 Arquitectura Von Newmann y Harvard.


Arquitectura ortogonal: cualquier instruccin puede utilizar cualquier elemento de la arquitectura como fuente o destino. Las arquitecturas Von Newmann y Harvard son modelos generales del hardware de las computadoras que presenta dos soluciones diferentes al problema de la conexin de la CPU con la memoria y la organizacin de la memoria como almacena de instrucciones y datos. La arquitectura Von Newmann toma el nombre del matemtico John Von Newmann que propuso la idea de una computadora con el programa almacenado (storage program computer). J. Von Newmann trabaj en el equipo de diseadores de la computadora ENIAC (Electronic Numerical Integrator and Calculator) diseada en la universidad de Pennsylvania durante la segunda guerra mundial. El termino arquitectura Harvard se debe al nombre del lugar donde Howard Aiken diseo las computadoras Mark I, II, III y IV. Estas computadoras fueron las primeras en utilizar memorias separadas para instrucciones y datos, una concepcin diferente a la computadora de programa almacenado. En la siguiente figura se muestran estos dos modelos de computadoras. La arquitectura Von Newmann utiliza una memoria nica para instrucciones y datos. Esto significa que con un mismo bus de direcciones se localizan (direccionan) instrucciones y datos y por un nico bus de datos transitan tanto instrucciones como datos. La misma seal de control que emite la CPU para leer un dato, sirve para leer una instruccin. No hay seales de control diferentes para datos e instrucciones. Debe quedar claro que aunque se use memoria ROM para almacenar el programa y RAM para los datos, para la CPU no hay tal distincin, sino que ROM y RAM forman un conjunto nico (una memoria de lectura y escritura) para la cual la CPU emite seales de control, de direccin y de datos. La arquitectura Harvard utiliza memorias separadas para las instrucciones y datos. En este caso la memoria de programa (que almacena instrucciones) tiene su bus de direcciones (de instrucciones), su propio bus de datos (ms bien el bus de instrucciones) y su bus de control. Por otra parte, la memoria de datos tiene sus propios buses de direcciones, datos y control, independientes de los buses de la memoria de programa. La memoria de programa es slo de lectura, mientras que en la de datos se puede leer y escribir. La arquitectura Von Newmann requiere menos lneas que la Harvard para conectar la CPU con la memoria, lo cual significa una conexin ms simple entre ambas. Pero con esta arquitectura es imposible manipular simultneamente datos e instrucciones, debido a la estructura de buses nicos, algo que si es posible en la arquitectura Harvard, que tiene buses separados. Esto confiere a la arquitectura Harvard la ventaja de una mayor velocidad de ejecucin de los programas. 12

Arquitectura segn el modelo de Von Newmann

Arquitectura segn el modelo Harvard

En las microcomputadoras, la CPU es un circuito integrado: el microprocesador. Es obvio que la arquitectura Von Newmann requiere menos terminales en el microprocesador que la arquitectura Harvard. Esta fue una razn decisiva para que desde los inicios las microcomputadoras basadas en un microprocesador se hayan diseado utilizando casi exclusivamente la arquitectura Von Newmann. En los microcontroladores la situacin es diferente. Al estar todos los componentes del sistema dentro del circuito integrado, desaparece la necesidad de minimizar el nmero de terminales de la CPU, de modo que en ellos ha predominado la arquitectura Harvard. Los microcontroladores AVR de Atmel son un ejemplo de sistemas con arquitectura Harvard

13

1.7.7 Caractersticas.
Alto desempeo Arquitectura RISC avanzada. 130 instrucciones. 32 registros de trabajo de propsito general. Operacin esttica. Hasta 16 MIPS a 16 MHz Multiplicador de dos ciclos en el chip. Alto desempeo en segmentos de memoria no voltil 8 K bytes de memoria flash. 512 bytes de EEPROM. 1 K byte de SRAM. Ciclos de borrado escritura 10,000 flash/ 100,000 EEPROM. Retencin de datos 20 aos a 85C / 100 aos a 25 C. Caractersticas de los perifricos. Dos temporizadores/ contadores de 8 bits. Un temporizador / contador de 16 bits. Un contador de tiempo real. Tres canales de PWM. Ocho canales de CAD de 10 bits. Seis canales de CAD de 10 bits en PDIP. USART serie programable. Interface serial de dos alambres TWI. Watch dog timer programable. Caractersticas especiales del microcontrolador. Reset en power on y deteccin Brown out. Oscilador interno. Fuentes de interrupcin interna y externa. Cinco modos de dormido Entrada salida. 23 lneas de i/o programables. Voltajes de operacin 2.7 a 5.5 volts atmega8L 4.7 a 5.5 volts atmega8 Velocidad de operacin. 0 a 8 MHz atmega8L. 0 a 16 MHz atmega8. Consumo de energa a 4 MHz 3 volts, 25 C. Activo 3 ma. Modo de espera 1.0 ma. Modo dormido 0.5 a. Tres diferentes presentaciones del AVR. 14

Tiny AVR. AVR. Mega AVR.

1.8 IDE de programacin AVR studio de ATMEL.


El ambiente integrado de desarrollo o IDE (Integrated Development Environment) AVR studio de ATMEL es el software que se emplea para programar y depurar aplicaciones en microcontroladores AVR bajo las plataformas de Windows. Posee interface para el manejo de proyectos, editor de cdigos fuente y emulador. 1.9 WinAVR. WinAVR es una suite de archivos ejecutables, de cdigo abierto, para el desarrollo de aplicaciones basadas en microcontroladores AVR de ATMEL, que corre en la plataforma de Windows. Incluye el compilador GNU GCC para C y C++. WinAVR, incluye todo lo necesario para el desarrollo en microcontroladores AVR, incluyendo el compilador (AVR GCC), depurador (AVR GDB) entre otros. WinAVR coree bajo la misma plataforma de desarrollo AVR studio de ATMEL.

1.10 Mdulos y libreras de WINAVR.

Algunos de los mdulos que maneja WINAVR son: o o o o o o o o Utilidades de soporte para Bootloader Computo de CRC. Bucles de retraso/espera Manejo de EEPROM Manejo de reloj watchdog Matemticas Interrupciones y seales Tipos estndar para enteros

Entre otros para trabajar con Winavr, se requiere la inclusin de las libreras que se necesite. Estas pueden ser: Io.h Signal.h 15

Interrupt.h

Las cuales se encuentran dentro de la subcarpeta avr. Para incluirlas en el proyecto a desarrollar, basta con incluir los archivos .h tradicional en C/C++. #include <avr/io.h> #include<avr/signal.h> #include<avr/interrupt.h>

16

You might also like