Académique Documents
Professionnel Documents
Culture Documents
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.
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.3.1 VCC
Tensin de alimentacin digital .
2.3.2 GND
Ground .
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.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.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.
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.
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.
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.
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.
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:
La figura 4-2 muestra la estructura de los 32 registros de propsito general de trabajo en la CPU.
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.
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.
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).
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.
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.
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.
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.
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-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.
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
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 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) * /
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.
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 .
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.
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.
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 .
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 .
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 .
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.
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.
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.
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.
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.
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).
El reloj flash controla el funcionamiento de la interfaz de Flash. El reloj Flash es habitualmente activa simultneamente con el reloj de la
CPU.
Nota: 1. Para todos los fusibles "1" significa no programada, mientras que "0" significa programado
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 .
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.
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.
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.
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.
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.
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 .
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.
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.
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.
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
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 .
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
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" .
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.
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.
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
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.