atmega32 espaÑol

Upload: jmsaak

Post on 14-Jul-2015

212 views

Category:

Documents


9 download

TRANSCRIPT

__________________________________________________________________________ITSP

Arquitectura de los Microcontroladores AVR ATmega32.2.1 NUCLEO DEL CPULa principal funcin del ncleo del CPU es asegurar la correcta ejecucin de un programa. El CPU debe ser capaz de acceder a la memoria, ejecutar clculos, controlar los perifricos y manejar las interrupciones. La figura 2.1 muestra el diagrama a bloques de un ncleo CPU.

Figura 2.1. REGISTROS Es un espacio especial de almacenamiento de 8 bits, el cual luce como:BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Note que la numeracin de estos bits: el bit menos significativo inicia con cero (20 =1). Un registro puede almacenar nmeros desde 0 a 255 (nmeros positivos), o nmeros

Documento traducido de la hoja de datos del ATmega32

1

__________________________________________________________________________ITSP

desde -128 a 127 (nmeros con signo y magnitud), o valores que representan caracteres en el cdigo ASCII. Las caractersticas especiales de los registros, comparados con otros sitios de almacenamiento, es que: Ellos se usan directamente en los comandos en ensamblador. Las operaciones de su contenido requieren solamente comandos de una palabra. Ellos estn ligados directamente a la Unidad Central de Procesamiento. Ellos son la fuente o destino de los argumentos en las operaciones. Existen 32 registros en un AVR. Ellos se nombran como R0 a R31, pero puedes renombrarlos usando las directivas del ensamblador. Los AVR utilizan la Arquitectura Harvard, con el bus de datos y el bus de memorias separados. Mientras una instruccin se ejecuta, la prxima instruccin esta lista para ser ejecutada en la memoria de programa. Las instrucciones se ejecutan en cada ciclo de reloj. La memoria de programa esta en la memoria Flash. Al ejecutarse una operacin en la ALU, los dos operandos estn a la salida del archivo de registros y el resultado se almacena al fondo del archivo de registros en un solo ciclo de reloj. Seis de los 32 registros se pueden usar como registros apuntadores de direccionamiento indirecto a 16 bits para datos almacenados en memoria, siendo los registros de 16 bits X, Y y Z. Despus de realizar una operacin aritmtica el Registro de Estado actualiza la informacin acerca del resultado de la operacin. Durante las interrupciones o llamados a subrutinas, la direccin del Contador de Programa se almacena en la pila. La pila se localiza en la SRAM. El usuario al inicio de un programa deber inicializar el SP en la rutina de reset. El espacio de memoria de I/O contiene 64 direcciones para las funciones perifricas del CPU como Registros de Control, SPI, y otras funciones de I/O. Las operaciones de la ALU se dividen en tres categoras, aritmticas, lgicas y operaciones a bits. REGISTRO DE ESTADO Este registro contiene informacin del resultado ms reciente de la operacin aritmtica. As, esta informacin puede ser til para alterar el flujo del programa y ejecutar operaciones condicionales. Puede ser manejado por software. La figura 2.2 muestra los bits que maneja.

Documento traducido de la hoja de datos del ATmega32

2

__________________________________________________________________________ITSP

Bit 7 I: Habilitacin de Interrupcin Global. Se pone a 1 para habilitar las interrupciones. Si el bit esta en 0 ninguna interrupcin se habilita. El bit I se limpia por hardware despus de que una interrupcin ha ocurrido, y es puesto a 1 por la instruccin RETI para habilitar las interrupciones subsecuentes. Bit 6 T: Copia de un Bit. Un bit de un registro puede ser copiado al registro T por la instruccin BST (Bit STore) y el bit T puede ser copiado a un bit de un registro por la instruccin BLD (Bit LoaD). Bit 5 H: Registro de Acarreo Intermedio. La bandera de acarreo intermedio se indica en cualquier operacin aritmtica. Se usa en operaciones en BCD. Bit 4 S: Bit de Signo. Bit 3 V: Bandera de Sobreflujo en Complemento a Dos. Bit 2 N: Bandera de Negativo. Indica cuando un resultado es negativos de una operacin aritmtica o lgica. Bit 1 Z: Bandera de Cero. Indica si el resultado es un cero de una operacin aritmtica o lgica. Bit 0 C: Bandera de Acarreo. Indica un acarreo de una operacin aritmtica o lgica. REGISTROS DE TRABAJO DE PROPOSITO GENERAL En la figura 2.3 se observa el archivo de registros, donde los 32 registros de propsito general de 8 bits se localizan al inicio de las direcciones de memoria de la SRAM (0000h a la 001Fh).

Documento traducido de la hoja de datos del ATmega32

3

__________________________________________________________________________ITSP

Figura 2.3. A partir de la direccin 001Ah a la 001Fh, comienzan los 3 registros de 16 bits (X, Y y Z), los cuales actan como apuntadores de direcciones para direccionamiento indirecto a espacio de datos.

Figura 2.4.

Documento traducido de la hoja de datos del ATmega32

4

__________________________________________________________________________ITSP

APUNTADOR DE PILA La Pila se usa principalmente para almacenar datos temporales, para almacenamiento local de variables y para almacenar direcciones de retorno despus de las interrupciones y los llamados a subrutina. El Registro de Apuntador de Pila siempre apunta al principio de la Pila. El Apuntador de la Pila apunta a los datos de la SRAM que funcionan como pila. El espacio de la pila la define el usuario y deber apuntar a una direccin arriba de la 0060h

TIEMPO DE EJECUCION DE UNA INSTRUCCION Ejecucin y almacenamiento en fila de una instruccin. Ejecucin en paralelo de la Arquitectura Harvard, se muestra en la figura 2.5.

Figura 2.5.

2.2 MEMORIA DE PROGRAMA Y DE DATOS DEL AVR ATmega32.La arquitectura AVR tiene dos espacios principales de memoria, la Memoria de Datos y la Memoria de Programa. As como tambin el Atmega32 posee la Memoria EEPROM para almacenar datos. El Atmega32 contiene 32K bytes de memoria Flash Reprogramable para almacenar el programa. Ya que todas las instrucciones de los AVR son de 16 o 32 bits de ancho, la Flash se organiza en 16K x 16. La memoria de Programa Flash se divide en dos secciones, la seccin de Booteo de Programa y la seccin de Aplicacin del Programa. El contador de programa (PC) es de 14 bits de ancho, as direcciona localidades en la memoria de programa de 16K, vase la figura 2.5.

Documento traducido de la hoja de datos del ATmega32

5

__________________________________________________________________________ITSP

Figura 2.6. Las 2144 (860h) localidades de Memoria de Datos direccionan el Archivo de Registros, la Memoria de I/O y los datos internos de la SRAM. Las primeras 96 (60h) localidades direccionan el Archivo de Registros y la Memoria de I/O, y las siguientes 2048 localidades direccionan los datos internos de la SRAM, vase la figura 2.7.

Figura 2.7. Documento traducido de la hoja de datos del ATmega326

__________________________________________________________________________ITSP

2.3 SISTEMA DE RELOJ.En la figura 2.8 se muestra el sistema de reloj y su distribucin para la arquitectura AVR. Puede que no todos los relojes estn activos al mismo tiempo. Para reducir el consumo de potencia, los relojes que no estn siendo usados se paran usando los diferentes modos de ahorro de energa.

Figura 2.8.

Reloj del CPU clkCPU. El reloj del CPU se dirige a las partes del sistema concernientes con la operacin del ncleo AVR. Tales mdulos sern el Archivo de Registros de Propsito General, el Registro de Estado y el Apuntador de Pila. Parando el reloj del CPU se inhibe el ncleo. Reloj de I/O clkI/O. El reloj de I/O se usa para la mayora de los mdulos de I/O, tales como los Timers/Contadores, SPI y el USART, as como tambin el Mdulo de Interrupciones Externas. Reloj de la Flash clkFLASH. El reloj de la Flash controla la operacin de la interfase Flash. Se activa simultneamente con el reloj del CPU.

Documento traducido de la hoja de datos del ATmega32

7

__________________________________________________________________________ITSP

Reloj del Timer Asncrono clkASY. El timer de reloj asncrono permite recibir directamente un cristal externo de 32 KHz. Reloj del ADC clkADC. El ADC es provisto con un reloj de dominio dedicado. Esto permite parar los relojes del CPU y de I/O para reducir el ruido generado por la circuitera digital. Esto proporciona ms precisin en la conversin del ADC. FUENTES DE RELOJ El dispositivo tiene las siguientes fuentes de reloj, seleccionables por los bits de Flash Fusibles. El reloj de la fuente seleccionado es la entrada al reloj generador del AVR y se dirige a los mdulos apropiados. Las fuentes de reloj son: Oscilador Externo RC, Reloj Externo, Cristal Oscilador, Oscilador de Cristal a Baja Frecuencia y el Oscilador Calibrado RC. El dispositivo es fabricado con un Oscilador Interno RC como fuente de reloj por default de 1 MHz.

2.4 ARCHIVO DE REGISTROS.La tabla 2.1 muestra el archivo de registros que utilizan el ATmega32, as como sus direcciones. Adems de la lista se proceder a dar una breve explicacin de los mismos, considerando que ms adelante se realizara un anlisis ms profundo conforme se vean los ejercicios de aplicacin. PUERTOS O REGISTROS DEL AVR ATMEGA32. Los puertos o registros especiales en el AVR son compuertas desde la Unidad Central de Procesamiento a los componentes de software y hardware tanto internos como externos. La comunicacin del CPU con estos componentes es para leer o escribir en ellos. Existen 64 puertos diferentes, los cuales tienen una direccin fija. No tienes que memorizar todas las direcciones, ya que en el archivo de definicin del ATmega32 vienen los alias. Por ejemplo, .EQU PORTB, 0x18.

Documento traducido de la hoja de datos del ATmega32

8

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32

9

__________________________________________________________________________ITSP

SREG. Registro de Estado. Este registro contiene la informacin del resultado ms reciente de una operacin aritmtica. SPH, SPL. Registro Apuntador de Pila. El Apuntador de la Pila apunta a los datos de la SRAM que funcionan como pila. Este apuntador del AVR se implementa en 2 registros de 8 bits como espacio de I/O. OCR0. REGISTRO DE COMPARACION DE SALIDA. Este registro contiene un valor de 8 bits que se compara continuamente con el valor del contador (TCNT0). Al ser iguales puede generar una interrupcin de salida por comparacin o generar una forma de onda de salida en el pin OC0. GICR. REGISTRO GENERAL DE CONTROL DE INTERRUPCIONES. Contiene los bits de habilitacin de las interrupciones externas INT0, INT1 e INT2. As como tambin los bits para mover el vector de interrupciones a principio de la memoria Flash o al inicio de la seccin de Boot. GIFR. REGISTRO GENERAL DE BANDERAS DE LAS INTERRUPCIONES. Contiene las banderas de las interrupciones externas INT0, INT1 e INT2 cuando estas estn activas. TIMSK. REGISTRO ENMASCARABLE DE INTERRUPCIN DEL TIMER/CONTADOR. Contiene los bits para habilitar los registros de comparacin y habilitar las interrupciones para cuando se cumpla la igualdad. TIFR. REGISTRO DE BANDERAS DE INTERRUPCIONES DEL TIMER/CONTADOR. Contiene los bits de las banderas cuando se cumpla la igualdad en la comparacin del Timer/Contador y el dato de OCR. As como tambin contiene los bits de bandera de Sobreflujo de los Timer/Contador. SPMCR. REGISTRO DE CONTROL PARA ALMACENAR EN LA MEMORIA DEL PROGRAMA. Este Registro contiene los bits necesarios para controlar las operaciones de Boot Loader. TWCR. REGISTRO DE CONTROL DE DOS LNEAS. Se usa para habilitar la Comunicacin a Dos Lneas (TWI), al iniciar un acceso aplicando la condicin de INICIO en el bus, generar un reconocimiento del receptor, generar la condicin de stop, y controlar el bus mientras los datos de escriben en l. As como tambin indica cuando existe una colisin de escritura si los datos se intentan escribir en TWDR y el registro no est disponible. MCUCR. REGISTRO DE CONTROL DE LA UNIDAD DEL MICROCONTROLADOR (MCU). Este registro contiene los bits de control para el manejo de la Energa. MCUCSR. REGISTRO DE CONTROL Y ESTADO DEL MCU. Este registro provee informacin acerca de cuales fueron las fuentes que causaron el reinicio del MCU.

Documento traducido de la hoja de datos del ATmega32

10

__________________________________________________________________________ITSP

TCCR0. REGISTRO DE CONTROL DEL TIMER/CONTADOR 0. TCNT0. REGISTRO DEL TIMER/CONTADOR 0. OSCCAL. REGISTRO DE CALIBRACION DEL OSCILADOR. Escribiendo en este byte de calibracin har una variacin en la frecuencia del oscilador. OSCDR. REGISTRO DE DEBUG DENTRO DEL SISTEMA. Este registro provee un canal de comunicacin desde un programa corriendo en el microcontrolador hacia el debugger. SFIOR. REGISTRO DE FUNCIN ESPECIAL DE I/O. Ajusta el Pre-escalador del Timer 0, 1 y 2. As como selecciona las fuentes para el auto-disparo. TCCR1A. REGISTRO DE CONTROL A PARA EL TIMER/CONTADOR 1. TCCR1B. REGISTRO DE CONTROL B PARA EL TIMER/CONTADOR 1. TCNT1H y TCNT1L. Las dos localidades del Timer/Contador I/O se combinan para TCNT1, dan acceso directo, ambas operaciones para leer y escribir, a la unidad de Timer/Contador de 16 bits. OCR1AH y OCR1AL; OCR1BH y OCR1BL. Los registros de Comparacin de Salida contienen un valor de 16 bits que continuamente se compara con el valor del contador TCNT1. Una igualdad genera una interrupcin de comparacin de salida, o genera una forma de onda de salida en el pin OC1x. ICR1H e ICR1L. REGISTRO DE CAPTURA DE ENTRADA 1. Este registro se actualiza con el valor del contador (TCNT1) cada vez que un evento ocurre en el pin ICP1 (o con el comparador anlogo de salida para el Timer/Contador 1). TCCR2. REGISTRO DE CONTROL PARA EL TIMER/CONTADOR 2. TCNT2. REGISTRO DEL TIMER/CONTADOR. Este registro da acceso directo, a ambas operaciones para leer y escribir a la unidad de 8 bits del contador. Escribiendo al registro TCNT2 remueve la comparacin en el siguiente ciclo de reloj. OCR2. REGISTRO DE COMPARACION DE SALIDA 2. Este registro contiene un valor de 8 bits que continuamente se compara con el valor del contador TCNT2. Una igualdad genera una interrupcin de comparacin de salida, o genera una forma de onda de salida en el pin OC2. ASSR. REGISTRO DE ESTADO ASNCRONO. WDTCR. REGISTRO DE CONTROL DEL TIMER WATCHDOG.

Documento traducido de la hoja de datos del ATmega32

11

__________________________________________________________________________ITSP

UBRRH. PARTE ALTA DEL REGISTRO DE BAUD RATE DE LA UNIDAD DE TRANSFERENCIA SERIAL UNIVERSAL SINCRONA Y ASINCRONA (USART). UCSRC. REGISTRO C DE CONTROL Y ESTADO DE LA UNIDAD DE TRANSFERENCIA SERIAL UNIVERSAL SINCRONA Y ASINCRONA (USART). EEARH y EEARL. REGISTRO DE DIRECCIN DE LA PARTE ALTA Y BAJA DE LA EEPROM. EEDR. REGISTRO DE DATOS DE LA EEPROM. EECR. REGISTRO DE CONTROL DE LA EEPROM. PORTA. REGISTRO DE DATOS DEL PUERTO A. DDRA. REGISTRO DE DIRECCIN DE DATOS DEL PUERTO A. PINA. DIRECCIONES DE LOS PINS DE ENTRADA DEL PUERTO A. PORTB. REGISTRO DE DATOS DEL PUERTO B. DDRB. REGISTRO DE DIRECCIN DE DATOS DEL PUERTO B. PINB. DIRECCIONES DE LOS PINS DE ENTRADA DEL PUERTO B. PORTC. REGISTRO DE DATOS DEL PUERTO C. DDRC. REGISTRO DE DIRECCIN DE DATOS DEL PUERTO C. PINC. DIRECCIONES DE LOS PINS DE ENTRADA DEL PUERTO C. PORTD. REGISTRO DE DATOS DEL PUERTO D. DDRD. REGISTRO DE DIRECCIN DE DATOS DEL PUERTO D. PIND. DIRECCIONES DE LOS PINS DE ENTRADA DEL PUERTO D. SPDR. REGISTRO DE DATOS DE LA INTERFASE SERIAL PERIFERICA (SPI). En este registro se lee y se escribe y se usa para transferir datos entre el Archivo de Registros y el Registro de corrimiento SPI. Al escribir en este registro comienza la transmisin de datos. Al leer este registro causa que el Registro de corrimiento sea almacenado en el buffer. SPSR. REGISTRO DE ESTADO DE LA INTERFASE SERIAL PERIFERICA (SPI). SPCR. REGISTRO DE CONTROL DE LA INTERFASE SERIAL PERIFERICA (SPI)

Documento traducido de la hoja de datos del ATmega32

12

__________________________________________________________________________ITSP

UDR. REGISTRO DE DATOS DE I/O DEL USART. UCSRA. REGISTRO A DE CONTROL Y ESTADO DE LA UNIDAD DE TRANSFERENCIA SERIAL UNIVERSAL SINCRONA Y ASINCRONA (USART). UCSRB. REGISTRO B DE CONTROL Y ESTADO DE LA UNIDAD DE TRANSFERENCIA SERIAL UNIVERSAL SINCRONA Y ASINCRONA (USART). UBRRL. PARTE BAJA DEL REGISTRO DE BAUD RATE DEL USART. ACSR. REGISTRO DE CONTROL Y ESTADO DEL COMPARADOR ANLOGO. ADMUX. REGISTRO DE SELECCIN DEL ADC MULTIPLEXADO. ADCSRA. REGISTRO A DE CONTROL Y ESTADO DEL ADC. ADCH y ADCL. REGISTRO DE DATOS DE LA CONVERSION DEL ADC PARTE ALTA Y BAJA. TWDR. REGISTRO DE DATOS DE LA COMUNICACIN A DOS LNEAS. En modo de Transmisin, TWDR contiene el prximo byte a ser transmitido. En modo Recepcin, TWDR contiene el ltimo byte recibido. TWAR. REGISTRO DE DIRECCIN DE LA COMUNICACIN A DOS LNEAS. TWAR deber ser cargado con 7 bits de direcciones como esclavo, al cual TWI responder cuando sea programado como transmisor o receptor esclavo. TWSR. REGISTRO DE ESTADO DE LA COMUNICACIN A DOS LNEAS. TWBR. REGISTRO DEL BIT RATE DE LA COMUNICACIN A DOS LNEAS.

2.5 OPERACIN DE RESET.Durante el RESET, todos los Registros de I/O son puestos en sus valores iniciales, y el programa comienza su ejecucin desde el Vector Reset. La instruccin colocada en este Vector deber ser un Salto Absoluto (JMP) a la rutina del programa ubicado en la memoria Flash o al rea de boot. Las fuentes de RESET en el ATmega32 son 5: Power-on Reset. El MCU se reinicia cuando la fuente de voltaje esta por debajo del umbral VPOT. Reset Externo. El MCU se reinicia cuando un nivel bajo esta presente en el pin RESET por un tiempo de longitud mnimo a un pulso.

Documento traducido de la hoja de datos del ATmega32

13

__________________________________________________________________________ITSP

Reset Watchdog. El MCU se reinicia cuando el periodo del Timer de Watchdog expira y el Watchdog esta habilitado. Brown-out Reset. El MCU se reinicia cuando la fuente de voltaje VCC esta por debajo del umbral VBOT y el Detector de Brown-out esta habilitado. JTAG AVR Reset. El MCU se reinicia tan pronto como haya un uno lgico en el Registro Reset.

Figura 2.9.

Documento traducido de la hoja de datos del ATmega32

14

__________________________________________________________________________ITSP

2.6 INTERRUPCIONES.Esta seccin describe las especificaciones para el manejo de interrupciones que ejecuta el ATmega32. la tabla siguiente muestra el lugar de los vectores de Reset e Interrupcin. Si un programa no habilita una fuente de interrupcin, el Vector de Interrupciones no se usa, y el cdigo de un programa regular puede ser colocado en estas localidades de memoria.

Documento traducido de la hoja de datos del ATmega32

15

__________________________________________________________________________ITSP

Un programa para el Atmega32 con el vector completo de interrupciones se declara de la siguiente manera:

Documento traducido de la hoja de datos del ATmega32

16

__________________________________________________________________________ITSP

2.7 PUERTOS DE ENTRADA/SALIDA.Todos los puertos de los AVRs tienen la caracterstica de Leer-Modificar-Escribir, esto significa que la direccin de un pin de un puerto puede leerse o escribirse sin modificar al resto de los pines, usando las instrucciones SBI o CBI. Son tres localidades de memoria de I/O las que se asignan por cada puerto, una para el Registro de Datos PORTx, otra para el Registro de Direccin de Datos DDRx, y otra para los Pines del Puerto de Entrada PINx. La localidad de I/O de los Pines de Puerto de Entrada es de lectura solamente, mientras que el Registro de Datos y el Registro de Direccin de Datos son de Lectura/Escritura. En suma, para deshabilitar la funcin del Pull-Up para todos los pines en los puertos se deber colocar a uno el bit PUD en el registro SFIOR. Configuracin de un Pin Cada pin del puerto consiste de tres registros de bits: DDRx, PORTxn y PINxn. Los bits DDxn se accesan en la direccin de I/O DDRx, los bits de PORTx en la direccin de I/O PORTx, y los bits de PINx en la direccin de I/O PINx. El bit DDxn en el Registro DDRx selecciona la direccin de ese pin. Si a DDxn se le escribe un uno lgico, Pxn se configura como un pin de salida. Si a DDxn se le escribe un cero lgico, Pxn se configura como un pin de entrada. Si se le escribe a PORTxn un uno lgico cuando el pin esta configurado como un pin de entrada, el resistor pull-up se activa. Para desactivar al resistor de pull-up, se le escribir un cero lgico a PORTxn o se configura el pin como salida. Los pines de los puertos son de tres-estados cuando se tiene la condicin de reset.

Documento traducido de la hoja de datos del ATmega32

17

__________________________________________________________________________ITSP

Las configuraciones de los Puertos de los pines se muestran a continuacin:

En el siguiente ejemplo se muestra como configurar al Puerto B los pines 0 y 1 en alto, 2 y 3 en bajo y se definen los pines de 4 a 7 como entradas con pull-ups asignados a los pines 6 y 7. Una instruccin nop se incluye antes de leer el puerto de entrada justamente despus de configurarlo como entrada.

Documento traducido de la hoja de datos del ATmega32

18