Você está na página 1de 14

INTRODUCCIN

El aprendizaje de los microcontroladores en la carrera se ha basado en el conocimiento y estudio del 8051. Estos dispositivos son una herramienta importante para que el estudiante comience a conocer las posibilidades que ofrecen para desarrollar diferentes proyectos. El desarrollo tecnolgico del presente siglo permite tener acceso a nuevas tecnologas, como es el caso de los microcontroladores de tipo RISC, especialmente los de la casa Atmel, que permiten tener mltiples opciones de trabajo al tener incorporados dentro de los mismos diversos perifricos como conversores anlogo/digitales, sistemas de modulacin por ancho de pulso, etc. A esta familia pertenece el ATmega 32 con el que se desarrolla el proyecto de disear y construir un conjunto de prcticas docentes utilizando un entorno de desarrollo con el nombre EI_STEP cuyo elemento fundamental es precisamente este microcontrolador. El objetivo es lograr que el estudiante se familiarice y aprenda a trabajar con el mismo e implemente los distintos programas aplicables al entorno de desarrollo antes mencionado utilizando los programas PROTEUS y AVR STUDIO.

CAPTULO 1 EL MICROCONTROLADOR ATMEGA 32 1.1. Caractersticas de la familia de microcontroladores AVR

Los AVR son una familia de microcontroladores RISC del fabricante estadounidense Atmel. La arquitectura de los AVR fue concebida por dos estudiantes en el Norwegian Institute of Technology, y posteriormente refinada y desarrollada en Atmel Norway, la empresa subsidiaria de Atmel, fundada por los dos arquitectos del chip. Se pueden dividir en los siguientes grupos :

ATxmega: procesadores muy potentes con 16 a 384 kB de memoria flash programable, encapsulados de 44, 64 y 100 pines (A4, A3, A1), capacidad de DMA, eventos, criptografa y amplio conjunto de perifricos con DACs. ATmega: microcontroladores AVR grandes con 4 a 256 kB de memoria flash programable, encapsulados de 28 a 100 pines, conjunto de instrucciones extendido (multiplicacin y direccionamiento de programas mayores) y amplio conjunto de perifricos. ATtiny: pequeos microcontroladores AVR con 0,5 a 8 kB de memoria flash programable, encapsulados de 6 a 20 pines y un limitado set de perifricos. AT90USB: ATmega integrado con controlador USB AT90CAN: ATmega con controlador de bus CAN Tipos especiales: algunos modelos especiales, por ejemplo, para el control de los cargadores de bateras, pantallas LCD y los controles de los motores o la iluminacin. AT90S: tipos obsoletos, los AVR clsicos

El AVR es una CPU de arquitectura Harvard. Tiene 32 registros de 8 bits. Algunas instrucciones slo operan en un subconjunto de estos registros. La concatenacin de los 32 registros, los registros de entrada/salida y la memoria de datos conforman un espacio de direcciones unificado, al cual se accede a travs de operaciones de carga/almacenamiento. A diferencia de los microcontroladores PIC, el stack se ubica en este espacio de memoria unificado, y no est limitado a un tamao fijo. El AVR fue diseado desde un comienzo para la ejecucin eficiente de cdigo C compilado. Como este lenguaje utiliza profusamente punteros para el manejo de variables en memoria, los tres ltimos pares de registros internos del procesador son usados como punteros de 16 bit al espacio de memoria externa, bajo los nombres X, Y y Z. Esto es un compromiso que se hace en arquitecturas de ocho bit desde los tiempos de Intel 8008, ya que su tamao de palabra nativo de 8 bit (256 localidades accedidas) es pobre para direccionar. Por otro lado, hacer que todo el banco superior de 16 registros de 8 bit tenga un comportamiento alterno como un banco de 8 registros de 16 bit, complicara mucho el diseo, violando la premisa original de su simplicidad.

El set de instrucciones AVR est implementado fsicamente y disponible en el mercado en diferentes dispositivos, que comparten el mismo ncleo AVR pero tienen distintos perifricos y cantidades de RAM y ROM. La compatibilidad entre los distintos modelos es preservada en un grado razonable. Los microcontroladores AVR tienen una caera ('pipeline' en ingls) con dos etapas (cargar y ejecutar), que les permite ejecutar la mayora de las instrucciones en un ciclo de reloj, lo que los hace relativamente rpidos entre los microcontroladores de 8-bit.

1.2.

Caractersticas generales del microcontrolador ATmega32

El ATmega32 contiene una arquitectura tipo RISC, sus instrucciones se ejecutan en un solo ciclo de mquina, su estructura elimina la necesidad de usar componentes externos ya que internamente tiene: USART, ISP (in system programming), resistencias pull-up, modulacin por ancho de pulso (PWM), convertidor ADC, comparador analgico, etc. stas son solo algunas caractersticas que se encuentran en este dispositivo. Su programacin es posible realizarla en Lenguaje C, ensamblador o Basic. Todo su sistema est depositado en una sola pastilla. Algunas caractersticas son: Microcontrolador de 8 bits con encapsulado PDIP. Utiliza arquitectura RISC. 32 Kbyte de memoria flash programable. - ISP: Programable en sistema. - Capacidad read-while-write (lee mientras escribe). - 10000 ciclos de escritura/borrado. 1024 Bytes EEPROM. - 100000 ciclos de escritura/borrado. 2 Kbyte de memoria SRAM interna. 32 x 8 registros de trabajo de propsito general. 32 lneas de entrada/salida de propsito general. Tensin de alimentacin (Vcc): 4,5 5,5V. 3 temporizadores/contadores, uno de 16 bits y 2 de 8bits. 3 fuentes de interrupciones externas. Conversor anlogo/digital (ADC) de 10 bits. Comparador analgico integrado. 6 modos de ahorro de energa: - Idle (ocioso): detiene la CPU, mientras que permite que la memoria SRAM, los timers/contadores, el puerto ISP e interrupciones del sistema sigan funcionando. Power-down (baja energa): guarda el contenido del registro, pero congela el oscilador, inhabilitando el resto de funciones del chip hasta la siguiente interrupcin o hasta que se realice un RESET del hardware. - Power-save (modo economizador): el contador de tiempo asincrnico contina funcionando permitiendo al usuario mantener

una base de tiempo, mientras el resto de los dispositivos contina en reposo. Standby (modo de espera): el oscilador (cristal) sigue funcionando, mientras el resto de los dispositivos sigue en reposo. Esto permite el reinicio muy rpido con un bajo consumo de energa. Extended standby (modo de espera extendida): Similar al modo standby. ADC Noise reduction (reduccin del nivel de ruidos causados por el ADC): detiene la CPU y todos los mdulos de entrada y salida excepto el contador asincrnico y el ADC para reducir al mnimo el ruido conmutacin durante la conversin ADC.

Combinando una tecnologa RISC de 8 bits con una CPU con memoria flash, el ATmega 32 resulta un poderoso microcontrolador que proporciona una alta flexibilidad en los diseos a bajo costo, aportando una solucin muy efectiva para la mayora de las aplicaciones de control. El ATmega 32 est apoyado por un completo juego de programas y sistemas de desarrollo incluyendo: compiladores, ensambladores, simuladores, emuladores en circuito y kits de evaluacin.

1.3.

Arquitectura externa del microcontrolador ATmega32

1.4.

Memoria de programa

El ATmega32 cuenta con 32 kBytes de memoria flash programable. Como todas las instrucciones son de 16 o 32 bits, dicha memoria est organizada en 16 x 16 kB. sta memoria est dividida en 2 secciones, una destinada a las

1.5.

Puertos

Los puertos se conforman por las lneas del microcontrolador donde se pueden conectar los dispositivos de Entrada/Salida a controlar, por ejemplo LED, displays, transistores o mediante rels u opto acopladores, cargas de 110V/220V como medianos motores. El ATmega 32 tiene 4 puertos, llamados PORTA, PORTB, PORTC y PORTD. Son puertos de 8 bits as que se tienen 4 x 8 = 32 pines en total. Los pines de los puertos tienen nombres compuestos, como PA4 (ADC4), etc. Los nombres compuestos implican que tienen funciones multiplexadas. Por ejemplo, este pin PA4, adems de pin digital convencional puede funcionar como el canal 4 del conversor analgico digital ADC4.

Cuando los pines no son interface de algn perifrico, como el USART, el ADC, los temporizadores, etc., es decir, cuando son manual y directamente controlados por sus registros PORTx, PINx y DDRx se dice que actan como entradas y salidas de propsito general. En principio todos los pines son bidireccionales cuando actan como lneas de Entrada y Salida Generales. La direccin es configurable por software. Algunos pines pierden esa funcin cuando su control es asumido por algn mdulo relacionado, por ejemplo, una vez configurado el puerto serie, el USART asumir el control de los pines TXD y RXD. Capacidades de tensin y corriente Cuando actan como salidas, los pines pueden entregar tensiones de hasta Vcc. Cuando actan como entradas pueden manejar niveles de hasta 0.5V por encima de Vcc. El diseo de los pines incluye diodos internos de sujecin que les permiten soportar tensiones mucho mayores que Vcc o inferiores que GND, siempre que la corriente no sobrepase del orden de los micro Amperes. Cada pin de entrada/salida (E/S) puede soportar picos de corriente de hasta 40 mA, pero en estado estable cada pin de puerto puede suministrar o recibir hasta 20 mA de corriente cuando Vcc = 5V y hasta 10 mA cuando Vcc = 3V. Sin embargo, esta capacidad no puede estar presente en todos los pines al mismo tiempo. Los lmites de corriente total que soportan los puertos en el ATmega 32: La suma de las corrientes suministradas por los pines PB0 - PB7, PCO PC7, PD0 - PD7 y XTAL2 no deber exceder los 100 mA. La suma de las corrientes suministradas por los pines PA0 PA7 no deber exceder los 100 mA. La suma de las corrientes suministradas por todos los puertos no deber exceder los 200 mA. La suma de las corrientes recibidas por los pines PB0 - PB7, PCO - PC7, PD0 - PD7 y XTAL2 no deber exceder los 100 mA. La suma de las corrientes recibidas por los pines PA0 PA7 no deber exceder los 100 mA. La suma de las corrientes recibidas por todos los puertos no deber exceder los 200 mA.

Las Resistencias de Pull-up Una de las cualidades que distinguen a los microcontroladores de los microprocesadores es que encierran en un solo chip todos los elementos posibles de un sistema de control. Con este fin los AVR incorporan en todos sus puertos transistores a manera de fuente de corriente que en la prctica funcionan como resistencias de pull-up. Las mismas nos pueden ahorrar el uso resistencias de sujecin externas en los pines de los puertos configurados como entradas y se podran

equiparar con resistencias de entre 20 k y 50 k. A partir de dichos valores podemos calcular la corriente que puede fluir por ellas si estn activadas. Estas resistencias se pueden habilitar pin por pin independientemente escribiendo un 1 en su registro de salida PORT. Slo sern efectivas en los pines que actan como entradas; en los pines configurados como salidas quedan automticamente deshabilitadas. Existe un bit llamado PUD en el registro SFIOR cuya funcin es deshabilitar todas las resistencias pull-up de todos los puertos si su valor es 1. El bit PUD (Pull-Ups Disable) inicializa a 0 y un posible inters por setearlo puede ser eliminar la pequea corriente que puede fluir por las pull-up cuando los pines en cuestin se conectan a 0 lgico. La siguiente figura muestra la conexin de un pulsador al AVR aprovechando la pull-up de un pin de E/S. Fjate en que las pull-up no se pueden usar como resistencias para excitar dispositivos como LED, rels, etc.

Configuracin y Manejo de los Puertos Cuando los pines trabajan como entradas y salidas generales su control descansa principalmente en los Registros de E/S: SFIOR, DDRx, PORTx y PINx, donde x puede ser A, B, C o D. Del registro SFIOR solo interviene el pin PUD, cuya funcin es deshabilitar las pull-up de todos los pines cuando PUD = 1. Pero si PUD = 0, la habilitacin de las pull-up todava requiere de cierta configuracin por parte de los registros DDRx, PORTx y PINx. Registro SFIOR ADTS2 ADTS1 ADTS0 ACME

PUD

PSR2

PSR10

Cada puerto tiene sus correspondientes registros DDRx, PORTx y PINx, as por ejemplo el puerto A tiene sus registros DDRA, PORTA y PINA. Lo mismo es aplicable a los otros puertos. Registro PORTA PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1

PORTA0

PINA7

PINA6

PINA5

Registro PINA PINA4 PINA3

PINA2

PINA1

PINA0

DDA7

DDA6

DDA5

Registro DDRA DDA4 DDA3

DDA2

DDA1

DDA0

Registro PORTx: Es para escribir datos en los pines del puerto x que estn configurados como salida. se es su uso habitual. Sin embargo, escribir en los bits de PORTx cuyos pines estn configurados como entradas significa activar o desactivar las pull-ups de dichos pines, sta es la segunda funcin de PORTx. Leer el registro PORTx solo significa obtener el ltimo valor que se escribi en este registro. Registro PINx: Es para leer el estado de los pines del puerto x, sin importar si los pines estn configurados como entradas o como salidas. La funcin alternativa de este registro es para conmutar el estado de los pines configurados como salidas cuando se escribe un 1 en su bit correspondiente de PINx. Registro DDRx: es para configurar la direccin del puerto x, es decir, para establecer cules pines sern entradas y cules sern salidas. (Data Direction Register = Registro de Direccin de Datos). Despus de un RESET todos los puertos inician con sus pines configurados como entradas, pero se pueden reconfigurar en cualquier punto del programa. Si se escribe un 0 en un bit de DDRx, entonces el pin correspondiente en el puerto x ser de entrada y si se escribe un 1, el pin ser de salida. Por ejemplo, si escribimos el valor 11110000 en DDRB, entonces los cuatro pines de menor peso del puerto B sern entradas digitales y los cuatro pines superiores sern de salida. Si escribimos 11111111 en DDRA, todos los pines del puerto A sern de salida, y si escribimos 00000000 en DDRB todo el puerto B ser de entrada.

Tabla x Configuracin de puertos


Caso No. Bit en DDRx Bit en PORTx Bit en PUD Direccin de pin Pull-up Estado del pin

1 2 3 4 5

0 0 0 1 1

0 1 1 0 1

X 0 1 X X

Entrada Entrada Entrada Salida Salida

No S No No No

3er estado (alta impedancia Alto, debido al pull-up 3er estado (alta impedancia Bajo (0 lgico) Alto (1 lgico)

Caso 1: Si un pin est configurado como entrada y su bit respectivo en PORTx vale 0, el pin tampoco tendr pull-up y su estado ser de alta impedancia. Caso 2: Si un pin est configurado como entrada y su bit respectivo en PORTx vale 1, el pin tendr pull-up y su estado se leer como 1 lgico (por la pull-up), siempre que el bit PUD del registro SFIOR valga 0. Caso 3: Raramente se suele poner PUD a 1, pero si se hace, se deshabilitarn las pull-ups de todos los pines. Por tanto los pines de entrada sern siempre de alta impedancia. Casos 4 y 5: Son los ms simples. Si un pin est configurado como salida, de ningn modo tendr pull-up y su estado de salida ser 1 0 lgico, dependiendo del valor escrito en su respectivo bit de PORTx.

1.6.

Interrupciones externas

Una interrupcin es una llamada inesperada, urgente e inmediata a una funcin especial denominada Interrupt Service Routine (ISR). El mecanismo funciona as: sin importar lo que est haciendo en el programa principal o cualquier funcin relacionada con el mismo, cuando ocurra la interrupcin el microcontrolador har una pausa y pasar a ejecutar el cdigo de ISR. Tras terminarlo, regresar a la tarea que estaba realizando antes de la interrupcin, justo donde la haba suspendido. Aunque es posible provocar interrupciones desde el programa ejecutndolas como si fueran funciones ordinarias, las interrupciones son disparadas (llamadas) por eventos del hardware del microcontrolador. El evento puede ser algn cambio en cierto pin de entrada/salida (E/S), el desbordamiento de un Timer, la llegada de un dato serial, etc. Se puede deducir por tanto que las fuentes de interrupcin estn relacionadas con la cantidad de recursos del microcontrolador. Cada interrupcin est identificada por un vector de interrupcin, que no es otra cosa que una direccin particular en la memoria flash. Todos los Vectores estn ubicados en posiciones consecutivas de la memoria flash y forman la denominada tabla de vectores de interrupcin. El RESET no es una interrupcin pero su direccin 0x0000

tambin se conoce como vector de Reset. Por defecto, la tabla de vectores de interrupcin est ubicada en las primeras posiciones de la memoria, tal como se ve abajo. Solo cuando se habilita el uso de la Seccin de Boot Loader toda la tabla se desplazar al inicio de dicha seccin. Tabla x Fuentes de interrupcin del ATmega 32 No. vector Direccin Nombre vector interrupcin 1 $000 RESET 2 $002 INT 0 3 $004 INT1 4 $006 INT2 5 $008 TIMER2 COMP 6 $00A TIMER2 OVF 7 $00C TIMER1 CAPT 8 $00E TIMER1 COMPA 9 $010 TIMER1 COMPB 10 $012 TIMER1 OVF 11 $014 TIMER0 COMP 12 $016 TIMER0 OVF 13 $018 SPI, STC 14 $01A USART, RXC 15 $01C USART, UDRE 16 $01E USART, TXC 17 $020 ADC 18 $022 EE_RDY 19 $024 ANA_COMP 20 $026 TWI 21 $028 SPM_RDY
(*)

Descripcin Cinco fuentes de reset(*) Fuente de interrupcin externa 0 Fuente de interrupcin externa 1 Fuente de interrupcin externa 2 Comparacin timer/contador 2 Desbordamiento del timer/contador 2 Evento de captura con timer/contador 1 Comparacin A timer/contador 2 Comparacin B timer/contador 2 Desbordamiento temporizador/contador 1 Comparacin temporizador/contador 0 Desbordamiento temporizador/contador 0 Transferencia serie completa USART, recepcin completa (Rx) USART, registro de datos vaco USART, transferencia completa (Rx) ADC, conversin completa Memoria EEPROM preparada Comparador analgico Interfaz serial two-wire (2 cables) Almacenamiento de memoria programa preparado

Reset al encendido, Reset externo, Reset por Watchdog, Reset por Brown-out y Reset por JTAG AVR.

Fuentes de Reset Existen 5 posibilidades para que se produzca un Reset de las cules se explican a continuacin las 3 ms frecuentemente utilizadas: Reset al encendido: El microcontrolador se resetea cuando la tensin de la fuente de alimentacin est por debajo del nivel requerido para el funcionamiento. Reset externo: Cuando un nivel bajo es ingresado en el pin RESET durante ms de 2 ciclos de XTAL. Reset por Watchdog: Si el Watchdog est habilitado y su tiempo de temporizacin expira antes de producirse la instruccin WDR el microcontrolador se resetear.

Una vez producido el RESET todos los registros del microcontrolador son puestos a sus valores iniciales y el programa empieza su ejecucin en la direccin $000. En esta

direccin debe colocarse una instruccin de salto para ejecutar la rutina de comienzo de programa. Para entender cmo funciona el mecanismo de las interrupciones en bajo nivel, recordemos que el contador de programa es un registro que dirige cada una de las instrucciones que ejecuta el CPU. Pues bien, al dispararse la interrupcin el hardware guardar en la pila el valor actual del contador de programa y lo actualizar con el valor del vector de interrupcin respectivo, de modo que el CPU pasar a ejecutar el cdigo que se encuentre a partir de esa direccin. Al final del cdigo de la interrupcin debe haber una instruccin de retorno que restaure el contador de programa con el valor que se haba guardado en la pila. La instruccin es reti y la pone el compilador. Si se llegara a producir el evento excepcional en que se disparen dos o ms interrupciones al mismo tiempo, se ejecutarn las interrupciones en orden de prioridad. Tiene mayor prioridad la interrupcin que tenga la direccin ms baja del espacio de memoria de programa.

1.7. Temporizadores

1.8.

Comparador analgico

El comparador analgico compara los valores de entrada en el pin positivo AIN0 y el pin negativo AIN1. Cuando la tensin en el pin positivo AIN0 es mayor que la tensin en el pin negativo AIN1, la salida del comparador, ACO, est seteada (puesta a 1). La salida del comparador puede ser puesta como activador del temporizador/contador1. Adems el comparador puede activar una interrupcin exclusiva. El usuario puede seleccionar la activacin de la interrupcin por flanco de subida, cada o cambio lgico. En la figura se muestra un diagrama de bloque del comparador y su lgica.

Funcin especial I/O Registro SFIOR

Bit 3 ACME: Analog Comparator Multiplexer Enable Cuando este bit esta en 1 lgico y el ADC est apagado (ADEN en ADCSRA es cero), el multiplexor del ADC selecciona la entrada negativa del comparador. Cuando este bit tiene un cero lgico AIN1 es aplicado a la entrada negativa del comparador.

Registro de control y estado del comparador analgico ACSR (Analog Comparator Control and Status Register)

Bit 7 ACD: Analog Comparator Disable Cuando este bit est en 1 lgico la alimentacin del comparador esta desconectada. Este bit puede ser seteado en cualquier momento para desconectar el comparador, esto reduce el consumo de energa en los modos activo e Idle (Holgazan). Cuando se cambia el bit ACD la interrupcin del comparador debe estar desactivada borrando el bit ACIE en ACSR, sino puede ocurrir una interrupcin cuando el bit sea cambiado.

Bit 6 ACBG: Analog Comparator Bandgap Select Cuando este bit esta seteado un voltaje de referencia de bandgap fijo reemplaza la entrada positive del comprador. Cuando este bit esta en cero AIN0 es aplicado a la entrada positiva del comparador. See Internal Voltage Reference on page 41.

Bit 5 ACO: Analog Comparator Output La salida del comparador es sincronizada y luego conectada directamente a ACO. La sincronizacin introduce un retardo de 1-2 ciclos de reloj.

Bit 4 ACI: Analog Comparator Interrupt Flag Este bit es seteado por hardware cuando a la salida del comparador ocurre un evento definido en ACIS1 y ACIS0 que activa la interrupcin. La rutina de interrupcin del comparador es ejecutada si el bit ACIE est en 1 y el I-bit en el SREG est en 1. ACI es borrado por hardware cuando se ejecuta la interrupcin correspondiente. Alternativamente ACI es borrado escribiendo uno lgico en la bandera.

Bit 3 ACIE: Analog Comparator Interrupt Enable

Cuando este bit tiene un 1 lgico y el I-bit en el SREG est seteado la interrupcin del comparador esta activada. Cuando est en cero lgico la interrupcin esta deshabilitada. Nnxnam,s madncuando 1 lgico este bit habilita que la funcin captura de entrada en el temporizador/contador 1 sea activada por el comparador analgico. Bit 2 ACIC: Analog Comparator Input Capture Enable When written logic one, this bit enables the Input Capture function in Timer/Counter1 to be triggered by the Analog Comparator. The comparator output is in this case directly connected to the Input Capture front-end logic, making the comparator utilize the noise canceler and edge select features of the Timer/Counter1 Input Capture interrupt. When written logic zero, no connection between the Analog Comparator and the Input Capture function exists. To make the comparator trigger the Timer/Counter1 Input Capture interrupt, the TICIE1 bit in the Timer Interrupt Mask Register (TIMSK) must be set.
Bits 1, 0 ACIS1, ACIS0: Analog Comparator Interrupt Mode Select Estos bits determinan que evento activara la interrupcin del comparador. Las diferentes opciones se muestran en la tabla.

Para cambiar los bits ACIS1/ACIS0 la interrupcin del comparador debe estar deshabilitada borrando su bit de activacin en el registro ACSR, de otra manera puede ocurrir una interrupcin cuando los bits sean cambiados.

Multiplexor de entradas del comparador anlogo


Es posible seleccionar cualquiera de los pines ADC7..0 para remplazar la entrada negativa del comparador. El multiplexor del ADC es utilizado para seleccionar esta entrada, en consecuencia el ADC debe estar apagado para utilizar esta caracterstica. Si el bit de activacin del multiplexor del comparador (ACME en SFIOR) esta seteado y el ADC est apagado (ADEN en ADCSRA es cero), MUX2..0 seleccionan el pin de entrada para remplazar la entrada negativa del comparador como se muestra en la tabla. Si ACME esta borrado o ADEN esta seteado, AIN1 es aplicado a la entrada negativa del comparador.

1.9. Conversor anlogo digital

Você também pode gostar