Cintillo Institucional

wiki comunidad

Proyecto Hardware Libre Cenditel

Página Cenditel

wiki Cenditel

Plataforma de Desarrollo Colaborativo

Seminario AVR



logohl.png logohl.png logohl.png

Microcontroladores PIC y Microcontroladores AVR

Microcontroladores

Son circuitos integrados programables que contienen todos los componentes de un computador. Se emplean para controlar el funcionamiento de una tarea determinada y debido a su reducido tamaño suelen ser incorporados en el propio dispositivo al que gobiernan. Los principales componentes de un microcontrolador son:

El uso de microcontroladores usualmente nos permite obtener soluciones óptimas en proyectos electrónicos de diversa naturaleza, ofreciendo funcionalidades complejas y reduciendo el número de componentes necesarios para cumplir los requisitos planteados en el proyecto. Los microcontroladores Atmel AVR destacan por sobre otros fabricantes, gracias a que poseen las siguientes ventajas:

Microcontroladores AVR

Los AVR son plataformas RISC (Reduced Instruction Set Computer ó Computador de Juego de Instrucciones Reducido) con una arquitectura Harvard (lo que significa que posee memorias separadas para datos y para programas). Los microcontroladores; básicamente son computadoras completas en un circuito integrado. Esto significa que posee, combinados en un solo chip, elementos que se encuentran separados en una microcomputadora. Los elementos que se incluyen son:

Los microprocesadores AVR poseen las siguientes ventajas:

Arquitectura de Microcontroladores AVR

Los microcontroladores AVR son de tipo RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones de máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador. La función principal del núcleo de la CPU es asegurar una correcta ejecución del programa. La CPU, por lo tanto, debe acceder a memorias, realizar cálculos, controlar periféricos, y manejar interrupciones.

En general, los microcontroladores poseen dos formas de trabajo en cuanto a los datos y direcciones.

La arquitectura de Von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control) mientras que la arquitectura Harvard dispone de dos memorias independientes, una que contiene sólo instrucciones y otra sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias.

A fin de maximizar el desempeño y el paralelismo, el AVR usa una arquitectura Harvard, con memorias y buses separados para el programa y los datos. Las instrucciones que están en la memoria de programa se ejecutan con un solo nivel de transmisión por conductos. Mientras que se ejecuta una instrucción, se extrae la siguiente instrucción de la memoria de programa. Este concepto permite que las instrucciones se ejecuten en cada ciclo de reloj. La memoria de programa es la memoria flash reprogramable en el sistema.

El núcleo del AVR combina un conjunto rico de instrucciones con 32 registros de trabajo de propósito general. Los 32 registros están directamente conectados a la Unidad Aritmético-Lógica (ALU), permitiendo que 2 registros independientes se accedan en una sola instrucción ejecutada en un ciclo de reloj. La arquitectura resultante es más eficiente en lo que respecta a código, en tanto que logra un rendimiento hasta 10 veces superior que los microcontroladores convencionales CISC (Computadores de Juego de Instrucciones Complejo).

En una típica operación de la ALU, se toman 2 operandos del Archivo de Registros, se ejecuta la operación, y el resultado se almacena nuevamente en el Archivo de Registros en un ciclo de reloj. La ALU soporta operaciones aritméticas y lógicas entre registros o entre una constante y un registro. Las operaciones de un solo registro también se pueden ejecutar en la ALU.

Luego de una operación aritmética, el Registro de Estado se actualiza para reflejar la información sobre el resultado de la operación. El Programa tiene instrucciones de salto condicional e incondicional e instrucciones de llamada, capaces de direccionar en forma directa todo el espacio de direcciones. La mayoría de las instrucciones del AVR tienen un solo formato de palabra de 16 bits. Cada dirección de memoria de programa contiene una instrucción de 16 o de 32 bits.

CPU

El núcleo procesador incluye elementos que le permiten leer la memoria de programa, decodificarla y ejecutar las instrucciones allí contenidas. También puede recoger y almacenar datos desde y hacia la EEPROM, la SRAM y los 32 registros de propósito general. Los registros actúan como almacenamiento de manera extremadamente eficiente para valores de 8 bits (1 byte) y la ALU (Unidad Aritmético-Lógica) puede operar sobre estos 32 registros de forma directa.

El procesador AVR cuenta con una pila y su juego de instrucciones fue diseñado y optimizado para su uso con lenguajes de alto nivel (es muy fácil programar estos chips utilizando lenguaje C puro). Cabe destacar que ciertas implementaciones no proveen SRAM, por lo que la pila en realidad está basada en hardware (limitando la capacidad de la pila a 3).

Es interesante recalcar que la mayoría de las instrucciones sólo toman un ciclo de reloj para ser ejecutadas, y que éstos microcontroladores no dividen frecuencia internamente. También es notable la capacidad de este CPU para recoger y decodificar la siguiente instrucción a la vez que ejecuta la instrucción actual (es decir, realiza estos procesos en paralelo). Esto significa que los AVR alcanzan ejecuciones de práctimente 1 MIPS (Millones de Instrucciones por Segundo) por MHz; son muy rápidos y eficientes. Otra ventaja de alcanzar estas velocidades de ejecución en velocidades de reloj relativamente bajas (por ejemplo, un AVR funcionando a 4MHz ejecuta tantas instrucciones como un microcontrolador PIC funcionando a 16MHz) es un consumo de energía reducido y ruidos electromagnéticos más bajos de señales de alta frecuencia.

La memoria de programas es un bloque continuo de memoria flash, con capacidad de 16 bits. Puede ser fácilmente programada y reprogramada numerosas veces (usualmente, al menos 1000 veces). De hecho, utilizando ISP (programación en-sistema), se puede diseñar un sistema que permita la actualización del firmware del chip sin necesidad de retirarlo del circuito.

Todos los AVR poseen EEPROM, y la mayoría también disponen de SRAM. Ambas tienen capacidades de 8 bits. La EEPROM es programable en ejecución (para retener datos, inclusive sin energía en el sistema) ó durante la programación del chip (que puede ser útil en casos particulares). Almacenar en la EEPROM es un proceso más lento que guardar datos en la SRAM, pero, a diferencia de ésta última (la SRAM es memoria volátil), una vez que los datos han sido escritos, permanecerán disponibles indefinidamente, así se corte el flujo de enrgía en el circuito. Se dice que la EEPROM puede soportar hasta 100000 ciclos de borrado/escritura.

I/O y Periféricos

Los periféricos son los que diferencian a los distintos modelos de AVR. Todos los microcontroladores de la familia AVR poseen el mismo núcleo, y soportan prácticamente el mismo juego de instrucciones, lo que simplifica el desarrollo y programación en cada uno de ellos. Sin embargo, cada modelo tiene su propia mezcla de periféricos y extras.

Todos los AVR, desde los modelos tiny de 8 pines hasta los mega de 44 pines, tienen al menos un puerto de datos. Los puertos de datos permiten entradas (Input) y salidas (Output) de datos referentes a niveles lógicos (binario, HIGH ó LOW - Alto ó Bajo). Éstos puertos son bidireccionales, permitiendonos establecer pin por pin como una entrada o una salida. Usualmente, los pines que forman parte de un puerto pueden tener funciones dobles (on inclusive triples), y cómo serán utilizados depende de cómo configuremos el microcontrolador. Por ejemplo, en algunos modelos, los pines del puerto A también puede ser utilizados como canales separados para el periférico ADC (Convertidor Análogo - Digital), mientras que ciertos pines del puerto D son utilizados para la comunicación a través de periféricos UART.

Nombrando algunos periféricos disponibles, tenemos el ADC, el cual normalmente es multiplexado; esto significa que puede monitorear múltiples valores analógicos, a través de diferentes pines, uno a la vez. Los UART por su parte, son periféricos que permiten una comunicación serial asíncrona, directamente con otros chips o sistemas computacionales utilizando la interfaz RS-232. Otros periféricos internos incluyen timers (temporizadores) y counters (contadores), y el Watchdog (un temporizador que reinicia el chip luego de un retraso de 16ms a 2s), osciladores RC, entre otros.No todos los periféricos están disponibles en ciertos modelos AVR, por lo que es necesario consultar la hoja de datos relevante (disponible en la página web de Atmel) para cada modelo específico, donde se lista los periféricos que posee dicho modelo, el juego de instrucciones que dispone, entre otros detalles técnicos.

avr/micro (última edición 2011-04-15 16:12:57 efectuada por jpelayo)