Professional Documents
Culture Documents
Figura 2.1.
REGISTROS
Note que la numeración de estos bits: el bit menos significativo inicia con cero (20 =1).
Un registro puede almacenar números desde 0 a 255 (números positivos), o números
desde -128 a 127 (números con signo y magnitud), o valores que representan
caracteres en el código ASCII.
Los AVR utilizan la Arquitectura Harvard, con el bus de datos y el bus de memorias
separados. Mientras una instrucción se ejecuta, la próxima instrucción 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
operación en la ALU, los dos operandos están 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. Después de realizar una operación aritmética el Registro de Estado actualiza
la información acerca del resultado de la operación.
El espacio de memoria de I/O contiene 64 direcciones para las funciones periféricas del
CPU como Registros de Control, SPI, y otras funciones de I/O.
REGISTRO DE ESTADO
Este registro contiene información del resultado más reciente de la operación aritmética.
Así, esta información 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.
Bit 6 – T: Copia de un Bit. Un bit de un registro puede ser copiado al registro T por la
instrucción BST (Bit STore) y el bit T puede ser copiado a un bit de un registro por la
instrucción BLD (Bit LoaD).
Figura 2.3.
Figura 2.4.
APUNTADOR DE 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 dirección arriba de la
0060h
Figura 2.5.
Figura 2.6.
Figura 2.7.
Figura 2.8.
Reloj del CPU – clkCPU. El reloj del CPU se dirige a las partes del sistema
concernientes con la operación del núcleo AVR. Tales módulos serán el Archivo de
Registros de Propósito General, el Registro de Estado y el Apuntador de Pila. Parando
el reloj del CPU se inhibe el núcleo.
Reloj de I/O – clkI/O. El reloj de I/O se usa para la mayoría de los módulos de I/O, tales
como los Timers/Contadores, SPI y el USART, así como también el Módulo de
Interrupciones Externas.
Reloj del Timer Asíncrono – clkASY. El timer de reloj asíncrono 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
circuitería digital. Esto proporciona más precisión en la conversión 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 módulos 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.
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 comunicación del CPU con estos componentes es para leer o escribir en
ellos.
Existen 64 puertos diferentes, los cuales tienen una dirección fija. No tienes que
memorizar todas las direcciones, ya que en el archivo de definición del ATmega32
vienen los alias. Por ejemplo, .EQU PORTB, 0x18.
SREG. Registro de Estado. Este registro contiene la información del resultado más
reciente de una operación aritmética.
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.
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.
Reset Externo. El MCU se reinicia cuando un nivel bajo esta presente en el pin
RESET por un tiempo de longitud mínimo a un pulso.
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 lógico en el
Registro Reset.
Figura 2.9.
2.6 INTERRUPCIONES.
Esta sección describe las especificaciones para el manejo de interrupciones que ejecuta
el ATmega32. la tabla siguiente muestra el lugar de los vectores de Reset e
Interrupción. Si un programa no habilita una fuente de interrupción, el Vector de
Interrupciones no se usa, y el código de un programa regular puede ser colocado en
estas localidades de memoria.
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 Dirección 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
Dirección de Datos son de Lectura/Escritura. En suma, para deshabilitar la función del
Pull-Up para todos los pines en los puertos se deberá colocar a uno el bit PUD en el
registro SFIOR.
Configuración de un Pin
Cada pin del puerto consiste de tres registros de bits: DDRx, PORTxn y PINxn. Los bits
DDxn se accesan en la dirección de I/O DDRx, los bits de PORTx en la dirección de I/O
PORTx, y los bits de PINx en la dirección de I/O PINx.
El bit DDxn en el Registro DDRx selecciona la dirección de ese pin. Si a DDxn se le
escribe un uno lógico, Pxn se configura como un pin de salida. Si a DDxn se le escribe
un cero lógico, Pxn se configura como un pin de entrada.
Si se le escribe a PORTxn un uno lógico 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 lógico a PORTxn o se configura el pin como salida. Los pines de los
puertos son de tres-estados cuando se tiene la condición de reset.