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
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
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
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.
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
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.
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.
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
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
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