Está en la página 1de 16

2.

visin de conjunto
El ATmega164P/324P/644P es un CMOS de baja potencia del microcontrolador de 8 bits basado en la arquitectura RISC AVR mejorada.
Mediante la ejecucin de instrucciones poderosas en un solo ciclo de reloj, el ATmega164P/324P/644P logra rendimientos se acercan a
1 MIPS por MHz que permite al diseador del sistema para optimizar el consumo de energa en comparacin con la velocidad de
procesamiento.

2.1 Diagrama de bloques


Figura 2-1. Diagrama de bloques

El ncleo AVR combina un rico conjunto de instrucciones con 32 registros de trabajo de propsito general. Todos los 32 registros estn
conectados directamente a la unidad lgica aritmtica (ALU), lo que permite dos registros independientes para acceder en una sola
instruccin ejecutada en un ciclo de reloj. La arquitectura resultante es ms cdigo eficiente mientras que alcanza rendimientos de
hasta diez veces ms rpido que los microcontroladores CISC convencionales.

El ATmega164P/324P/644P ofrece las siguientes caractersticas: 16K/32K/64K bytes del En-Sistema de flash programable con capacidad
de lectura-While-Write, 512B/1K/2K bytes EEPROM, 1K/2K/4K bytes de SRAM, 32 de propsito general E / S lneas, registros de trabajo
32 de propsito general, contador de tiempo real (RTC), tres temporizadores / contadores flexibles con comparar los modos y PWM, 2
USART, a 2 hilos de interfaz Serial orientado byte, una de 8 canales, ADC de 10 bits con la etapa de entrada diferencial opcional con
ganancia programable, temporizador de vigilancia programable con el oscilador interno, un puerto serie SPI, IEEE std. 1149.1 interfaz
prueba JTAG compatibles, tambin se utiliza para acceder al sistema de depuracin on-chip y la programacin y seis de software
seleccionables los modos de ahorro de energa. La pantalla de inicio se detiene la CPU al tiempo que permite la SRAM, temporizadores /
contadores, un puerto SPI, y el sistema de interrupcin para continuar funcionando. El modo Power-down guarda el contenido del
registro, pero congela el oscilador, desactivando todas las dems funciones de chips hasta la siguiente interrupcin o reinicio de
hardware. En el modo de ahorro de energa, el temporizador asncrono contina funcionando, lo que permite al usuario mantener una
base de temporizador mientras que el resto del dispositivo est durmiendo. El modo de reduccin de ruido ADC detiene la CPU y todos
los mdulos de E / S, excepto temporizador asncrono y ADC, para minimizar el ruido de conmutacin durante conversiones ADC. En el
modo de espera, el cristal / resonador oscilador est funcionando mientras que el resto del dispositivo est durmiendo. Esto permite
muy rpida puesta en marcha combinada con bajo consumo de energa. En modo de espera extendido, tanto el oscilador principal y el
temporizador asncrono siguen funcionando.

El dispositivo se ha fabricado con tecnologa de memoria no voltil de alta densidad de Atmel. El Onchip destello de la ISP permite que
la memoria de programa para ser reprogramado en-sistema a travs de una interfaz en serie SPI, por un programador de memoria no
voltil convencional, o por un programa de arranque en el chip que se ejecuta en el ncleo AVR. El programa de arranque puede usar
cualquier interfaz para descargar el programa de aplicacin en la memoria flash de la aplicacin. Software en la seccin Flash de
arranque continuar funcionando mientras se actualiza la seccin de aplicaciones Flash, que proporciona una verdadera operacin
Read-While-Write. Mediante la combinacin de una CPU RISC de 8 bits con el En-Sistema de Auto-flash programable en un chip
monoltico, Atmel ATmega164P/324P/644P es un potente microcontrolador que proporciona una solucin eficaz altamente flexible y
rentable para muchas aplicaciones de control embebido.
El ATmega164P/324P/644P AVR es compatible con una gama completa de herramientas de desarrollo de programas y sistemas que
incluyen: los compiladores de C, ensambladores macro, depurador de programas / simuladores, emuladores en circuito, y los kits de
evaluacin.

2.2 Comparacin entre ATMEGA164P, ATMEGA324P y


ATMEGA644P
Tabla 2-1. Diferencias entre ATMEGA164P y ATMEGA644P

2.3 Descripciones Pin

2.3.1 VCC
Tensin de alimentacin digital .

2.3.2 GND
Ground .

2.3.3 Puerto A ( PA7 : PA0 )

Puerto A sirve como entradas analgicas al convertidor de analgico a digital.


Puerto A tambin sirve como un puerto bidireccional de E / S de 8 bits con resistencias pull-up internas (seleccionado para cada bit ) .
Los buffers de salida del puerto A tienen caractersticas motrices simtricas con dos lavamanos y alta capacidad de la fuente. Como
entradas , los pines del puerto A que se extraen externamente baja se abastecern actual si se activan las resistencias pull-up . Los pines
del puerto A son tri - declar cuando una condicin de reset se activa , aunque el reloj no se est ejecutando .
Puerto A tambin sirve a las funciones de las diversas caractersticas especiales de la ATmega164P/324P/644P que figuran en la pgina
80 .

2.3.4 B Puerto ( PB7 : PB0 )


Puerto B es un bi -direccional de puerto de E / S de 8 bits con resistencias pull-up internas (seleccionado para cada bit ) . Los buffers de
salida de puerto B tienen caractersticas simtricas de unidad tanto con alta capacidad de sumidero y fuente . Como entradas , pines del
puerto B que se extraen externamente baja se abastecern actual si se activan las resistencias pull-up . Los pines del puerto B son tri -
declar cuando una condicin de reset se activa , aunque el reloj no se est ejecutando .
Puerto B tambin sirve a las funciones de las diversas caractersticas especiales de la ATmega164P/324P/644P que se enumeran en la
pgina 82.

2.3.5 Puerto C ( PC7 : PC0 )

El puerto C es un bi -direccional de puertos de E / S de 8 bits con resistencias pull-up internas (seleccionado para cada bit ) . Los buffers
de salida de puerto C tienen caractersticas motrices simtricas con dos lavamanos y alta capacidad de la fuente. Como entradas , pines
del puerto C que se extraen externamente baja se abastecern actual si se activan las resistencias pull-up . Los pines del puerto C son tri
- declar cuando una condicin de reset se activa , aunque el reloj no se est ejecutando .
Puerto C tambin sirve para las funciones de la interfaz JTAG, junto con las caractersticas especiales de la ATmega164P/324P/644P que
figuran en la pgina 85 .

2.3.6 Port D ( PD7 : PD0 )


Port D es un bi -direccional de puerto de E / S de 8 bits con resistencias pull-up internas (seleccionado para cada bit ) . Los buffers de
salida de puerto D tienen caractersticas motrices simtricas con dos lavamanos y alta capacidad de la fuente. Como entradas , pines del
puerto D que se extraen externamente baja se abastecern actual si se activan las resistencias pull-up . Los pines del puerto D son tri -
declar cuando una condicin de reset se activa , aunque el reloj no se est ejecutando .
Port D tambin sirve a las funciones de las diversas caractersticas especiales de la ATmega164P/324P/644P que figuran en la pgina 87
.

2.3.7 REAJUSTE
Entrada de reset. Un nivel bajo en este pin durante ms tiempo que la duracin mnima de impulso genera un reset, aunque el reloj no
se est ejecutando. La duracin mnima del impulso se da en "Sistema y Restablecer Caractersticas" en la pgina 331. Pulsos ms
cortos no estn garantizados para generar un reset.

2.3.8 XTAL1
De entrada al amplificador del oscilador inversora y la entrada al circuito de funcionamiento del reloj interno.

2.3.9 XTAL2
La salida del amplificador oscilador inversor.

2.3.10 AVCC
AVCC es el pin de la tensin de alimentacin para el puerto A y el convertidor de analgico a digital. Debe ser conectado externamente
a VCC, incluso si no se utiliza el ADC. Si se utiliza el ADC, debe estar conectado a VCC a travs de un filtro de paso bajo.

2.3.11 AREF
Este es el pin de referencia analgica para el convertidor de analgico a digital.

4. AVR CPU Core

4.1 Resumen
En esta seccin se analiza la arquitectura de ncleo AVR en general. La funcin principal del ncleo de la CPU es para asegurar la
ejecucin del programa correcto. Por consiguiente, la CPU debe ser capaz de acceder a memorias, realizar clculos, controlar
perifricos, y manejar las interrupciones.

Figura 4-1. Diagrama de bloques de la arquitectura AVR

Con el fin de maximizar el rendimiento y el paralelismo, el AVR usa una arquitectura de Harvard - con los recuerdos y los autobuses
separados para programas y datos. Las instrucciones en la memoria de programas se ejecutan con una canalizacin de un solo nivel.
Mientras se est ejecutando una instruccin, la instruccin siguiente es pre-descargue de la memoria del programa. Este concepto
permite que las instrucciones a ejecutar en cada ciclo de reloj. La memoria de programa es del En-Sistema de memoria flash
reprogramable.

El acceso rpido registro del archivo contiene 32 registros de trabajo propsito general de 8 bits con un solo tiempo de acceso a ciclo
de reloj. Esto permite que un solo ciclo de unidad lgica aritmtica (ALU) operacin. En una operacin tpica ALU, dos operandos son
emitidas desde el registro del archivo, se ejecuta la operacin, y el resultado se almacena en el Registro de archivos - en un solo ciclo de
reloj.

Seis de los 32 registros pueden ser utilizados como triples registro de direccin indirecta de 16 bits para espacio de direccionamiento de
datos - permitiendo a los clculos de direcciones eficientes. Uno de los estos indicadores de direccin tambin se puede utilizar como
un indicador de la direccin para buscar las tablas en la memoria de destello del programa. Estos registros de funciones aadidas son la
de 16 bits X-, Y-y Z-registro, que se describe ms adelante en esta seccin.
La ALU soporta operaciones aritmticas y lgicas entre registros o entre una constante y un registro. Operaciones simples de registro
tambin se pueden ejecutar en la ALU. Despus de una operacin aritmtica, el registro de estado se actualiza para reflejar la
informacin sobre el resultado de la operacin.

El flujo del programa es proporcionado por saltos y llamadas instrucciones condicionales e incondicionales, capaces de abordar
directamente todo el espacio de direcciones. La mayora de las instrucciones AVR tienen un nico formato de palabra de 16 bits. Cada
direccin de memoria de programa contiene una instruccin de 16 bits o 32 bits.

Espacio de memoria de destello del programa se divide en dos secciones, la seccin de programa de arranque y de la seccin de
programacin de aplicaciones. Ambas secciones se han dedicado bits de bloqueo de escritura y de lectura / proteccin contra escritura.
La instruccin SPM que escribe en la seccin de memoria de aplicaciones de Flash debe residir en la seccin de programa de arranque.

Durante las interrupciones y llamadas a subrutinas, la direccin de retorno Contador de Programa (PC) se almacena en la pila. La pila se
asigna de manera efectiva en la SRAM de datos generales, y en consecuencia el tamao de pila slo est limitado por el tamao total
de SRAM y el uso de la SRAM. Todos los programas del usuario deben inicializar el SP en el restablecimiento de rutina (antes de
ejecutar subrutinas o interrupciones). El puntero de pila (SP) es de lectura / escritura accesible en el espacio de E / S. La SRAM de datos
se puede acceder fcilmente a travs de los cinco modos de direccin diferentes soportados en la arquitectura AVR.

Los espacios de memoria en la arquitectura AVR son mapas de memoria lineales y regulares.

Un mdulo de interrupcin flexible tiene sus registros de control en el espacio de E / S con un Global Interrupt Enable bit adicional en el
registro de estado. Todas las interrupciones tienen una interrupcin separada del vector en la tabla vector de interrupcin. Las
interrupciones tienen prioridad en funcin de su posicin de vector de interrupcin. Cuanto menor sea la direccin de vector de
interrupcin, mayor es la prioridad.

El espacio de memoria de E / S contiene 64 direcciones para CPU funciones perifricas como Control de los Registros, SPI, y otras
funciones de E / S. La memoria de E / S se puede acceder directamente, o como las ubicaciones espaciales de Datos tras los del Registro
de archivos, 0x20 - 0x5F. Adems, el ATmega164P/324P/644P ha extendido el espacio de E / S de 0x60 - 0xFF en la SRAM donde / LDS /
LDD instrucciones se pueden utilizar slo el ST / STS / STD y LD.

4.2 ALU - Unidad aritmtica lgica

El alto rendimiento del AVR ALU opera en conexin directa con todos los registros de trabajo 32 de propsito general. Dentro de un
solo ciclo de reloj, se ejecutan las operaciones aritmticas entre registros de propsito general o entre un registro y una inmediata. Las
operaciones de ALU se dividen en tres categoras principales - aritmticos, lgicos y bit-funciones. Algunas implementaciones de la
arquitectura tambin proporcionan un multiplicador poderoso apoyo tanto firmado / multiplicacin sin signo y formato fraccionario.
Vea la seccin "conjunto de instrucciones" para una descripcin detallada.

4.3 Registro de estado

El Registro de estado contiene informacin sobre el resultado de la operacin aritmtica ejecutada ms recientemente. Esta
informacin puede ser usada para alterar el flujo del programa con el fin de realizar operaciones condicionales. Tenga en cuenta que el
registro de estado se actualiza despus de todas las operaciones de la ALU, como se especifica en el conjunto de instrucciones de
referencia. Esto, en muchos casos eliminar la necesidad de utilizar las comparativas instrucciones dedicadas, lo que resulta en ms
rpido y cdigo ms compacto.

El Registro de estado no se guarda automticamente al introducir una rutina de interrupcin y restaurado al regresar de una
interrupcin. Esta debe ser manejado por el software.

4.3.1 SREG - Registro de estado

El Registro de Estado AVR - SREG - se define como:

Bit 7 - I: Global Interrupt Enable


La interrupcin Global Enable bit debe establecerse para las interrupciones estn habilitadas. El individuo de habilitacin de
interrupcin de control se lleva a cabo a continuacin, en los registros de control separados. Si la interrupcin Global Enable Register se
borra, ninguna de las interrupciones estn habilitadas independiente de la interrupcin individuales permiten ajustes. El bit I se borra
por hardware despus se ha producido una interrupcin, y se establece por la instruccin RETI a habilitar las interrupciones
subsiguientes. El bit I tambin se puede ajustar y se aclar por la aplicacin de las instrucciones SEI y CLI, como se describe en la
referencia del conjunto de instrucciones.

Bit 6 - T: Bit de almacenamiento de copia


Las instrucciones de copia de bits BLD (carga de bits) y BST (tienda Bit) utilizan el T-bits como fuente o destino para el bit operado. Un
poco de un registro en el Registro del archivo se puede copiar en T por la instruccin BST, y un poco en T se puede copiar en un bit en
un registro en el Registro de archivos por la instruccin BLD.
Bit 5 - H: Media indicador de acarreo
The Half Carry Flag H indica a Half Carry en algunas operaciones aritmticas. La mitad Carry Es til en aritmtica BCD. Consulte la
seccin "Descripcin del conjunto de instrucciones" para obtener informacin detallada.

Bit 4 - S: Seal Bit, S = N V


El S-bit es siempre un exclusivo o entre el negativo de la bandera y del Complemento N Overflow Flag V. del Dos Consulte la seccin
"Descripcin del conjunto de instrucciones" para obtener informacin detallada.

Bit 3 - V: Complemento Overflow Flag V de complemento de dos de desbordamiento de la bandera del dos soportes de dos aritmtica
de complemento. Consulte la seccin "Descripcin del conjunto de instrucciones" para obtener informacin detallada.

Bit 2 - N: Negativo Flag


La negativa de la bandera N indica un resultado negativo en una operacin aritmtica o lgica. Consulte la seccin "Descripcin del
conjunto de instrucciones" para obtener informacin detallada.

Bit 1 - Z: Flag Zero


El cero de la bandera de Z indica un resultado cero en una operacin aritmtica o lgica. Consulte la seccin "Descripcin del conjunto
de instrucciones" para obtener informacin detallada.

Bit 0 - C: indicador de acarreo


El indicador de acarreo C indica un acarreo en una operacin aritmtica o lgica. Consulte la seccin "Descripcin del conjunto de
instrucciones" para obtener informacin detallada.

4.4 Propsito Registro General Archivo

El Registro del archivo est optimizado para el conjunto de instrucciones RISC AVR mejorada. Con el fin de lograr el rendimiento y la
flexibilidad requerida, las siguientes esquemas de entrada / salida estn soportados por el Registro del archivo:

Un operando de salida de 8 bits y una entrada de nmero 8-bit


Dos operandos de salida de 8 bits y una entrada nmero 8-bit
Dos operandos de salida de 8 bits y una entrada nmero 16 bits
Un operando de salida de 16 bits y una entrada de resultado de 16 bits

La figura 4-2 muestra la estructura de los 32 registros de propsito general de trabajo en la CPU.

Figura 4-2. Propsito AVR CPU general registros de trabajo

La mayor parte de las instrucciones de uso en el Registro de archivos tienen acceso directo a todos los registros, y la mayora de ellos
son las instrucciones de ciclo nico.

Como se muestra en la Figura 4-2, cada registro tambin se le asigna una direccin de memoria de datos, la cartografa directamente en
los primeros 32 lugares del espacio de datos de usuario. Aunque no est implementado fsicamente como lugares de SRAM, esta
organizacin de la memoria proporciona una gran flexibilidad en el acceso de los registros, ya que el X-, Y-y Z-registros de puntero
pueden configurarse para indexar cualquier registro en el archivo.

4.4.1 El registro X, Y-registro y registro Z

Los registros R26 .. R31 tienen algunas funciones aadidas a su uso para fines generales. Estos registros son punteros de direcciones de
16 bits para el direccionamiento indirecto del espacio de datos. Los tres direccin indirecta registra X, Y, y Z se definen como se describe
en la Figura 4-3.

Figura 4-3. Los-, X e Y, y Z-registros

En los diferentes modos de direccionamiento estos registros de direcciones tienen funciones como el desplazamiento fijo, incremento
automtico, y decremento automtico (consulte la referencia del conjunto de instrucciones para ms detalles).

4.5 Stack Pointer

La pila se utiliza principalmente para el almacenamiento de datos temporales, para almacenar las variables locales y para el
almacenamiento de direcciones de retorno despus de interrupciones y llamadas a subrutinas. Tenga en cuenta que la pila se
implementa como creciente de mayor a ubicaciones de memoria ms bajos. El Registro Stack Pointer siempre apunta a la parte
superior de la pila. Los puntos de Stack Pointer a la zona Pila SRAM de datos donde se encuentra la subrutina de interrupcin y Pilas. Un
comando PUSH pila disminuir el puntero de pila.
La Pila en la SRAM de datos debe ser definido por el programa antes de que se ejecuten todas las llamadas a subrutinas o
interrupciones estn habilitadas. Inicial Valor Stack Pointer es igual a la ltima direccin de la SRAM interna y el puntero de pila se debe
establecer en el punto ms arriba inicio de la SRAM, vea la Figura 5-2 en la pgina 20.

Consulte la Tabla 4-1 para obtener ms informacin Stack Pointer.

Tabla 4-1. Instrucciones Stack Pointer

Instruccin Stack Pointer Descripcin


PUSH decrementa en 1 Los datos se inserta en la pila
CALL Disminuye en 2 Direccin de retorno se inserta en la pila con una llamada de subrutina o
ICALL interrumpir
RCALL
POP incrementa en 1 Los datos se extrae de la pila
RET incrementa en 2 Direccin de retorno se extrae de la pila con el retorno de la subrutina o el
RETI retorno de interrupcin

El AVR Stack Pointer se implementa como dos registros de 8 bits en el espacio de E / S. El nmero de bits utilizados efectivamente
depende de la implementacin, consulte la Tabla 4-2 en la pgina 14. Tenga en cuenta que el espacio de datos en algunas
implementaciones de la arquitectura AVR es tan pequea que slo se necesita SPL. En este caso, el Registro SPH no estar presente.

4.5.1 SPH y SPL - Stack Pointer Alta y Baja Pila puntero

Note: 1. Initial values respectively for the ATmega164P/324P/644P.

4.5.2 RAMPZ - Extended Registrarse Z-puntos para ELPM / SPM

Para obtener instrucciones ELPM / SPM, el Z-puntero es una concatenacin de RAMPZ, ZH y ZL, como se muestra en la Figura 4-4.
Tenga en cuenta que LPM no se ve afectada por el ajuste RAMPZ.

Figura 4-4. El Z-puntero utilizado por ELPM y SPM.

El nmero real de bits depende de la implementacin. Los bits no utilizados en una aplicacin siempre se leern como cero. Para la
compatibilidad con futuros dispositivos, asegrese de escribir estos bits a cero.

4.6 Instruccin de ejecucin de temporizacin

En esta seccin se describen los conceptos generales de acceso de tiempo de ejecucin de instrucciones. La CPU AVR es impulsado por
el clkCPU reloj de la CPU, directamente generada a partir de la fuente de reloj seleccionada para el chip. No se utiliza ninguna divisin
interna del reloj.

Figura 4-5 en la pgina 15 muestra la instruccin paralela obtiene y ejecuciones de instruccin habilitada por la arquitectura de Harvard
y el concepto de acceso rpido Registro de archivos. Este es el concepto bsico de la canalizacin para obtener hasta 1 MIPS por MHz
con los correspondientes resultados nicos para las funciones por el costo, las funciones por los relojes, y las funciones de cada grupo
motor.

Figura 4-5. La Instruccin paralela Obtiene y ejecuciones de instrucciones

Figura 4-6 muestra el concepto de tiempo interno para el registro del archivo. En un solo ciclo de reloj se ejecuta una operacin ALU
utilizando dos operandos de registro, y el resultado se almacena en el registro de destino.

Figura 4-6. Single Cycle ALU Operacin

4.7 Reset y manejo de interrupciones

El AVR proporciona varias fuentes de interrupcin diferentes. Estas interrupciones y el restablecimiento separada Vector cada uno tiene
un vector programa separado en el espacio de memoria de programa. Todas las interrupciones se asignan individuo bits de habilitacin
que debe ser uno lgico escritas junto con la interrupcin Global Enable bit en el registro de estado para permitir la interrupcin.
Dependiendo del valor del contador de programa, las interrupciones pueden desactivarse automticamente cuando la cerradura de
arranque Bits BLB02 o BLB12 se programan. Esta caracterstica mejora la seguridad del software. Vea la seccin "Programacin de la
memoria" en la pgina 293 para obtener ms informacin

Las direcciones ms bajas del espacio de memoria del programa son por defecto definido como el restablecimiento y vectores de
interrupcin . La lista completa de vectores se muestra en " Interrupciones " en la pgina 61 . La lista tambin determina los niveles de
prioridad de las diferentes interrupciones. Cuanto menor sea la direccin de la mayor es el nivel de prioridad . REINICIAR tiene la ms
alta prioridad , y el prximo es INT0 - la interrupcin externa Solicitar 0 . La interrupcin de vectores se puede mover hasta el inicio de
la seccin Flash de arranque activando el bit IVSEL en el Registro de Control de MCU ( MCUCR ) . Consulte la seccin " Interrupciones "
en la pgina 61 para ms informacin. El restablecimiento del vector tambin se puede mover hasta el inicio de la seccin de flash de
inicio programando el BOOTRST fusible , consulte " Programacin de la memoria" en la pgina 293 .

Cuando se produce una interrupcin, la interrupcin Global Enable bit I se borra y todas las interrupciones estn deshabilitadas.
El software de usuario puede escribir uno lgico a la I- bits para habilitar las interrupciones anidadas. Todas las interrupciones
habilitadas entonces pueden interrumpir la rutina de interrupcin actual. El bit I se establece automticamente cuando un
Retorno de la instruccin de interrupcin - RETI - se ejecuta

Hay bsicamente dos tipos de interrupciones . El primer tipo es provocado por un evento que pone la bandera de interrupcin . Por
estas interrupciones, el contador de programa se gua vectorial a la actual vector de interrupcin con el fin de ejecutar la rutina de
manejo de interrupciones , y el hardware borra la bandera de interrupcin correspondiente . Banderas de interrupcin tambin se
pueden borrar escribiendo un uno lgico en la posicin ( s ) bit de bandera que se solucione. Si una condicin de interrupcin se
produce mientras la correspondiente habilitacin de interrupcin bit se borra , la bandera de interrupcin se establecer y se acord
hasta que la interrupcin est habilitada, o la bandera es borrado por software. Del mismo modo, si se producen una o ms condiciones
de interrupcin mientras que la interrupcin Global Enable bit se borra, la bandera de interrupcin correspondiente ( s ) se establecer
y se acord hasta que la interrupcin Global Enable bit est activado, y despus ser ejecutado por orden de prioridad.

El segundo tipo de interrupciones activar siempre que la condicin de interrupcin est presente . Estas interrupciones no
necesariamente tienen las banderas de interrupcin . Si la condicin de alarma desaparece antes de que se activa la alarma , no se ha
activado la alarma .

Cuando el AVR sale de una interrupcin, siempre regresar al programa principal y ejecutar una instruccin ms antes de que se sirve
cualquier interrupcin pendiente.

Tenga en cuenta que el registro de estado no se almacena de forma automtica al entrar en una rutina de interrupcin, ni restaura al
volver de una rutina de interrupcin. Esta debe ser manejado por el software.

Cuando se utiliza la instruccin CLI para deshabilitar las interrupciones, las interrupciones se desactivarn inmediatamente. Sin
interrupcin se ejecutar despus de la instruccin de la CLI, incluso si se produce simultneamente con la instruccin de la CLI. El
siguiente ejemplo muestra cmo esto puede ser usado para evitar interrupciones durante la secuencia de escritura de EEPROM
temporizada

Cdigo ensamblaje Ejemplo

en r16, SREG; almacenar valor SREG


cli; deshabilitar las interrupciones durante la secuencia temporizada
sbi EECR, EEMPE; empezar EEPROM
sbi EECR, EEPE
cabo SREG, r16, restaurar el valor SREG (I-bit)

C Code Example

char cSREG;
cSREG = SREG; / * Valor tienda SREG * /
/ * Deshabilitar las interrupciones durante la secuencia temporizada * /
__disable_interrupt ();
EECR | = (1 << EEMPE); / * EEPROM de comienzo de escritura * /
EECR | = (1 << EEPE);
SREG = cSREG; / * restaurar el valor SREG (I-bits) * /

When using the SEI instruction to enable interrupts, the instruction following SEI will be executed before any pending interrupts, as
shown in this example.

Cdigo ensamblaje Ejemplo


sei; set Global Interrupt Enable
dormir; colocar en reposo, a la espera de interrupcin
; Nota: se colocar en reposo antes de cualquier trmite
; Interrupcin (s)

Cdigo C Ejemplo
__enable_interrupt (); / * Establecer Global Interrupt Enable * /
__sleep (); / * introduce el sueo, a la espera de interrupcin * /
/ * Nota: se colocar en reposo antes de cualquier interrupcin pendiente (s) * /

4.7.1 Tiempo de respuesta de interrupcin


La respuesta de la ejecucin de interrupcin por todo el AVR habilitado
interrumpe es de cinco ciclos de reloj minimum.After cinco ciclos de reloj de la direccin de programa de vectores para la rutina actual
manejo de interrupcin se ejecuta. Durante dichos perodos ciclo de cinco horas, el contador de programa se inserta en la pila. El vector
es normalmente un salto a la rutina de interrupcin, y este salto tiene tres ciclos de reloj. Si se produce una interrupcin durante la
ejecucin de una instruccin de ciclos mltiples, se completa esta instruccin antes de que se sirve la interrupcin. Si se produce una
interrupcin cuando el MCU est en modo de suspensin, el tiempo de respuesta de ejecucin alarmas se prolonga en cinco ciclos de
reloj. Este aumento se suma a la hora de puesta en marcha desde el modo de suspensin seleccionado.

Un retorno de una rutina de manejo de interrupciones toma cinco ciclos de reloj. Durante estos cinco ciclos de reloj, el contador de
programa (tres bytes) se meti detrs de la pila, el puntero de pila se incrementa en tres, y el bit I en SREG est establecido.

5 . AVR recuerdos

5.1 Resumen
Esta seccin describe las diferentes memorias en el ATmega164P/324P/644P . La arquitectura AVR tiene dos espacios de memoria
principal , la memoria de datos y el espacio de memoria del programa . Adems, el ATmega164P/324P/644P cuenta con una memoria
EEPROM para el almacenamiento de datos. Los tres espacios de memoria son lineales y regular.

Memoria 5.2 Program Flash In-System reprogramable

El ATmega164P/324P/644P contiene 16K/32K/64K bytes en el chip del En-Sistema reprogramable flash de memoria para
almacenamiento de programas . Dado que todas las instrucciones AVR son de 16 bits o 32 bits de ancho , el flash se organiza de la
32/64 x 16 . Para la seguridad del software , el espacio de memoria de programa flash se divide en dos secciones, la seccin de
programa de arranque y de la seccin de programacin de aplicaciones .

La memoria flash tiene una autonoma de al menos 10.000 ciclos de escritura / borrado . El contador de programa
ATmega164P/324P/644P (PC ) es de 15/16 bits de ancho , respondiendo as a las 32/64K posiciones de memoria de programa. El
funcionamiento de la seccin de programa de arranque y los bits de bloqueo de arranque asociados para la proteccin del software se
describen en detalle en la "Programacin de la memoria" en la pgina 293 . "Programacin de la memoria" en la pgina 293 contiene
una descripcin detallada sobre la descarga de datos en serie Flash con los pines SPI o la interfaz JTAG.

Tablas de constantes pueden ser asignados dentro de todo el espacio de direcciones de memoria de programa (ver la LPM - memoria
del programa de carga de descripcin de instruccin .

Cronogramas para la extraccin de instruccin y ejecucin se presentan en "El tiempo de ejecucin de instrucciones "
en la pgina 14 .

Figura 5-1. Memoria del programa de mapas

5.3 SRAM memoria de datos

La figura 5-2 muestra cmo se organiza la memoria ATmega164P/324P/644P SRAM .

El ATmega164P/324P/644P es un microcontrolador complejo con unidades ms perifricos que se pueden apoyar en el 64 lugar
reservado en el cdigo de operacin para las instrucciones IN y OUT. Para el espacio de E / S extendida desde $ 060 - $ FF en SRAM,
slo el ST / STS / STD y LD / LDS / LDD instrucciones pueden ser utilizados.

Los primeros 4.352 posiciones de memoria de datos de direccin tanto en el Registro de archivos, la E / S de memoria ampliada de I / O
de la memoria , y la memoria SRAM de datos interna . Las primeras 32 posiciones de direccin en el archivo Registro, el prximo 64 de
ubicacin de la E / S de la memoria , a continuacin, 160 ubicaciones de memoria de E / S extendida y los prximos 4.096 ubicaciones
abordan la SRAM de datos interna .

Los cinco modos diferentes de direccionamiento para la cubierta de la memoria de datos : directo, indirecto con desplazamiento,
indirecto , indirecto con Pre -decremento , e indirecta con Post- incremento. En el archivo de registro , registros de R26 a R31
caracterstica las indirectas que traten los registros de puntero.

El direccionamiento directo llega a todo el espacio de datos .

La indirecta con el modo de desplazamiento alcanza 63 ubicaciones de direccin de la direccin de base propuesta por el Y o Z- registro

Al utilizar registrarse modos de direccionamiento indirecto con pre -decremento automtico y post-incremento , los registros de
direcciones X , Y y Z se decrementa o incrementa.
Los registros de trabajo 32 de propsito general, 64 E / S de registros, 160 I / O Extended registros ya los 1024/2048/4096 bytes de
SRAM de datos interna en el ATmega164P/324P/644P son accesibles a travs de todos estos modos de direccionamiento. El Registro de
archivos se describe en "Uso General Registro de archivos" en la pgina 12.

Figura 5-2. Memoria de datos de mapas para ATmega164P/324P/644P.

5.3.1 Memoria de datos Acceso tiempos


En esta seccin se describen los conceptos generales de acceso de tiempo de acceso a la memoria interna. El acceso a la SRAM interna
de datos se realiza en dos ciclos clkCPU como se describe en la Figura 5-3.

Figura 5-3. Ciclos en chip de SRAM de datos de acceso

5.4 EEPROM Memoria de datos

El ATmega164P/324P/644P contiene 512B/1K/2K bytes de memoria EEPROM de datos. Se organiza como un espacio de datos por
separado , en el cual bytes individuales pueden ser ledos y escritos . La EEPROM tiene una autonoma de al menos 100.000 ciclos de
escritura / borrado . El acceso entre la EEPROM y la CPU se describe a continuacin , especificando los Registros EEPROM de la
direccin, el registro de datos EEPROM , y el Registro de Control de EEPROM.

Para una descripcin detallada de la SPI, JTAG y datos en paralelo con la descarga a la EEPROM , consulte la pgina 308 , en la pgina
312 y la pgina 297 , respectivamente .

5.4.1 EEPROM de lectura / escritura de acceso

Los registros de EEPROM de acceso son accesibles en el espacio de E / S . Consulte " Registro Descripcin" en la pgina 23 para ms
detalles.

El tiempo de acceso de escritura para el EEPROM se da en la Tabla 5-2 en la pgina 25 . Una funcin de auto- sincronizacin , sin
embargo , permite que el software de usuario detectar cuando el siguiente byte se puede escribir . Si el cdigo de usuario contiene
instrucciones que escriben en la EEPROM , se deben tomar algunas precauciones. En las fuentes de alimentacin altamente filtrados ,
VCC es probable que suba o baje lentamente sobre power-up/down . Esto hace que el dispositivo durante un cierto perodo de tiempo
para funcionar a un voltaje menor que el especificado como mnimo para la frecuencia de reloj utilizada . Vea la seccin " 5.4.2 " en la
pgina 21 . para obtener ms informacin sobre cmo evitar problemas en estas situaciones.

Con el fin de evitar escrituras EEPROM no intencionales , un procedimiento de escritura especfica debe ser seguido .
Refirase a la descripcin del registro de control de EEPROM para ms detalles sobre esto.

Cuando se lee la memoria EEPROM , la CPU se detiene durante cuatro ciclos de reloj antes de que la siguiente instruccin es
ejecutado . Cuando se escribe en la EEPROM , la CPU se detiene para dos ciclos de reloj antes de la siguiente instruccin se ejecuta .

5.4.2 Prevencin de la Corrupcin EEPROM

Durante los perodos de baja VCC , los datos de la EEPROM pueden estar daados debido a la tensin de alimentacin es demasiado
baja para la CPU y la memoria EEPROM para funcionar correctamente. Estas cuestiones son las mismas que para los sistemas de nivel
de placa utilizando EEPROM, y las mismas soluciones de diseo deben ser aplicadas.

Un corrupcin de datos EEPROM puede ser causada por dos situaciones cuando el voltaje es demasiado bajo . En primer lugar, una
secuencia de escritura regular a la EEPROM requiere una tensin mnima para funcionar correctamente . En segundo lugar , la propia
CPU puede ejecutar instrucciones de forma incorrecta , si la tensin de alimentacin es demasiado baja.

Corrupcin de datos EEPROM puede evitarse fcilmente siguiendo esta recomendacin de diseo :

Mantenga el botn RESET AVR activo (bajo) durante los perodos de tensin de alimentacin insuficiente. Esto se puede hacer al
permitir que el detector de Brown Salida interna ( DBO ) . Si el nivel de deteccin de la DBO interna no coincide con el nivel de
deteccin necesario, restablecer un bajo VCC externa circuito de proteccin puede utilizarse . Si se produce un reset mientras que una
operacin de escritura est en curso , se completar la operacin de escritura a condicin de que la tensin de alimentacin es
suficiente

5.5 Memoria de E / S

La definicin de espacio de E / S del ATmega164P/324P/644P se muestra en " Resumen " en la pgina 479.

Todo ATmega164P/324P/644P E / S y perifricos se colocan en el espacio de E / S . Todas las E / S de lugares pueden ser accedidos por
el LD / LDS / LDD y las instrucciones ST / STS / STD , la transferencia de datos entre los registros de trabajo 32 de propsito general y el
espacio de E / S . E / S Los registros dentro del rango de direcciones 0x00 - 0x1F son directamente poco accesible siguiendo las
instrucciones de OSE y la ICC. En estos registros , el valor de los bits individuales se puede comprobar mediante el uso de las
instrucciones SBIS y SBIC . Consulte la seccin de conjunto de instrucciones para ms detalles. Cuando se utiliza la E / S especfico
comandos IN y OUT, las direcciones de E / S 0x00 - 0x3F debe ser utilizado . Al tratar de E / S se registra como espacio de datos
utilizando instrucciones LD y ST , 0x20 hay que aadir a estas direcciones. El ATmega164P/324P/644P es un microcontrolador complejo
con unidades ms perifricos que se pueden apoyar en el 64 lugar reservado en el cdigo de operacin para las instrucciones IN y OUT.
Para el espacio de E / S extendida desde 0x60 - 0xFF en la SRAM , / LDS / LDD instrucciones se pueden utilizar slo el ST / STS / STD y LD
.

Para la compatibilidad con dispositivos futuros , los bits reservados se deben escribir a cero si se accede . Direcciones de memoria de E /
S Reservados nunca deben ser escritos .

Algunos de los indicadores de estado se borran escribiendo un uno lgico para ellos. Tenga en cuenta que , a diferencia de la mayora
de los otros RAV , las instrucciones de la ICC y del SBI slo funcionarn en el bit especificado , y por lo tanto pueden ser utilizados en los
registros que contienen tales indicadores de estado . Las instrucciones de la ICC y del OSI trabajan con registros 0x00 a 0x1F solamente .

Los registros de control de E / S y los perifricos se explican en las secciones posteriores .

El ATmega164P/324P/644P contiene tres de uso general de E / S de registro, consulte " Registro


Descripcin " en la pgina 23 . Estos registros se pueden utilizar para almacenar cualquier informacin , y que son
particularmente til para almacenar variables globales y los indicadores de estado . Propsito general de E / S Registros
dentro del rango de direcciones 0x00 - 0x1F son directamente poco accesible utilizando el OSE , CBI , SBIS y
Instrucciones SBIC.

5.6 Registro Descripcin

5.6.1 EEARH y EEARL - El Registro EEPROM Direccin

Bits 15:12 - Res : Reservado Bits


Estos bits estn reservados bits en la ATmega164P/324P/644P y siempre lea como cero.

Bits 11:00 - EEAR8 : 0 : EEPROM Direccin


Los registros de EEPROM de direcciones - EEARH y EEARL especifican la direccin de EEPROM en el 4K bytes de espacio EEPROM. Los
bytes de datos EEPROM se dirigen linealmente entre 0 y 4096 . El valor inicial de EEAR no est definido. Un valor correcto debe ser
escrito antes de que pueda acceder a la EEPROM.

5.6.2 EEDR - La EEPROM de datos Registro

Bits 07:00 - EEDR7 : 0 : EEPROM de datos


Para la operacin de escritura EEPROM , el Registro EEDR contiene los datos que se van a escribir en la EEPROM en la direccin indicada
por el Registro EEAR . Para la operacin de EEPROM de lectura, el EEDR contiene los datos ledos desde la EEPROM en la direccin
indicada por EEAR .

5.6.3 EECR - El Registro de Control de EEPROM

Bits 07:06 - Res : Reservado Bits


Estos bits estn reservados bits en la ATmega164P/324P/644P y siempre lea como cero.

Bits 05:04 - EEPM1 y EEPM0 : EEPROM modo de programacin Bits


El ajuste de bit de modo EEPROM Programacin define qu accin de programacin que se activar al escribir EEPE . Es posible
programar datos en una sola operacin atmica ( borrar el viejo valor y programar el nuevo valor ) o para dividir el borrado y escritura
en dos diferentes operaciones . Los tiempos de programacin para los diferentes modos se muestran en la Tabla 5-1 en la pgina 24

Mientras EEPE se establece, se ignorar cualquier escritura a EEPMn. Durante reinicio, los bits EEPMn se restablecern en 0b00 a
menos que la EEPROM es la programacin ocupado.

Tabla 5.1 Modo EEPROM Bits

Bit 3 - MISTERIOSA: EEPROM Ready Interrupt Enable


Escribir EERIE a uno permite al EEPROM Ready interrupcin si el bit I en SREG est establecido. Escribir EERIE a cero deshabilita la
interrupcin. La interrupcin Ready EEPROM genera una interrupcin constante cuando EEPE se borra.

Bit 2 - EEMPE: EEPROM de programacin maestra de habilitacin


El bit EEMPE determina si el establecimiento EEPE a uno hace que el EEPROM para escribir. Cuando se establece EEMPE, estableciendo
EEPE plazo de cuatro ciclos de reloj escribir los datos en la EEPROM en la direccin seleccionada Si EEMPE es cero, estableciendo EEPE
no tendr ningn efecto. Cuando EEMPE se ha escrito a uno por software, hardware borra el bit a cero despus de cuatro ciclos de
reloj. Ver la descripcin de la broca EEPE para un procedimiento de escritura EEPROM.
Bit 1 - EEPE: EEPROM Programacin Enable
La EEPROM Escribir seal de habilitacin EEPE es la luz estroboscpica de escritura en la EEPROM. Cuando la direccin y los datos estn
configurados correctamente, el bit EEPE debe ser escrita a escribir el valor en la memoria EEPROM. El bit EEMPE debe estar escrito a
uno antes de que un uno lgico se escribe en EEPE, de lo contrario no escribir EEPROM tiene lugar. El siguiente procedimiento se debe
seguir cuando se escribe en la EEPROM (el orden de los pasos 3 y 4 no es esencial):

1 . Espere hasta EEPE se convierte en cero .


2 . Espere hasta SPMEN en SPMCSR se convierte en cero .
3 . Escribir nueva direccin EEPROM para EEAR ( opcional).
4 . Escribir nuevos datos de la EEPROM a EEDR ( opcional).
5 . Escribe una lgica al poco EEMPE mientras escribe un cero a Eepe en EECR .
6 . Dentro de los cuatro ciclos de reloj despus de establecer EEMPE , escribe un uno lgico EEPE .

La EEPROM no se puede programar en una CPU de escritura a la memoria Flash. El software debe comprobar que la programacin de
Flash se ha completado antes de iniciar una nueva escritura de EEPROM . Paso 2 slo es relevante si el software contiene un gestor de
arranque que permite a la CPU para programar el flash . Si el flash no est siendo actualizado por la CPU , el paso 2 puede ser omitido .
Consulte " Programacin de la memoria" en la pgina 293 para obtener ms informacin acerca de la programacin de arranque .

Precaucin: Una interrupcin entre los pasos 5 y 6 har que el ciclo de escritura falla, ya que el Maestro EEPROM Escriba Habilitar
voluntad de tiempo de espera . Si una rutina de interrupcin acceso a la EEPROM est interrumpiendo otro acceso EEPROM, el EEAR o
EEDR Registro ser modificado , haciendo que el acceso a EEPROM interrumpido falle. Se recomienda contar con el indicador global de
interrupcin se aclar durante todas las medidas para evitar estos problemas.

Una vez transcurrido el tiempo de acceso de escritura, el bit EEPE es despejado por hardware. El software de usuario puede consultar
este bit y esperar a que un cero antes de escribir el siguiente byte . Cuando EEPE se ha establecido , se detiene la CPU durante dos
ciclos antes de que se ejecute la siguiente instruccin.

Bit 0 - EERE : EEPROM Lee Habilitar

La EEPROM Leer seal de habilitacin EERE es la luz estroboscpica de lectura en la EEPROM . Cuando la direccin correcta est
configurado en el Registro EEAR , el bit EERE debe ser escrito a un uno lgico para activar la lectura de EEPROM . El acceso a EEPROM
de lectura tiene una instruccin , y los datos solicitados est disponible inmediatamente. Cuando se lee la EEPROM, se detiene la CPU
durante cuatro ciclos antes de que se ejecute la siguiente instruccin.

El usuario debe sondear el bit EEPE antes de comenzar la operacin de lectura . Si una operacin de escritura est en curso , no es ni
posible leer la EEPROM , ni para cambiar el Registro EEAR .

El oscilador calibrado se utiliza en cuando accede a la EEPROM . Tabla 5-2 en la pgina 25 enumera el tiempo de programacin tpico
para el acceso EEPROM de la CPU.

Tabla 5-2. EEPROM Tiempo Programacin


Smbolo Nmero de ciclos de calibrado RC Oscilador Typ Tiempo Programacin
EEPROM de escritura 26368 3,3 ms
( de la CPU )

The following code examples show one assembly and one C function for writing to the EEPROM. The examples assume that interrupts
are controlled (for example by disabling interrupts globally) so that no interrupts will occur during execution of these functions. The
examples also assume that no Flash Boot Loader is present in the software. If such code is present, the EEPROM write function must
also wait for any ongoing SPM command to finish.

Cdigo ensamblaje Ejemplo ()


EEPROM_write:
; Esperar a la finalizacin de escritura previa
sbic EECR, EEPE
rjmp EEPROM_write
; Establecer direccin (r18: r17) en la direccin de registro
out EEARH, r18
out EEARL, r17
, Escribir los datos (r16) para el registro de datos
out EEDR, r16
; Escribir un lgico EEMPE
sbi EECR, EEMPE
; Inicie eeprom escritura estableciendo EEPE
sbi EECR, EEPE
ret
Cdigo C Ejemplo (1)
void EEPROM_write (unsigned int uiAddress, ucData unsigned char)
{
/ * Esperar a la finalizacin de escritura anterior * /
while (EECR y (1 << EEPE))
;
/ * Establecer la direccin y Registros de datos * /
EEAR = uiAddress;
EEDR = ucData;
/ * Escribir un lgico EEMPE * /
EECR | = (1 << EEMPE);
/ * Iniciar eeprom escritura estableciendo EEPE * /
EECR | = (1 << EEPE);
}

Nota: 1. Consulte "Acerca de ejemplos de cdigo" en la pgina 8

Los siguientes ejemplos de cdigo muestran el montaje y las funciones en C para la lectura de la EEPROM. Los ejemplos asumen que las
interrupciones son controlados de manera que no hay interrupciones se producen durante la ejecucin de estas funciones.

Cdigo ensamblaje Ejemplo (1)


EEPROM_read:
; Esperar a la finalizacin de escritura previa
sbic EECR, EEPE
rjmp EEPROM_read
; Establecer direccin (r18: r17) en la direccin de registro
out EEARH, r18
out EEARL, r17
; Start eeprom ledo por escribir EERE
sbi EECR, EERE
; Leer datos de registro de datos
in r16, EEDR
ret
Cdigo C Ejemplo (1)
EEPROM_read unsigned char (int uiAddress sin signo)
{
/ * Esperar a la finalizacin de escritura anterior * /
while (EECR y (1 << EEPE))
;
/ * Establecer la direccin de registro * /
EEAR = uiAddress;
/ * Iniciar eeprom ledo por escribir EERE * /
EECR | = (1 << EERE);
/ * Devolver datos de registro de datos * /
volver EEDR;
}

Nota: 1. Consulte "Acerca de ejemplos de cdigo" en la pgina 8.

5.6.4 GPIOR2 - General Purpose I / O Registro 2

5.6.5 GPIOR1 - General Purpose I / O Registro 1

5.6.6 GPIOR0 - General Purpose I / O Registro 0

Nota: 1. SRWn1 = SRW11 (sector superior) o SRW01 (sector inferior), SRWn0 = SRW10 (sector superior) o SRW00 (sector inferior). El
pulso ALE en perodo T4 slo est presente si la siguiente instruccin accede a la memoria RAM (interna o externa).

6 . Reloj del sistema y Reloj Opciones

6.1 Sistemas de reloj y su distribucin


La Figura 6-1 presenta los principales sistemas de reloj en el AVR y su distribucin. Todos los relojes no tiene que ser activo en un
momento dado . A fin de reducir el consumo de energa , los relojes a los mdulos que no son utilizados pueden detenerse por el uso
de diferentes modos de suspensin , como se describe en " Administracin de energa y sueo modos" en la pgina 42 . Los sistemas de
reloj se detallan a continuacin .
Figura 6-1. Distribuidor de reloj

6.1.1 CPU Clock - clkCPU


El reloj de la CPU se enruta a partes del sistema en cuestin con la operacin del ncleo AVR . Ejemplos de tales mdulos son el
Registro de archivos de uso general , el registro de estado y de la memoria de datos que contiene el puntero de pila . Detener el reloj de
la CPU inhibe el ncleo de la realizacin de las operaciones y clculos generales .

6.1.2 I / O Clock - clkI / S


El reloj de E / S es utilizado por la mayora de los mdulos de E / S , como temporizadores / contadores , SPI, y USART.The reloj de E / S
tambin es utilizado por el mdulo de interrupcin externa , pero tenga en cuenta que algunas interrupciones externas son detectados
por lgica asncrona , lo que permite tales interrupciones a ser detectados incluso si se detiene el reloj de E / S . Tambin tenga en
cuenta que la condicin de arranque de deteccin en el mdulo USI es llevado a cabo de forma asncrona cuando se detiene clkI / O,
TWI reconocimiento de direccin en todos los modos de suspensin

6.1.3 Flash Clock - FLASH clk

El reloj flash controla el funcionamiento de la interfaz de Flash. El reloj Flash es habitualmente activa simultneamente con el reloj de la
CPU.

6.1.4 asncrono Timer Clock - ASY clk


El reloj temporizador asncrono permite que la asncrona temporizador / contador que se registr directamente desde un reloj externo
o un cristal de reloj de 32 kHz externo. El dominio de reloj dedicado permite el uso de este temporizador / contador como un contador
en tiempo real, incluso cuando el dispositivo est en modo de suspensin.

6.1.5 ADC Clock - clkADC


El ADC est provisto de un dominio de reloj dedicada. Esto permite detener la CPU y los relojes de E / S con el fin de reducir el ruido
generado por los circuitos digitales. Esto le da a los resultados de conversin ADC ms precisos.

6.2 Fuentes de reloj


El dispositivo dispone de las siguientes opciones de fuente de reloj, seleccionables por los bits de Flash fusibles como se muestra a
continuacin. El reloj de la fuente seleccionada es introducida en el generador de reloj AVR, y se encamina a la
mdulos apropiados.

Tabla 6-1. Opciones de dispositivo Sincronizacin Seleccione (1)

Opciones dispositivo Registrando CKSEL3 .. 0


Baja Oscilador de Cristal Poder 1111 - 1000
Plena marcha Oscilador de Cristal 0111 - 0110
De baja frecuencia Osciladores de cristal 0101 - 0100
128 kHz interno Oscilador RC 0011
Calibrada interna RC Oscilador 0010
Reloj externo 0000
Reservado 0001

Nota: 1. Para todos los fusibles "1" significa no programada, mientras que "0" significa programado

6.2.1 por defecto la fuente de reloj

El equipo se suministra con el oscilador RC interno a 8,0 MHz y con el CKDIV8 fusible programado, lo que resulta en 1,0 MHz de reloj del
sistema . La hora de inicio se establece en el plazo mximo y tiempo de espera permitido . ( CKSEL = " 0010 " , SUT = " 10 " , CKDIV8 = "
0"). El ajuste predeterminado garantiza que todos los usuarios pueden hacer su ajuste de la fuente de reloj deseado usando cualquier
interfaz de programacin disponible .

6.2.2 Reloj Secuencia de arranque

Cualquier fuente de reloj necesita una suficiente VCC para iniciar oscilante y un nmero mnimo de ciclos de oscilacin antes de que
pueda ser considerado estable.

Para asegurar suficiente VCC , el dispositivo emite un reajuste interno con un retraso de tiempo de espera ( tTOUT ) despus del reinicio
del dispositivo es liberada por todas las dems fuentes de reset . "Sistema de depuracin on- chip" en la pgina 46
describe las condiciones de arranque para el reajuste interno. El retardo ( t TOUT ) se mide el tiempo desde el Watchdog oscilador y el
nmero de ciclos en el retardo se establece por los bits fusibles SUTx y CKSELx . Los retrasos seleccionables se muestran en la Tabla 6-2 .
La frecuencia del oscilador Watchdog es dependiente de la tensin como se muestra en "Caractersticas tpicas - TA = -40 C a 85 C "
en la pgina 341.

Tabla 6-2. Nmero de ciclos de Watchdog Oscilador

El objetivo principal de la demora es mantener el AVR en reiniciar hasta que se suministra con el mnimo Vcc. El retraso no controlar la
tensin real y ser necesaria para elegir un retraso ms largo que el tiempo de subida Vcc. Si esto no es posible, se debe utilizar un
circuito interno o externo Brown-Out deteccin. Un circuito de DBO se asegurar suficiente Vcc antes de liberar el reinicio, y el retraso
de tiempo de espera puede ser deshabilitado. No se recomienda deshabilitar el retardo de tiempo de espera y sin la utilizacin de un
circuito de deteccin de Brown-Out.

Se requiere que el oscilador a oscilar de un nmero mnimo de ciclos antes de que el reloj se considera estable. Un contador de
ondulacin interna supervisa el reloj de salida del oscilador, y mantiene el reinicio interno activo para un nmero dado de ciclos de
reloj. El reinicio se libera y el dispositivo comenzar a ejecutar. El oscilador de tiempo de puesta en marcha recomendada es
dependiente del tipo de reloj, y vara de 6 ciclos para un reloj aplicada externamente a 32K ciclos para un cristal de baja frecuencia.

La secuencia de puesta en marcha para el reloj incluye tanto el retardo de tiempo de espera y el tiempo de puesta en marcha cuando el
dispositivo se pone en marcha a partir de reinicio. Al poner en marcha de ahorro de energa o el modo de la Energa-abajo, Vcc se
supone que es a un nivel suficiente y slo el tiempo de puesta en marcha est incluida.

6.2.3 Conexiones de la fuente de reloj


Los pines XTAL1 y XTAL2 son de entrada y de salida, respectivamente, de un amplificador de inversin que puede ser configurado para
su uso como un oscilador en el chip, como se muestra en la Figura 6-2 en la pgina 31. Cualquiera de una
cristal de cuarzo o un resonador de cermica pueden ser utilizados.

C1 y C2 siempre deben ser iguales para ambos cristales y resonadores. El valor ptimo de los condensadores depende del cristal o
resonador en uso, la cantidad de capacitancia parsita, y el ruido electromagntico del medio ambiente. Para resonadores de cermica,
se deben utilizar los valores del condensador dadas por el fabricante.

Figura 6-2. Conexiones Crystal Oscillator

6.3 Low Power Crystal Oscillator

Este oscilador de cristal es un oscilador de baja potencia, con una menor oscilacin de tensin en la XTAL2 output.It da el menor
consumo de energa, pero no es capaz de conducir otras entradas de reloj, y puede ser ms susceptible al ruido en ambientes ruidosos.
En estos casos, consulte el "Full Swing Oscilador de Cristal" en la pgina 33.

Algunas pautas iniciales para la eleccin de los condensadores para el uso con los cristales se presentan en la Tabla 6-3. El cristal debe
estar conectado como se describe en "Conexiones de la fuente de reloj" en la pgina 31.

El oscilador de baja potencia puede funcionar en tres modos diferentes, cada uno optimizado para un rango de frecuencia especfico. El
modo de operacin es seleccionado por el CKSEL3 fusibles .. 1 como se muestra en la Tabla 6-3.

Tabla 6-3. Cristal de baja potencia del oscilador Modos de funcionamiento (1)

Notas:
1. Si 8 MHz de frecuencia excede la especificacin del dispositivo (depende de VCC), el CKDIV8 fusible puede ser programado con el fin
de dividir la frecuencia interna de 8. Se debe garantizar que el reloj dividido resultante cumple con la especificacin de frecuencia del
dispositivo.
2. Esta es la configuracin CKSEL recomendados para los diferentes rangos de frecuencia.
3. Esta opcin no se debe utilizar con cristales, slo con resonadores de cermica.

El CKSEL0 fusible junto con el SUT1 .. 0 Fusibles seleccionar los tiempos de puesta en marcha, como se muestra en la Tabla 6-4.

Tabla 6-4. Tiempos de puesta en marcha para el oscilador de cristal de Seleccin de la energa baja del reloj

Notas:
1. Estas opciones slo deben utilizarse cuando no est funcionando cerca de la frecuencia mxima del dispositivo, y slo si la estabilidad
de frecuencia en el arranque no es importante para la aplicacin. Estas opciones no son adecuados para los cristales.
2. Estas opciones son para uso con resonadores de cermica y se asegurar la estabilidad de frecuencia en el arranque. Ellos tambin se
pueden utilizar con cristales cuando no est funcionando cerca de la frecuencia mxima del dispositivo, y si la estabilidad de frecuencia
en el arranque no es importante para la aplicacin.

6.4 Full Swing Crystal Oscillator


Este oscilador de cristal es un oscilador pleno apogeo, con el swing del carril-a-carril en la salida XTAL2. Esto es til para la conduccin
de otras entradas de reloj y en entornos ruidosos. El consumo de corriente es
ms alto que el "poder de los cristales oscilador de baja" en la pgina 32. Tenga en cuenta que el Full Swing Crystal Oscillator slo
funcionar para VCC = 2.7 a 5.5 voltios.

Algunas directrices iniciales para la eleccin de condensadores para su uso con cristales se dan en la Tabla 6-6. El cristal debe estar
conectado como se describe en "Conexiones de la fuente de reloj" en la pgina 31.

El modo de operacin es seleccionado por el CKSEL3 fusibles .. 1 como se muestra en la Tabla 6-5.

Tabla 6-5 Full Swing Crysta Oscilator Modos de funcionamiento

Notas: 1. Si 8 MHz de frecuencia excede la especificacin del dispositivo (depende de VCC), el CKDIV8 fusible puede ser programado
con el fin de dividir la frecuencia interna de 8. Se debe garantizar que el reloj dividido resultante cumple con la especificacin de
frecuencia del dispositivo.

Tabla 6-6. Tiempos de puesta en marcha para el swing completo Crystal Oscillator Selection Reloj

Notas:
1 . Estas opciones slo deben utilizarse cuando no est funcionando cerca de la frecuencia mxima del dispositivo , y slo si la
estabilidad de frecuencia en el arranque no es importante para la aplicacin. Estas opciones no son adecuados para los cristales .
2 . Estas opciones son para uso con resonadores de cermica y se asegurar la estabilidad de frecuencia en el arranque . Ellos tambin
se pueden utilizar con cristales cuando no est funcionando cerca de la frecuencia mxima del dispositivo , y si la estabilidad de
frecuencia en el arranque no es importante para la aplicacin .

6.5 de baja frecuencia Osciladores de cristal

La baja frecuencia Osciladores de cristal est optimizado para su uso con un cristal de reloj de 32,768 kHz. Al seleccionar cristales,
capasitance carga y Equivalente de Resistencia del cristal de la serie , ESR debe ser tomado en consideracin. Ambos valores son
especificados por el fabricante de cristal. ATmega164P/324P/644P oscilador est optimizado para un bajo consumo de energa, y por lo
tanto la hora de seleccionar los cristales , consulte la Tabla 6-7 en la pgina 34 para las recomendaciones de ESR mximos de 9 pF y 12,5
cristales pF

Tabla 6-7 . Recomendacin mximo ESR para 32.768 kHz cristal de reloj

Nota:
1. ESR mxima es el valor tpico basado en la caracterizacin

La baja frecuencia Osciladores de cristal proporciona una capacidad de carga interno, ver Tabla 6-8 en la pgina 34 en cada pin TOSC.

Tabla 6-8. Capasitance para el oscilador de baja frecuencia.

La capacitancia (CE + Ci) que se necesita en cada pasador TOSC se puede calcular mediante el uso de:
C = 2CL-Cs

donde:
* Ce - es condensadores externos opcionales como se describe en la Figura 8-2 en la pg29
* Ci - es la capacitancia pin en la tabla 8-8 en la pgina 33
* CL - es la capacidad de carga de un cristal de 32.768 kHz especificado por el proveedor de cristal
* CS - es la capacidad parsita total para un pin TOSC.

Cristales especificando capacidad de carga (CL) superior a 8,0 pF, requieren condensadores externos aplicados tal como se describe en
la Figura 6-2 en la pgina 31.

Cuando se selecciona este oscilador, los tiempos de puesta en marcha se determinan por el SUT Fusibles y CKSEL0 como se muestra en
la Tabla 6-9.

Tabla 6-9. Tiempos de puesta en marcha para la baja frecuencia Osciladores de cristal Seleccin del Reloj

Nota: 1. Estas opciones slo se deben usar si la estabilidad de frecuencia a la puesta en marcha no es importante para el
aplicacin.

6.6 Calibrado interno Oscilador RC

Por defecto, el oscilador RC interno proporciona un aproximado de reloj de 8 MHz. Aunque tensin y dependiente de la temperatura,
este reloj puede ser calibrado con gran precisin por el usuario. Consulte la Tabla 25-4 en la pgina 330 y "Velocidad del oscilador
interno" en la pgina 359 y la pgina 383 para obtener ms detalles. El dispositivo se enva con el CKDIV8 Fusible programado. Consulte
"Precontador reloj del sistema" en la pgina 38 por ms detalles.

Este reloj puede ser seleccionado como el reloj del sistema mediante la programacin de los fusibles CKSEL como se muestra en la
Tabla 6-10. Si se selecciona, que operar sin componentes externos. Durante el restablecimiento, hardware carga el valor de calibracin
pre-programado en el Registro OSCCAL y de ese modo se calibra automticamente el oscilador RC. La exactitud de esta calibracin se
muestra como la calibracin de fbrica en la Tabla 25-4 en la pgina 330.

Al cambiar el registro OSCCAL de SW, consulte "OSCCAL - Oscilador Calibracin Registrarse" en la pgina 40, es posible obtener una
precisin de calibracin ms alto que mediante el uso de la calibracin de fbrica. La exactitud de esta calibracin se muestra como
calibracin del usuario en la Tabla 25-4 en la pgina 330.

Cuando se utiliza este oscilador cuando el reloj del chip, el Watchdog oscilador seguir siendo utilizado para el temporizador de
vigilancia y para el restablecimiento Tiempo de espera. Para obtener ms informacin sobre el valor de calibracin pre-programada,
consulte la seccin "Byte calibracin" en la pgina 296.

Tabla 6-10. Calibrada interna RC Oscilador Modos de funcionamiento

Notas:
1. El equipo se suministra con esta opcin seleccionada.
2. Si 8 MHz de frecuencia excede las especificaciones del dispositivo (depende de VCC), el CKDIV8 fusible puede ser programado con el
fin de dividir la frecuencia interna de 8.

Cuando se selecciona este oscilador, los tiempos de puesta en marcha son determinados por los fusibles SUT como se muestra en la
Tabla 6-11 en la pgina 36.

Tabla 6-11. Tiempos de puesta en marcha para la seleccin de reloj calibrada interna RC Oscilador

Nota: 1. El Instrumento suministrado esta opcin seleccionada.

6.7 128 kHz oscilador interno

El oscilador interno 128 kHz es un oscilador de baja potencia que proporciona un reloj de 128 kHz. La frecuencia es nominal a 3V y 25
C. Este reloj puede ser de seleccin como el reloj del sistema mediante la programacin de los fusibles CKSEL a " 0011 " como se
muestra en la Tabla 6-12 .

Tabla 6-12 . 128 kHz oscilador interno Modos de funcionamiento ( 2 )

Nota:
1 . Tenga en cuenta que la kHz oscilador 128 es una fuente muy bajo reloj de la energa , y no est diseado para una alta precisin .

Cuando se selecciona esta fuente de reloj , los tiempos de puesta en marcha son determinados por los fusibles SUT como se muestra en
la Tabla 6-13.

Tabla 6-13 . Tiempos de puesta en marcha para el 128 kHz oscilador interno

6.8 Reloj externo

Para accionar el dispositivo desde una fuente de reloj externa , XTAL1 debe ser impulsada como se muestra en la Figura 6-3 . Para
ejecutar el dispositivo en un reloj externo , el CKSEL fusibles deben programarse a "0000" .

Figura 6-3. Configuracin del reloj de la unidad externa

Cuando se selecciona esta fuente de reloj , los tiempos de puesta en marcha son determinados por los fusibles SUT como se muestra en
Tabla 6-15.

Tabla 6-14 . Crystal Oscillator Frecuencia de reloj

Tabla 6-15. Tiempos de puesta en marcha para la Seleccin de reloj externo

Cuando la aplicacin de un reloj externo , que se requiere para evitar cambios bruscos en la frecuencia de reloj aplicada para garantizar
un funcionamiento estable de la MCU . Una variacin en la frecuencia de ms de 2 % de un ciclo de reloj a la siguiente puede conducir a
un comportamiento impredecible . Si los cambios de ms de 2 % es
necesario, asegrese de que el MCU se mantiene en Restablecer durante los cambios.
Tenga en cuenta que el reloj del sistema Pre-escalador se puede utilizar para implementar los cambios en tiempo de ejecucin de la
frecuencia del reloj interno sin dejar de garantizar un funcionamiento estable. Consulte " Sistema de reloj Precontador " en la pgina 38
para ms detalles.

6.9 Temporizador / contador Oscilador

ATmega164P/324P/644P utiliza el mismo tipo de oscilador de cristal para baja frecuencia Osciladores de cristal y Timer / Contador
oscilador . Consulte " de baja frecuencia Osciladores de cristal " en la pgina 34 para obtener detalles sobre los requisitos de oscilador y
cristal.

El dispositivo puede operar su Timer/Counter2 de un cristal de reloj de 32,768 kHz externo o de una fuente de reloj externa . Consulte
"Conexiones de fuente de reloj " en la pgina 31 para ms detalles.

La aplicacin de una fuente de reloj externa a TOSC1 se puede hacer si EXTCLK en el Registro ASSR se escribe en uno lgico . Ver " La
salida Compara Registrarse B contiene un valor de 8 bits que se compara continuamente con el valor del contador ( TCNT2 ) . Un
partido se puede utilizar para generar una salida de comparacin interrumpir, o para generar una salida de forma de onda en el
pasador OC2B . " En la pgina 157 para una descripcin adicional sobre la seleccin de reloj externo como entrada en lugar de un cristal
de reloj de 32,768 kHz

6.10 Reloj de bfer de salida


El dispositivo puede emitir el reloj del sistema en el pasador CLKO . Para habilitar la salida , el CKOUT fusible tiene que ser programado .
Este modo es adecuado cuando se utiliza el reloj de chip para conducir otros circuitos en el sistema. El reloj tambin se emitir durante
el reinicio , y el normal funcionamiento de los pines de E / S se invalida cuando se programa el fusible. Cualquier fuente de reloj ,
incluyendo el oscilador RC interno , se puede seleccionar cuando el reloj se enva en CLKO . Si se utiliza el reloj del sistema Pre-escalador
, es el reloj del sistema dividido que se emite .

6.11 Sistema Reloj Precontador


El ATmega164P/324P/644P tiene un prescaler reloj del sistema y el reloj del sistema se puede dividir mediante el establecimiento de la
" CLKPR - Reloj preescala Registrarse " en la pgina 40 . Esta caracterstica se puede utilizar para disminuir la frecuencia de reloj del
sistema y el consumo de energa cuando el requisito de potencia de procesamiento es baja . Esto se puede utilizar con todas las
opciones de fuente de reloj , y que afectar a la frecuencia de reloj de la CPU y todos los dispositivos perifricos sincrnicos. clkI / O,
clkADC , clkCPU y clkFLASH estn divididos por un factor , como se muestra en la Tabla 6-16 en la pgina 41 .

Cuando se cambia entre los ajustes precontador , el reloj del sistema Pre-escalador se asegura de que no hay problemas tcnicos se
produce en el sistema de reloj . Tambin se asegura de que ninguna de frecuencia intermedia es ms alta que ni la frecuencia de reloj
correspondiente a la configuracin anterior , ni la frecuencia de reloj correspondiente a la nueva configuracin.

El contador de ondulacin que implementa la pre-escalador funciona a la frecuencia del reloj de no dividida , que puede ser ms rpido
que la frecuencia de reloj de la CPU . Por lo tanto , no es posible determinar el estado de la pre-escalador - incluso si fuera legible , y el
tiempo exacto que se tarda en cambiar de una divisin de reloj a la otra no se puede predecir exactamente . Desde el momento en los
valores CLKPS se escriben , se tarda entre T1 + T2 y T1 + T2 2 * antes de la nueva frecuencia de reloj est activo. En este intervalo , se
producen 2 flancos de reloj activa. Aqu , T1 es el perodo de reloj anterior , y T2 es el perodo que corresponde a la nueva configuracin
prescaler .

Para evitar cambios no intencionales de frecuencia de reloj, a un procedimiento de escritura especial se debe seguir para cambiar los
bits CLKPS :

1 . Cul fue el Reloj Precontador Cambio Enable ( CLKPCE ) poco a uno y todos los otros bits en CLKPR a cero.
2 . Dentro de los cuatro ciclos, escribir el valor deseado para CLKPS mientras escribe un cero a CLKPCE . Las interrupciones se deben
desactivar cuando cambie la configuracin prescaler para asegurarse que el proceso de escritura no se interrumpan.