Atmega164p Español

Embed Size (px)

Citation preview

  • 8/17/2019 Atmega164p Español

    1/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Características:

      Microcontrolador AVR de 8 bits de alto rendimiento y bajo consumo.

     

    Arquitectura Avanzada RISC- 131 instrucciones. La mayoría de un solo ciclo de reloj de ejecución.- 32 registros de trabajo de 8 bits para propósito general.- Funcionamiento estático total.- Capacidad de procesamiento de unos 20 MIPS a 20 MHz.- Multiplicador por hardware de 2 ciclos

      Memorias de programa y de datos no volátiles de alta duración- 16/32/44 K bytes de FLASH auto programable en sistema- 512B/1K/2K bytes de EEPROM

    - 1/2/4K bytes de SRAM Interna- Ciclos de escritura/borrado: 10.000 en Flash / 100.000 en EEPROM

  • 8/17/2019 Atmega164p Español

    2/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    - Retención de Datos: 20 años a 85ºC / 100 años a 25ºC- Sección opcional de código Boot con bits de bloqueo independientes.Programación en sistema del programa Boot que se encuentra dentro delmismo chip. Operación de lectura durante la escritura.- Bloqueo programable para la seguridad del software.

      Interfase JTAG- Capacidades de Boundary Scan de acuerdo con el estándar JTAG- Soporte Extendido Debug dentro del chip- Programación de FLASH, EEPROM, fusibles y bits de bloqueo a travésde la interfase JTAG.

      Características de los periféricos- Dos Timer/Contadores de 8 bits con prescalamiento separado y modo

    comparación.

    - Un Timer/Contador de 16 bits con prescalamiento separado, modocomparación y modo de captura.- Contador en Tiempo Real con Oscilador separado- 6 Canales para PWM- ADC de 10 bits y 8 canales

    Modo Diferencial con ganancia seleccionable a x1, x10 o x200.- Interfase serie de dos hilos con byte orientado.- Dos puertos Seriales USART Programables- Interfaz Serial SPI maestro-esclavo- Watchdog Timer programable con oscilador independiente, dentro del

    mismo chip.- Comparador Analógico dentro del mismo Chip- Interrupt and Wake-up on Pin Change

      Características especiales del microcontrolador- Power-on Reset (en el encendido) y detección de Brown-out (pérdidade polarización) programable.- Oscilador RC interno calibrado.- Fuentes de interrupción externas e internas.- 6 modos de descanso: Idle, Reducción de Ruido ADC, Power-save,

    Power-down, Standby y Standby extendido.

      Encapsulados para Entradas/Salidas (E/S)- 32 líneas de E/S programables.- PDIP de 40 pines, TQFP y QFN/MLF de 44 pines.

      Voltajes de Operación- 1.8 – 5.5V para el ATMEGA 164P/324P/644PV- 2.7 – 5.5V para el ATMEGA 164P/324P/644P

  • 8/17/2019 Atmega164p Español

    3/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

      Velocidad de Funcionamiento- ATMEGA 164P/324P/644PV: 0 – 4MHz @ 1.8 –  5.5V - 10MHz @ 2.7 – 5.5V- ATMEGA 164P/324P/644PV: 0 – 10MHz @ 2.7 –  5.5V - 20MHz @ 4.5– 5.5V

      Consumo de energía a 1MHz, 1.8V, 25ºC para el ATMEGA164P/324P/644P- Activo: 0.4mA- Modo Power-down: 0.1uA- Modo Power-Save: 0.6uA (Incluye RTC de 32 Khz)

    1. CONFIGURACIÓN DE PINESFigura 1-1. Pines de Salida del ATmega164P/324P/644P

    TQFP/QFN/MLF

  • 8/17/2019 Atmega164p Español

    4/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    2. Revisión Global

    El ATmega164P/324P/644P es un microcontrolador CMOS de 8 bits de bajoconsumo basado en la arquitectura RISC mejorada. Sus instrucciones seejecutan en un ciclo de máquina, el ATmega164P / 324P / 644P consiguetransferencia de información alrededor de 1 MIPS por MHz admitido por el

    sistema, permitiendo al diseñador del sistema optimizar el consumo de energíaversus la velocidad de procesamiento.

  • 8/17/2019 Atmega164p Español

    5/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    2.1 Diagrama de Bloque

    Figura 2 -1. Diagrama de Bloques

    El core (núcleo) AVR combina un conjunto de instrucciones RISC con 32registros para uso de propósito general. Todos los 32 registros estándirectamente relacionados con la Unidad Aritmética Lógica (ALU), admitiendodos registros independientes al ejecutarse una instrucción en un ciclo demáquina. El resultado de esta arquitectura es más eficiente, se consigue uncaudal de flujo y transferencia hasta diez veces más rápido quemicrocontroladores CISC convencionales.

    El ATmega164P / 324P / 644P provee las siguientes características: 16/32 / 64K

    bytes en el sistema de Flash Programable con capacidad de lectura y escriturade 512B/1K/2K bytes en la EEPROM, 1/2/4K bytes en la SRAM, 32 pines deE/S para propósito general, 32 registros de propósito general, Contador enTiempo real (RTC), tres Timer/Contadores flexibles con modo de Comparacióny PWM, 2 USARTs, un byte orientado a la Interfaz Serial de 2 hilos, 8 canalesADC de 10 bits con opción de entrada Diferencial con ganancia programable,Watchdog Timer programable con oscilador interno, un Puerto serial SPI,Interfase de prueba JTAG, también usado para acceder al sistema On-chipDebug y seis modos de programación seleccionable para ahorro de energía. Elmodo Idle detiene al CPU mientras permite a la SRAM, Timer/Contador,

    Puerto SPI y al sistema de interrupciones continuar funcionando.

  • 8/17/2019 Atmega164p Español

    6/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    El Modo Power-down guarda el contenido de los registros pero paraliza aloscilador, desactiva todas las otras funciones de chip hasta la próximainterrupción o mediante reseteo por hardware. En el Modo Power-save, el relojasincrónico continúa corriendo, permitiendo tener actualizado al reloj mientrasel resto de dispositivos están descansando. El Modo de Reducción del Ruido delADC detiene al CPU y a todos los módulos de E/S excepto al Reloj Asincrónicoy al ADC, para minimizar el ruido durante la conversión. En el Modo Standby,el oscilador Cristal/Resonador está corriendo mientras el resto de dispositivosestán descansando. Estos permiten comenzar una rápida combinación con elconsumo de baja energía.

    En el Modo de Standby extendido, corre el Oscilador principal y el RelojAsincrónico. Este elemento es hecho usando tecnología de alta densidad dememoria no volátil de ATMEL. El chip interno ISP de la FLASH permite a lamemoria de programa ser reprogramada a través del puerto interno ISPmediante un programador convencional no volátil o mediante un programainterno en el dispositivo AVR. El programa de inicialización puede usarcualquier interfaz para descargar el programa de aplicación en la memoriaflash. El programa en la sección Flash Boot  es actualizado mientras continúacorriendo la sección de aplicaciones de la Flash, proporcionando una escritura-lectura verdadera de operación. Para combinar un CPU RISC de 8 bits en unsistema de Flash Auto-programable en un chip monolítico, elATmega164P/324P/644P es un poderoso microcontrolador que provee una altaflexibilidad y solución de costos efectivos para cualquier aplicación de control.

    El ATmega164P / 324P / 644P AVR es soportado con un juego completo deprogramas y herramientas de desarrollo del sistema incluyendo: compiladoresde C, ensambladores de macro, depurador / simuladores de programa,emuladores de circuitos y equipos de evaluación.

    2.2 Comparación entre el ATmega164P, ATmega324P and ATmega644P

    2.3 Descripción de Pines

    2.3.1 VCC

    Alimentación de Voltaje Digital

  • 8/17/2019 Atmega164p Español

    7/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    2.3.2 GNDTierra

    2.3.3 Puerto A (PA7:PA0)

    El puerto A sirve como entradas analógicas para el conversor Análogo Digital.El puerto A también sirve como un puerto bidireccional de 8 bits conresistencias internas de pull up (seleccionables para cada bit). Los buffers desalida del puerto A tienen características simétricas controladas con fuentes dealta capacidad.

    Los pines del puerto A están en tri-estado cuando las condiciones de reset estánactivadas o cuando el reloj no este corriendo. El puerto A también sirve paravarias funciones especiales del ATmega164P/324P/644P como la ConversiónAnáloga Digital.

    2.3.4 Port B (PB7:PB0)

    El puerto B es un puerto bidireccional de 8 bits de E/S con resistencias internasde pull up.Las salidas de los buffers del puerto B tienen características simétricascontroladas con fuentes de alta capacidad.

    Los pines del puesto B están en tri-estado cuando las condiciones de reset están

    activadas o cuando el reloj no esté corriendo. El puerto B también sirve paravarias funciones especiales del ATmega164P/324P/644P como se menciona enlas páginas iniciales.

    2.3.5 Port C (PC7:PC0)

    El puerto C es un puerto bidireccional de 8 bits de E/S con resistencias internasde pull up (seleccionadas por cada bit). Las salidas de los buffers del puerto Ctienen características simétricas controladas con fuentes de alta capacidad.

    Los pines del puesto C están en tri-estado cuando las condiciones de reset estánactivadas siempre y cuando el reloj no este corriendo. El puerto C tambiénsirve para las funciones de Interfaz del JTAG, con funciones especiales delATmega164P/324P/644P como se menciona en las páginas iniciales.

  • 8/17/2019 Atmega164p Español

    8/377

  • 8/17/2019 Atmega164p Español

    9/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    4. Acerca de los Ejemplos de CódigoEste documento contiene unos simples ejemplos de código que brevementemuestran como usar varias partes del dispositivo. Sea consiente que no todoslos vendedores de compiladores en C incluyen la definición de bits en elarchivo de cabecera y el manejo de interrupciones en el compilador C esdependiente. Por favor confirme con la documentación del compilador C paramás detalles.Los ejemplos de código asumen que la parte de archivo de cabecera estaincluido antes de la compilación. Para las localidades de los registros de E/S enel mapa extendido de E/S, las instrucciones "IN", "OUT", "SBIS", "SBIC", "CBI",y "SBI" serían reemplazadas con instrucciones de acceso extendido E/S.Típicamente "LDS" y "STS" combinadas con "SBRS", "SBRC", "SBR", y "CBR".

    5. Retención de DatosLa fiabilidad de la calificación de resultados muestra que la velocidad de fallade un proyecto es mucho menor que 1 PPM en 20 años a 85°C ó 100 años a25°C.

    6. AVR CPU Core

    6.1 VISIÓN GENERALEsta sección discute la arquitectura general del AVR. La principal función delAVR es asegurar la correcta ejecución del programa.La CPU debe ser capaz de acceder a la memoria, llevar a cabo cálculos, controlde periféricos y atención de interrupciones.

  • 8/17/2019 Atmega164p Español

    10/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Para maximizar el rendimiento y el paralelismo, el AVR usa una arquitectura deHardware con separador de memorias y buses para programa y datos. Lasinstrucciones en la memoria de programa son ejecutadas con un simple nivel decolas. Mientras una instrucción es ejecutada, la siguiente instrucción esejecutada desde la memoria de programa. Este concepto permite que lasinstrucciones sean ejecutadas en cada ciclo de máquina. La memoria deprograma está en la memoria Flash re-programable.El Archivo del Registro (Register File) de rápido acceso contiene 32 registros depropósito general de 8 bits trabajando en un simple ciclo de reloj.Esto permite una operación de ciclo simple en la Unidad Aritmética lógica. Enuna operación típica de la ALU, dos operandos están fuera del Archivo deRegistro, la operación es ejecutada, y el resultado es guardado en el Archivo deRegistro en un ciclo de máquina.

    Seis de los 32 registros pueden ser usados como tres registros punteros de 16bits de dirección, para direccionar los Datos y permitir los cálculos dedirecciones diferentes.

    Uno de estos tres punteros puede ser usado como un puntero de direccionespara tablas en la memoria de programa de la Flash. Estos registros de funciónadicionales son el X, Y y Z de 16 bits, descritos después en esta sección. La ALUsoporta operaciones lógicas y aritméticas entre registros o entre constantes yregistros.

    Simples operaciones de registros pueden ser ejecutadas en la ALU. Después deuna operación aritmética, el registro de estado es actualizado para reflejarinformación acerca de los resultados de la operación. El flujo del programa esprovisto por un salto condicional e incondicional y llamado de interrupciones,capaz de direccionar espacios de direcciones completamente.

    La mayoría de instrucciones del AVR tienen un formato simple de una palabrade 16 bits. Cada dirección de memoria contiene instrucciones de 16 o 32 bits. Elespacio de memoria en la flash está dividido en dos secciones, la sección Bajadel programa y la sección de aplicación de programa.

    Ambas secciones están dedicadas para bloqueo de escritura y protección delectura/escritura.La instrucción SMP que se escribe en la Sección de la memoria Flash deberesidir en la sección Baja del programa.

    Durante los llamados de interrupción y subrutinas, la dirección de regreso delContador de Programa (CP) es almacenado en la pila (stack).

  • 8/17/2019 Atmega164p Español

    11/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    La pila (stack) está localizada efectivamente en la SRAM (RAM estática) dedatos y consecuentemente el tamaño de la pila está limitado solo por el tamañototal de la SRAM (RAM estática) y su uso.Todos los programas a usarse deben inicializar en el SP (Stack Pointer) en larutina del Reset (antes de que sea ejecutada una interrupción o una subrutina).El puntero de pila (Stack pointer SP) es la lectura/escritura accesible en elespacio de E/S. La RAM estática de datos puede ser fácilmente penetrada através de los cinco diferentes modos de direccionamiento soportados en laarquitectura de AVR.El espacio de memoria en la arquitectura de los mapas de memoria de los AVRson todos lineales y regulares. Un módulo de interrupción flexible tiene susregistros de control en los espacios de E/S con una Habilitación de InterrupciónGlobal en el Registro de Estado.

    Todas las interrupciones tienen separado un vector de interrupciones en la tabladel vector de interrupciones. Las interrupciones tienen prioridad deconformidad con su vector de interrupciones. La dirección más baja del vectorde interrupciones tiene alta prioridad.

    El espacio de memoria de E/S contiene 64 direcciones para las funcionesperiféricas de la CPU, el Registro de Control SPI y otras funciones de Entrada ySalida. La memoria de Entrada y Salida puede ser accedida directamente ocomo localidades de espacio de datos siguiendo estos Archivos de Registro:0x20- 0x5F. En suma, el ATmega164P/324P/644P tiene espacios extendidos deentrada y salida desde la dirección 0x60 - 0xFF en la SRAM donde solo lasinstrucciones ST/STS/STD y LD/LDS/LDD pueden ser usadas.

    6.3 Registro de Estado

    El registro de estado contiene información acerca de los resultados de lasinstrucciones aritméticas más recientes ejecutadas.Está información puede ser usada para alterar el flujo del programa en elfuncionamiento de operaciones condicionales. Note que el Registro de Estadoes actualizado después de todas las operaciones de la ALU, comoespecificaciones en el Set de Instrucciones de Referencia. En algunos casos estoretira la necesidad de usar comparación de instrucciones dedicadas, resultandoun código más rápido y compacto.El Registro de estado no es almacenado automáticamente cuando entra unarutina de interrupción y se restituye cuando regresa de una interrupción.

  • 8/17/2019 Atmega164p Español

    12/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    6.3.1 SREG – Registro de Estado

    El registro de Estado AVR – SREG – está definido por:

    • Bit 7 – I: Habilitación de Interrupciones Globales

    El bit de habilitación de las interrupciones globales debe estar en uno parahabilitar las interrupciones. La interrupción individual permite que el controlsea llevado a cabo en registros de control distintos. Si el registro de Habilitaciónde interrupciones globales es borrado, ninguna de las interrupciones están

    activadas independiente de la configuración de una interrupción individual. Elbit I es limpiado por hardware después de que una interrupción ha ocurrido, yes puesto en uno por la instrucción de RETI para habilitar interrupcionessiguientes. El bit I también puede ser puesto en uno y borrado por la aplicacióncon las instrucciones SEI y CLI.

    • Bit 6 – T: Bit Copia de almacenamiento

    Los bits de instrucción de copia BLD (cargar bit) y BST (almacenar bit) usa elbit T como una fuente o destino para la operación del bit. Un bit desde los

    registros de los Archivos de Registro pueden ser copiados en el bit T mediantela instrucción SBT y un bit en T puede ser copiado dentro de un registro delArchivo de registros mediante la instrucción BLD.

    • Bit 5 – H: Half Carry FlagHalf Carry es útil en la aritmética BCD.

    • Bit 4 – S: Bit de Signo, S = N ⊕ VEl Bit S es una OR exclusiva entre la bandera negativa N y la bandera de

    desbordamiento V en Complemento a Dos.

    • Bit 3 – V: Bandera de Desbordamiento V en Complemento a DosLa bandera de desbordamiento en Complemento a Dos soporta el complementoa dos.

    • Bit 2 – N: Bandera NegativaLa Bandera Negativa N indica un resultado negativo en una operaciónaritmética o lógica.

  • 8/17/2019 Atmega164p Español

    13/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    • Bit 1 – Z: Bandera del CeroLa bandera del cero indica si un resultado es cero en una operación aritmética ológica.

    • Bit 0 – C: Bandera del Carry

    La bandera del Carry indica un carry en una operación aritmética o lógica.

    Archivo de registros de propósito GeneralEl Archivo de Registros es optimizado por el Juego de instrucciones RISC delAVR.Para lograr la actuación y flexibilidad requerida, los esquemas delentrada/salida se apoyan en los siguientes Archivos de Registros:

    • Un operador de salida de 8 bits y una entrada resultante de 8 bits • Dos operadores de salida de 8 bits y una entrada resultante de 8 bits• Dos operadores de salida de 8 bits y una entrada resultante de 16 bits • Un operador de salida de 16 bits y una entrada resultante de 16 bits 

    La siguiente Figura (6-2) muestra la estructura de los 32 Registros de PropósitoGeneral que trabajan en la CPU.

    La mayoría de las operaciones de instrucciones en el Archivo de Registro tieneacceso directo a todos los registros, y la mayoría de ellos son instrucciones deun ciclo.

    Como se muestra en la figura anterior a cada registro en la memoria de datos sele asigna una dirección, mapeados estos directamente dentro de las 32localidades para el uso del espacio de Datos.

  • 8/17/2019 Atmega164p Español

    14/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Aunque físicamente no son implementados en las localidades de la SRAM, estamemoria provee gran organización flexible para el acceso a estos registros,como los registros punteros X, Y y Z que se usan como índices de cualquierarchivo de registro.

    El registro X, el registro Y y el registro Z

    Los registros R26… R31 tienen algunas funciones adicionales  para uso depropósito general. Estos registros son punteros de 16 bits de dirección paradireccionar indirectamente al espacio de datos.Los tres registros de direccionamiento indirecto X, Y y Z están definidos comose muestra en la figura siguiente.

    Figure 6-3. Los registros X, Y y Z

    En los modos de direccionamiento directo estos registros de dirección tienendesplazamientos fijos, incrementos y decrementos automáticos.

    6.5 Puntero de Pila (Stack Pointer)El Stack–Pointer es usado para almacenar información temporal, paraalmacenar variables locales y para almacenar direcciones de regreso después deuna interrupción o llamado de subrutinas.Los registros del Puntero de Pila siempre apuntan a la parte superior de la pila.Note que la pila es implementada como un crecimiento desde la localidad másalta a la localidad mas baja de la memoria. Esto implica que un comando PUSHdecrementa el Puntero de Pila.El puntero de pila para la SRAM es el área donde las interrupciones ysubrutinas son localizadas. Estos espacios de pila en los datos de la SRAMdeben ser definidos por el programa antes de que cualquier llamado desubrutina sea ejecutado o una interrupción sea habilitada.El puntero de pila debe estar por encima de la localidad 0x0100. El valor inicialdel puntero de pila es la última dirección de la SRAM interna. El puntero depila es decrementado a uno cuando los datos presionan en la pila con lainstrucción PUSH, y este es decrementado por tres cuando los datos llenan lapila con un regreso desde una subrutina RET o de regreso desde unainterrupción RETI.

  • 8/17/2019 Atmega164p Español

    15/377

  • 8/17/2019 Atmega164p Español

    16/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Dependiendo del valor del contador del programa, las interrupciones deben serdeshabilitadas automáticamente cuando los bits Boot Lock (BLB02 o BLB12) sonprogramados.Esta característica mejora la seguridad de software.

    La dirección más baja en el espacio de la memoria de programa está definidapor defecto como vectores de Reset e Interrupción.La lista completa de vectores se muestra en la página 61 del Data Sheet. La listatambién determina los niveles de prioridad de las diferentes interrupciones. Elnivel de prioridad es desde la dirección mas baja a la más alta. El RESET tiene laprioridad más alta y la siguiente es el pedido de interrupción externa (INTO).Los vectores de interrupción pueden ser movidos al inicio de la sección de laparte baja de la Flash por la configuración del bit IVSEL en el MCU del registrode Control (MCUCR). El vector de Reset también puede ser movido al inicio dela sección de la parte mas baja por la programación del fusible BOOTRST.

    Cuando ocurre una Interrupción, el bit I del Habilitador de InterrupcionesGlobales es limpiado y todas las interrupciones son deshabilitadas.El software del usuario puede escribir uno lógico en el bit I para habilitar denuevo las interrupciones.

    Todas las interrupciones habilitadas pueden entonces interrumpir las rutinas deinterrupciones. El bit I es puesto en uno automáticamente cuando regresa deuna interrupción al ser ejecutada la instrucción RETI.Existen básicamente dos tipos de interrupciones. El primer tipo es disparadopor un evento que configura la bandera de interrupción. Para estasinterrupciones, el Contador de Programa es direccionado para el actual Vectorde Interrupción a medida que se ejecuta una rutina de interrupción manual ylimpiada por hardware la correspondiente bandera de interrupción. La banderade interrupción puede también ser limpiada por uno lógico para la posición dela bandera del bit.Si una condición de interrupción ocurre mientras se habilita el bit deinterrupción correspondiente este es limpiado, la bandera de interrupción serápuesto en uno y la interrupción recordará ser siempre habilitada o la bandera eslimpiada por software.

    De igual forma, si una o más condiciones de interrupción ocurren mientras elbit de interrupción es limpiado, la correspondiente bandera de interrupciónserá puesta en uno y la Bandera de Interrupción Global es Habilitada mientrasel bit es uno, y entonces será ejecutada por el orden de prioridad.El segundo tipo de interrupción será disparada mas larga que la condición deinterrupción actual.Si la condición de interrupción desaparece antes que la interrupción seahabilitada, la interrupción no será disparada. Cuando existe una interrupciónen el AVR, esta siempre regresará al programa principal y ejecutará una o másinterrupciones antes de cualquier pedido de interrupción. Note que el Registro

  • 8/17/2019 Atmega164p Español

    17/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    de Estado no es almacenado automáticamente cuando entra una rutina deinterrupción o cuando regresa de la rutina de interrupción. Esto deber ser hechomanualmente por software. Cuando usa la instrucción CLI para deshabilitarinterrupciones, la interrupción será deshabilitada inmediatamente. Ningunainterrupción será ejecutada después de la interrupción CLI, Incluso si ocurresimultáneamente con la instrucción CLI. Los siguientes ejemplos muestrancomo esto puede ser usado para evitar interrupciones durante el tiempo deescritura en la EEPROM.

    Ejemplo del Código en Lenguaje Ensamblador

    In r16, SREG; almacena el valor en SREGcli; deshabilita interrupciones durante la secuencia de tiempossbi EECR, EEMPE ; Comienza la escritura en la EEPROMsbi EECR, EEPEOut SREG, r16 ; almacena el valor del I-bit en el SREG

    Ejemplo del Código en Cchar cSREG;cSREG = SREG; almacena el valor en SREG *//* Deshabilita interrupciones durante la secuencia de tiempos */

     __disable_interrupt();EECR |= (1

  • 8/17/2019 Atmega164p Español

    18/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Durante este periodo de cinco ciclos, el Contador de Programa es guardado enel Stack (Pila). El vector es normalmente un salto para la rutina de interrupción,y este salto toma ciclos de reloj. Si una interrupción ocurre durante la ejecuciónde una instrucción de múltiples ciclos, esta instrucción es completada antes deque la interrupción sea pedida.Si una interrupción es ejecutada ocurre cuando el MCU esta en modo dedescanso, la interrupción ejecuta tiempos de respuesta en incrementos de cincociclos de reloj. Este incremento llega al iniciar los tiempos desde la selección delModo de descanso (sleep).Un retorno desde una rutina de interrupción manual toma cinco ciclos de reloj.Durante estos cinco ciclos de reloj, el Contador de Programa (tres bytes) esabierto desde el Stack, el puntero de Pila es incrementado por tres y el bit I en laconfiguración del SREG.

    7. Memorias del AVR

    7.1 Vista GeneralEsta sección describe las diferentes memorias en el ATmega164P/324P/644P.La arquitectura de los AVR tiene dos espacios de memoria principal, lamemoria de datos y el espacio de memoria de programa.En suma, al ATmega164P/324P/644P le caracteriza una memoria EEPROMpara el almacenamiento de datos.Todos estos tres espacios de memoria son lineales y regulares.

    7.2 Sistema Del Programa de Memoria Flash Reprogramable Interno

    El ATmega164P/324P/644P contiene 16/32/64K bytes en el sistemareprogramable de memoria interno para almacenamiento. Mientras todas lasinstrucciones son de un ancho de 16 o 32 bits, la Flash esta organizada como32/64 x 16. Para seguridad del software, el espacio de memoria de la Flash estádividido en dos secciones, la sección baja de programa (Boot Program) y lasección de Aplicación de Programa. La memoria Flash tiene una duración demás o menos 10.000 ciclos de lectura/escritura. El Contador de Programa delATmega164P/324P/644P es de un ancho de 15/16 bits, en consecuenciadirecciona 32/64K localidades en la memoria de programa.

  • 8/17/2019 Atmega164p Español

    19/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Figura. Mapa de la memoria de programa

    7.3 Memoria De Datos SRAMLa figura de abajo muestra como la memoria SRAM delATmega164P/324P/644P esta organizada. El ATmega164P/324P/644P es unmicrocontrolador complejo con más unidades periféricas que pueden sersoportadas entre la localidad 64 reservada en el código para las instrucciones deentrada y salida.Para los espacios extendidos de E/S desde la localidad $060 a la $FF en laSRAM, sola las instrucciones ST/STS/STD y LD/LDS/LDD pueden ser usadas.

    Las primeras 4.325 localidades en la Memoria de datos direccionan tanto elArchivo de Registro, la Memoria de E/S, la Memoria extendida de E/S y laSRAM de datos interna. Las primeras 32 localidades direccionan el Archivo deRegistro, las 64 siguientes direccionan la SRAM de datos interna. Los cincodiferentes modos de direccionamiento para cubrir la Memoria de Datos son:Directo, Indirecto con desplazamiento, Indirecto, Indirecto con Pre-decrementoy el Indirecto con Post incremento.En el archivo de registro, los registros del R26 al R31 marcan eldireccionamiento indirecto de los punteros de registro.El modo Indirecto con desplazamiento alcanza 63 localidades de dirección

    desde la dirección base dada por los registros Y o Z.

  • 8/17/2019 Atmega164p Español

    20/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Cuando usamos los registros en modo de direccionamiento indirecto con pre-decremento automático y post-incrementos, los registros de dirección X, Y y Zson decrementados o incrementados.

    El trabajo de los 32 registros de propósito general, los64 registros de E/S, losregistros extendidos de E/S y bytes 1024/2048/4096 de la SRAM interna en elATmega164P/324P/644P son todos accesibles a través de estos modos dedireccionamiento.

    Figura. Mapa de la memoria de datos

    7.3.1 Tiempos de Acceso a la Memoria de datosEsta sección describe los tiempos de acceso generales para el acceso interno a lamemoria. El acceso interno a la SRAM de datos funciona en dos ciclos de laCPU como se describe en la figura siguiente.

    Figura. Ciclos de acceso a la SRAM de datos internos

    7.4 Memoria de datos EEPROM

  • 8/17/2019 Atmega164p Español

    21/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    El ATmega164P/324P/644P contiene 512B/1K/2K bytes en la memoria dedatos EEPROM. Está organizado como un espacio de datos separado, en el cualsolo los bytes pueden ser leídos y escritos.

    La EEPROM tiene una resistencia de más o menos 100.000 ciclos deescritura/lectura. El acceso entre la EEPROM y la CPU esta descrito en losiguiente, especificando Registros de Dirección, Registros de datos de laEEPROM y el registro de Control de la EEPROM.

    Para prevenir escritura unidireccional de la EEPROM, una escritura específicadebe proceder de la siguiente forma. Referirse a la descripción del Registro deControl de la EEPROM para detalles de este. Cuando la EEPROM es leída, laCPU es detenida por cuatro ciclos de reloj antes de la siguiente instrucción seaejecutada. Cuando la EEPROM es escrita. La CPU es detenida por cuatro ciclosde reloj antes de que la siguiente instrucción sea ejecutada.

    7.4.2 Prevención de Corrupción en la EEPROMDurante períodos bajos de VCC, los datos de la EEPROM pueden sercorrompidos porque el voltaje de alimentación es también bajo para la CPU y laEEPROM opera apropiadamente.Estos asuntos son los mismos para el nivel del sistema que usa la EEPROM, y lamisma solución del diseño debería ser aplicado. Una alteración de datos en laEEPROM puede ser causada por dos situaciones cuando el voltaje es demasiadobajo. Primero, una secuencia de escritura regular a la EEPROM requiere unmínimo voltaje para operar correctamente. Segundo, la misma CPU puedeejecutar instrucciones incorrectas, si la alimentación es demasiado baja.Una alteración de datos en la EEPROM puede ser fácilmente evitada siguiendolas siguientes recomendaciones:Durante los periodos con insuficiente alimentación de voltaje poner el RESETdel AVR en nivel bajo.Esto se puede hacer mediante una habilitación interna del Brown-Out Reset(BOD).Si un reset ocurre mientras existe una operación de escritura en progreso, laoperación de escritura será completada suministrando el voltaje dealimentación necesario.

    7.5 Memoria de E/STodas las E/S y periféricos del ATmega164P/324P/644P son ubicados en elespacio de E/S. Todas las localidades de entrada pueden ser accedidasmediante las instrucciones LD/LDS/LDD y ST/STS/STD, transfiriendo datosentre los 32 registros de propósito general y los espacios de E/S.Los Registros de E/S con rango entre 0x00 - 0x1F son direccionadas con lasinstrucciones SBI y CBI. En estos registros, el valor de estos bits pueden serverificados mediante el uso de las instrucciones SBIS y SBIC.Cuando usamos los comandos específicos de ENTRADA y SALIDA, lasdirecciones de E/S 0x00 a la 0x3F deberían ser usadas.

  • 8/17/2019 Atmega164p Español

    22/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Cuando direccionamos los registros de E/S como espacios de datos usando lasinstrucciones ST y LD, la localidad 0x20 debe ser añadida a estas direcciones. ElATmega164P/324P/644P es un microcontrolador complejo con muchasunidades periféricas que pueden soportar entre las 64 localidades reservadas enlas instrucciones de Entrada y Salida. Para los espacios extendidos de E/Sdesde la localidad 0x60 a la 0xFF en la SRAM, solo las instruccionesST/STS/STD y LD/LDS/LDD pueden ser usadas.Para compatibilidad con dispositivos futuros, los bits reservados deberían serescritos a cero.Las direcciones reservadas de E/S nunca deben ser escritas. Algunas de lasbanderas de estado son limpiadas por la escritura de un uno lógico en estas.Note que, a diferencia de otros AVRs, las instrucciones CBI y SBI, solo operansobre bits específicos, y pueden además ser usados sobre registros que tienentales banderas de estado. Las instrucciones SCI y CBI trabajan con solo con losregistros de la 0x00 a la 0x1F.

    Los registros de E/S y periféricos pueden ser usados para almacenar cualquierinformación y son particularmente para almacenar variables globales ybanderas de estado.Los registros de E/S de propósito general están entre los rangos de direcciones0x00 a la 0x1F y se usa para su acceso las instrucciones SBI, CBI, SBIS y SBIC

    7.6 Descripción de Registros

    7.6.1 EEARH y EEARL – Los Registros de Dirección de la EEPROM

    • Bits 15:12 – Res: Bits ReservadosEstos bits son reservados en el ATmega164P/324P/644P Y siempre se leencomo cero.

    • Bits 11:0 – EEAR8:0: Dirección de la EEPROMLos registros de dirección de la EEPROM –EEARH y EEARL- especifican ladirección de la EEPROM en los 4K bytes de espacio de la EEPROM. Los bytesde datos de la EEPROM son direccionables linealmente entre 0 y 4096.El valor inicial de EEAR no esta definido. Un valor propio debe ser escrito antesUn valor correcto debe ser escrito antes de que el EEPROM pueda ser accedido.

    7.6.2 EEDR – EL Registro de Datos de la EEPROM 

  • 8/17/2019 Atmega164p Español

    23/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    • Bits 7:0 – EEDR7:0: Datos de la EEPROMPara la operación de la escritura en la EEPRM, el registro EEDR contienen losdatos a ser escritos para la EEPROM en las direcciones dadas por el registroEEAR. Para la operación de lectura de la EEPROM, la EEDR contiene la lecturade datos fuera de la EEPROM en los registros dados por EEAR.

    7.6.3 EECR – El Registro de Control de la EEPROM 

    • Bits 7:6 – Res: Bits ReservadosEstos bits son reservados en el ATmega164P/324P/644P Y siempre se leencomo cero.

    • Bits 5:4 –  Los Bits de Modo de Programación de la EEPROM: EEPM1EEPM0La configuración del bit de modo de programación de la EEPROM define cual

    acción del programa será disparada al EEPE.Esto es posible para la programación de datos en una operación atómica (borrael valor antiguo y el nuevo valor del programa) o para dividir la operación delectura y escritura en dos diferentes operaciones.Los tiempos de programación para los diferentes modos se muestran en latabla 7-1. Mientras EEPMn está en uno, cualquier escritura en la EEPMn seráignorada. Durante el reset, los bits de la EEPMn serán reseteados a 0b00 amenos que el programa de la EPROM este ocupado.

    • Bit 3 – EERIE: Habilitación de interrupciones de la EEPROM

  • 8/17/2019 Atmega164p Español

    24/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Escribiendo a uno el bit EERIE se habilita la interrupción de la EEPROM si el bitdel SREG es uno. Escribiendo cero en EERIE se deshabilita la interrupción. Lainterrupción de la EEPROM genera una interrupción constante cuando EEPE eslimpiado.

    • Bit 2 – EEMPE: Habilitación del Programa del Maestro de la EEPROM

    El bit EEMPE determina si la configuración de EEPE a uno causa que laEEPROM sea escrita.

    Cuando EEMPE es uno, configurando EEPE durante cuatro ciclos del relojescribiría el dato a la EEPROM al seleccionar la dirección. Si EEMPE es cero, laconfiguración de EEPE no tendría efecto. Cuando EMPE ha sido escrito a unopor software, hardware limpiamos el bit a cero después de cuatro ciclos dereloj. Ver la descripción del bit de EEPE para un procedimiento de escritura de

    la EEPROM.

    • Bit 1 – EEPE: Habilitando la Programación de la EEPROM

    La habilitación de escritura de la señal EEPE de la EEPROM es la escritura de lahabilitación de la EEPROM.Cuando la dirección y el dato son correctamente configurados, el bit EEPEdebería ser escrito a uno para un valor de escritura dentro de la EEPROM. El bitEEMPE debería ser uno antes de que un uno lógico sea escrito a EEPE, con locuál no tomaría lugar la escritura de la EEPROM. El siguiente procedimiento

    sería escribiendo la EEPROM(los pasos 3 y 4 no son esenciales):

    1. Esperar hasta que EEPE llegue a ser cero.2. Esperar hasta que SPMEN en SPMCSR llegue a ser cero.3. Escribir la nueva dirección de la EEPROM a EEAR (opcional).4. Escribir el nuevo dato de la EEPROM a EEAR (opcional).5. Escribir uno lógico al bit EEMPE mientras se escribe cero a EEPE en EECR.6. Dentro de cuatro ciclos de reloj después configurar EEMPE, escribir unológico a EEPE.La EEPROM no puede ser programada durante la escritura del CPU a lamemoria Flash. El software chequearía que la programación de la Flash escompletada antes de inicializar la nueva escritura de la EEPROM.El paso 2 es solo relevante si el software contiene el Boot Loader permitiendo alCPU la programación de la Flash. Si la Flash nunca comienza la actualizaciónpor el CPU, el paso 2 seria omitido. Ver ―Programación de la Memoria‖ en laPág. 293 en el datasheet.Precaución: Una Interrupción entre los paso 5 y 6 haría que el ciclo de escriturafalle, desde que la EEPROM es interrumpida por otro acceso a la EEPROM, elRegistro EEAR o EEDR seria modificado, causando que el acceso a laInterrupción de la EEPROM falle. Esto es recomendado para tener la BanderaGlobal de Interrupciones limpia durante todos los pasos para evitar estosproblemas.

  • 8/17/2019 Atmega164p Español

    25/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Cuando el tiempo de acceso a la escritura ha finalizado, el bit EEPE es limpiadopor software. El software del usuario puede esperar por un cero antes de laescritura del siguiente byte. Cuando EEPE ha sido puesto en uno, el CPU esDetenido por dos ciclos antes de que la siguiente instrucción es ejecutada.

    • Bit 0 – EERE: Habilitación de Lectura de la EEPROMLa lectura de la habilitación de la señal EERE de la EEPROM es leída parahabilitar la EEPROM. Cuando la dirección correcta es configurada en el registroEEAR, el bit EERE seria escrito con uno lógico en el disparo de lectura de laEEPROM. El acceso de la lectura de la EEPROM toma una instrucción, y larespuesta del dato es disponible inmediatamente. Cuando la EEPROM es leída,la CPU es detenida por cuatro ciclos antes que la siguiente instrucción seaejecutada. El usuario debería verificar el bit EEPE antes de empezar laoperación de lectura. Si la escritura de la operación esta en progreso, no seríaposible leer la EEPROM, o cambiar el Registro EEAR-La Calibración del Oscilador es usada al tiempo de acceso a la EEPROM- LaTabla 7-2 en la página 25 del datasheet lista el tiempo típico de programaciónpara el acceso a la EEPROM desde el CPU.

    El siguiente código de ejemplo muestra uno en asembler y otro en C paraescritura de la EEPROM. Los ejemplos asumen que las interrupciones soncontroladas (por desabilitación de las interrupciones globales). El ejemplotambién asume que la parte baja de la memoria Flash esta presente en elsoftware. Si cada código esta presente, la EEPROM escribe funciones y tambiénespera por cualquier comando de finalización SPM.

  • 8/17/2019 Atmega164p Español

    26/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    El siguiente código muestra un ejemplo en assembler y otro en C para lecturade la EEPROM. Los ejemplos asumen que las interrupciones son controladastambién que las interrupciones no ocurrirían durante la ejecución de estasfunciones.

  • 8/17/2019 Atmega164p Español

    27/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    7.6.4 GPIOR2 – General Purpose I/O Register 2

    7.6.5 GPIOR1 – General Purpose I/O Register 1

    7.6.6 GPIOR0 – General Purpose I/O Register 0

  • 8/17/2019 Atmega164p Español

    28/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    8. Sistema de Reloj y Opciones de Reloj

    8.1 Sistemas de Reloj y sus Distribuciones

    La Figura 8-1 presenta los principales sistemas de reloj en el AVR y sudistribución. Todos los relojes no necesitan ser activados a un tiempo dado.Para reducir el consumo de energía, los relojes de los módulos no empiezan aser usados cuando están detenidos por uso de diferentes modos sleep, como sedescribe en ―Power Management and Sleep Modes‖ en la página 42 deldatasheet. Los sistemas de relojes se describen a continuación en la figura 8-1.

    8.1.1 CPU Clock – clk CPUEl reloj del CPU es dividido en partes del sistema concerniente a la operacióndel core AVR.Los ejemplos de cada módulo son Archivos de Registros de Propósito General,el Registro de Estado y la memoria de datos sosteniendo el Puntero de Pila.Deteniendo el reloj del CPU inhibe el core desde el funcionamiento general delas operaciones y cálculos.

    8.1.2 I/O Clock – clk E/SLa E/S de reloj es usada por la mayoría de los módulos de E/S,Timer/Counter, SPI, y USART.

  • 8/17/2019 Atmega164p Español

    29/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    El reloj de E/S es también es usado por el modulo de Interrupciones Externas,pero note que algunas interrupciones externas son detectadas por flancosasíncronos, permitiendo que cada Interrupción sea detectada si el reloj de E/Ses detenido. También note que la detección de la condición de inicio en elmódulo USI es llevado a cabo asincrónicamente cuando el clk de E/S esdetenido. El reconocimiento de la dirección de TWI en todos los modos sleep.

    8.1.3 Flash Clock – clk FLASHEl reloj de la Flash controla la operación de la interfase Flash. El reloj de la Flashes usualmente activado simultáneamente con el reloj del CPU.

    8.1.4 Asynchronous Timer Clock – clkASY

    El Asynchronous Timer clock permite al Timer/Counter asíncrono ser contadodirectamente desde un reloj de cristal externo de 32 kHz.

    El reloj dominante permite usar este Timer/Counter como contador en tiemporeal cuando el dispositivo esta en modo sleep.

    8.1.5 Reloj del ADC – clkADCEl ADC es proporcionado con un reloj dominante dedicado. Esto permitedetener el CPU y los relojes de E/S. esto reduce el ruido generado por loscircuitos digitales. Esto da una mayor Presición a la conversión ADC.

    8.2 Fuentes de RelojEl dispositivo tiene las siguientes opciones de fuente de reloj, seleccionando por

    bits de Fusible de la Flash como se muestra en la Tabla 8-1. El reloj desde lafuente de selección es entrada al generador de reloj del AVR.

    8.2.1 Fuentes de Reloj por DefectoEste dispositivo es enviado con un oscilador interno de 8.0 MHz y con losfusibles CKDIV8 programados, resultando en un sistema de reloj de 1.0 MHz.El inicio del tiempo es puesto al máximo y el periodo de tiempo fuerahabilitado (CKSEL = "0010", SUT = "10", CKDIV8 = "0"). Las configuraciones por

    defecto aseguran que todos los usuarios puedan hacer sus fuentes de relojdeseadas usando cualquier programación de interfase.

  • 8/17/2019 Atmega164p Español

    30/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    8.2.2 Inicio de la secuencia de RelojCualquier fuente de reloj necesita suficiente Vcc para comenzar la oscilación yun número mínimo de ciclos de oscilación antes de que pueda considerarseestable. Para aseguran un suficiente Vcc, el dispositivo envía un reset internocon un tiempo de demora (t out) después el dispositivo realiza un reset para

    todas las otras fuentes de reset. La demora es el tiempo desde el oscilador delWatchdog y el número de ciclos en demora es puesto por los bits de fusiblesSUTx y CKSELx. La selección de retardos se muestra en la Tabla 8-2. Lafrecuencia del Oscilador del Watchdog es el voltaje dependiente como semuestra en ―Características Típicas‖. 

    El propósito general de los retardos es guardar al AVR en reset hasta quesuplido con el mínimo voltaje Vcc. El retardo no monitorea el voltaje actual yesto requeriría de un retardo mas prolongado que el tiempo de subida de Vcc.Si esto no es posible, el interno o externo Brown-Out Detection circuit deberíaser usado. El circuito BOD aseguraría suficiente Vcc antes que se realice el reset,el tiempo de retardo pueda ser deshabilitado. Deshabilitando el retardo sinutilizar el Brown-Out Detection circuit no sería recomendado. El oscilador

    requiere de oscilaciones para un número mínimo de ciclos antes de que el relojsea considerado estable. El contador de onda interna monitorea la salida dereloj del oscilador y guarda el reset interno activado para un número dado deciclos de reloj. El reset es luego realizado y el dispositivo empieza a ejecutarse.El tiempo de inicio recomendado para el oscilador es dependiente del tipo dereloj y varía desde 6 ciclos aplicados por un reloj externo de 32K para una bajafrecuencia de cristal. La secuencia de inicio para el reloj incluye ambas el tiempode retardo y el tiempo de inicio cuando el dispositivo empieza desde reset.Cuando empieza desde el modo Power-save o Power-down, Vcc es asumidopara estar con el nivel suficiente y solo el tiempo de inicio es incluido.

    8.2.3 Conexiones de la Fuente de RelojLos pines XTAL1 y XTAL2 son entradas y salidas, respectivamente, de unamplificador invertido con el cual puede ser configurado para usos comooscilador On-Chip, como se muestra en la Figura 8-2- Un cristal de quartz oresonador cerámico puede ser usado.C1 y C2 debería siempre ser iguales para ambos cristales y resonantes. El valoroptimo de los capacitores de pende del cristal y del resonador usados, lacantidad de perdida de capacitancia, y el ruido electromagnético del ambientePara resonantes cerámicos, el valor del capacitor es dado por el fabricante.

  • 8/17/2019 Atmega164p Español

    31/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    8.3 Oscilador del Cristal de Baja EnergíaEste oscilador del Cristal es de baja energía, con voltaje reducido en la salida delXTAL2. Esto da un bajo consumo de energía, pero no es capaz de manejar otrassalidas de reloj, y puede ser más susceptible al ruido en ambientes ruidosos.El oscilador de Baja Energía puede operar en tres modos diferentes, cada uno

    optimizado para un rango de frecuencia. El modo de operación es seleccionadopor los fusibles CKSEL3. Como se muestra en la figura 8-3.

    El fusible CKSEL0 junto con el SUT1…0 seleccionan el inicio de tiempo como semuestra en la Tabla 8-4.

  • 8/17/2019 Atmega164p Español

    32/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    8.4 Ajuste del Oscilador del CristalEl Oscilador del cristal es ajustado, conThis Crystal Oscillator is a full swing oscillator, with rail-to-rail swing on theXTAL2 output.Este es muy usado para controlar otras salidas de reloj y ambientes ruidosos. Elconsumo de corriente es más alto que ‖Low Power Crystal Oscillator‖  en lapágina 32 del data sheet.Note que el ajuste del Oscilador del Cristal solo funciona para Vcc = 2.7 - 5.5voltios.Alguna guía inicial para escoger los capacitores para ser usados con el cristal

    están dados en la tabla 8.6. El cristal debería ser conectado como se describe en‖Clock Source Connections‖ en la página 31 del data sheet. El modo de operación es seleccionado mediante los fusibles CKSEL3..1 como semuestra en la tabla8-5.

  • 8/17/2019 Atmega164p Español

    33/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    8.5 Oscilador del Cristal de Baja Frecuencia

    La baja frecuencia del Oscilador del Cristal es optimizada para usar un cristalde 32.768 KHz. Cuando seleccionamos el cristal, la capacitancia de carga y laResistencia en serie equivalente del cristal, ESR sería tomado en consideración.Ambos valores son especificados por el fabricante. El oscilador delATmega164P/324P/644P es optimizado para muy bajo consumo de energía, y

    además cuando seleccionamos los cristales, ver la tabla 8-7, para máximo ESRse recomienda cristales de 9pF y 12.5 pF.

  • 8/17/2019 Atmega164p Español

    34/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Los osciladores de baja frecuencia del cristal proporciona una capacitancia decarga interna de cristales típicos de 8.0 pF. Los cristales con recomendaciones de8.0 pF pueden ser quitados como se muestra en la figura 8-3.

    Los cristales que especifican una capacitancia de carga CL mas alta que 8.0 pF,requieren capacitores externos como se describe en la figura 8-2.Para encontrar una capacitancia de carga adecuada para un cristal de 32.768,por favor consulte el cristal del datasheet. Cuando este oscilador es

    seleccionado, empieza el tiempo que es determinado por los fusibles SUT yCKSEL0 como se muestra en la figura de la Tabla 8-8.

    8.6 Calibrar el Oscilador Interno RCPor defecto, el Oscilador Interno RC proporciona un reloj de aproximadamente8MHz. Junto con el voltaje y temperatura dependiente, este reloj puede sercalibrado con mucha precisión por el usuario. Ver la tabla 27-4 ―Velocidad delOscilador Interno‖ para mas detalles.El dispositivo es enviado con el fusible CKDIV8 programado. Ver ―Prescaladordel Sistema de Reloj‖ para más detalles. Este reloj puede ser seleccionado como sistema de reloj por programación delfusible CKSEL como se muestra en la Tabla 8-9. Si es seleccionado, esto operaríacon componentes no externos. Durante el reset, el hardware carga el valor decalibración de la pre-programación en el registro OSCCAL y por esoautomáticamente calibra el oscilador RC. La precisión de esta calibración esmostrada como calibración de fábrica en la tabla 27-4.

  • 8/17/2019 Atmega164p Español

    35/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Para cargar el registro OSCCAL desde SW, ver ―OSCCAL- Registro deCalibración del Oscilador‖ en la página 40 del datasheet, esto es posible paraobtener una mayor precisión de calibración que la usada por fabrica.La precisión de esta calibración es mostrada como calibración de usuario en laTabla 27-4.

    Cuando este Oscilador es usado como el reloj del chip, el oscilador delWatchdog todavía sería usado por el Watchdog Timer para el Reseteo a tiempofuera. Para mayor información del valor de calibración en la pre-programación,ver la sección ―Byte de Calibración‖ en la página 296 del datasheet.  

    Cuando este Oscilador es seleccionado, empieza tiempos que son determinadospor los fusibles SUT como se muestra en la Tabla 8-10 en la página 36 deldatasheet.

    8.7  Oscilador Interno de 128 kHzEl Oscilador Interno de 128 KHz es un oscilador de bajo consumo provisto conun reloj de 128 KHz. La frecuencia nominal es 3V a 25 °C. Este reloj puede serseleccionado como el sistema de reloj programando los fusibles CKSEL a ―0011‖

    como es mostrado en la Tabla 8-11.

    Cuando esta fuente de reloj es seleccionada, los tiempos de inicio sondeterminados por los fusibles SUT como se muestra en la Tabla 8-12.

  • 8/17/2019 Atmega164p Español

    36/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    8.8 Reloj ExternoPara manejar el dispositivo desde una fuente de reloj externo, XTAL1 deberíaser manejado como se muestra en la Figura 8-4. Para manejar un dispositivocon reloj externo, los fusibles CKSEL serían programados a ―0000‖. 

    Cuando esta fuente de reloj es seleccionada, los tiempos de inicio sondeterminados por los fusibles SUT como se muestra en la Tabla 8-14.

    Cuando se aplica un reloj externo, es requerido evitar cambios súbitos en lafrecuencia de reloj aplicada para asegurar la estabilidad de operación del MCU.La variación en frecuencia de más del 2% desde un ciclo de reloj al siguientepuede tener una conducta impredecible. Si los cambios de más del 2% es

    requerido, asegurarse que el MCU es guardado en el Reset durante los cambios.

  • 8/17/2019 Atmega164p Español

    37/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Note que el Prescalador del Sistema de Reloj puede ser usado paraimplementar cambios de ejecución de tiempo de la frecuencia del reloj internomientras todavía asegura una operación estable. Referirse a ―prescalador delsistema de Reloj‖ en la Pág. 38 del datasheet para más detalles.

    8.9 Oscilador del Timer/CounterEl ATmega164P/324P/644P usa el mismo tipo de oscilador del cristal paracristal de baja frecuencia y el oscilador del Timer/Counter. Ver ―Oscilador delCristal de baja frecuencia‖ en la página 34 del datasheet para mayores detalles.El dispositivo puede operar con Timer/Counter desde un cristal con frecuenciaexterna de 32.768 KHz o una fuente de reloj externa. Ver ―Conexiones del laFuente de Reloj‖ en la página 31 del datasheet para mayores detalles.Aplicando una fuente de reloj externa a TOSC1 puede ser hecho si EXTCLK enel Registro ASSR es escrito con uno lógico. Ver ―el registro de comparación desalida B que contiene valores de 8-bit que continuamente compara con el valorde contador (TCNT2). Esto puede ser usado para generar una Interrupción decomparación a la salida, o generar una forma de onda a la salida en el pinOC2B‖ en la página 157 del datasheet. 

    8.10 Buffer del Reloj de SalidaEl dispositivo puede ser salida del sistema de reloj en el pin CLKO. Al habilitarla salida, el fusible CKOUT ha sido programado. Este modo es convenientecuando el reloj del chip es usado para manejar otros circuitos en el sistema. Elreloj también sería una salida durante el reset, y la operación normal del pin deE/S sería alterada cuando el fusible es programado. Ninguna fuente de reloj,incluyendo el Oscilador interno RC, puede ser seleccionado cuando el reloj essalida en CLKO. Si el prescalador del Sistema de Reloj es usado, esto divide elsistema de reloj que es salida.

    8.11 Prescalador de Sistema de RelojEl ATmega164P/324P/644P tiene un Prescalador del sistema de reloj y elsistema de reloj puede ser dividido por configuración de ―CLKPR-RegistroPrescalador del reloj‖ en la página 40 del datasheet. Esto puede ser usado paradecrementar la frecuencia del sistema de reloj y el consumo de energía cuandoel requerimiento para procesamiento en energía es bajo. Esto puede ser usadocon todas las opciones de fuente de reloj, y esto afectaría la frecuencia de relojdel CPU y todos los periféricos asíncronos clkI/O, clkADC, clkCPU, and clkFLASH sondivididos por factores como se muestra en la Tabla 8-15 en la página 41 deldatasheet.Cuando se cambia entre las configuraciones del prescalador, el prescalador delsistema de reloj asegura que no ocurrían fallas técnicas en el sistema de reloj.Esto también asegura que la frecuencia no es inmediatamente más alta que lafrecuencia de reloj correspondiente a las configuraciones previas, o la frecuenciacorrespondiente a configuraciones nuevas.El contador de onda que implementa el Prescalador corre a la frecuencia nodividida del reloj, con lo cual puede ser más rápido que la frecuencia de relojdel CPU. Esto no es posible para determinar el estado del prescalador si esto

  • 8/17/2019 Atmega164p Español

    38/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    sería leíble, y el tiempo exacto que toma el cambio desde una división de reloja otra que no puede ser exactamente predefinida. Desde el tiempo que el valorde CLKPS es escrito, esto toma entre T1 + T2 y T1 + 2*T2 antes de que la nuevafrecuencia de reloj sea activada. En este intervalo, la activación de 2 flancos parael reloj son producidos. T1 es el periodo previo del reloj, y T2 es el periodocorrespondiente a la configuración del nuevo prescalador.Para evitar cambios unidireccionales de la frecuencia de reloj, un procedimientode escritura especial seria el siguiente para cambiar los bits CLKPS:

    1. Escribir en el prescalador del reloj el bit de habilitación de cambio (CLKPCE)a uno y todos los otros bits en CLKPR a cero.2. Durante cuatro ciclos, escribir el valor deseado a CLKPS mientras se escribe acero CLKPCE.

    Las Interrupciones serian deshabilitadas cuando se carga las configuracionesdel Prescalador para estar seguros que el procedimiento de escritura no seainterrumpido.

    8.12 Descripción de Registros8.12.1 OSCCAL – Registro de Calibración de Oscilador

    • Bits 7:0 – CAL7:0: Valor de Calibración del OsciladorEl Registro de Calibración del Oscilador es usado para la calibración delOscilador Interno RC y remover la variación de procesos desde la frecuencia deloscilador. El valor de calibración pre-programado es automáticamente escritoen este registro durante el reset del chip, dando la frecuencia de calibración delfabricante como se especifica en la Tabla 27-4 en la página 330 del datasheet. Elsoftware de aplicación puede escribir en este registro para cambiar la frecuenciadel oscilador. El oscilador puede ser calibrado a frecuencias como es especificaen la Tabla 27-4 en la página 330. La calibración fuera del rango no esgarantizada.Note que este oscilador es usado al tiempo de acceso de escritura en laEEPROM y la Flash, y estos tiempos de escritura serían afectados. Si laEEPROM y la Flash son escritas, no calibrar a más de 8.8 MHz. Por otra parte, laescritura de la EEPROM o la Flash puede fallar.El bit CAL7 determina el rango de operación para el oscilador. Configurandoeste bit a 0 da el rango de frecuencia más bajo, en otras palabras configurandoOSCCAL = 0x7F da la frecuencia más alta que OSCCAL = 0x80.Los bits CAL6..0 son usadas para modular la frecuencia dentro del rangoseleccionado. La configuración de 0x00 da la frecuencia más baja en este rango,y configurando 0x7F da la frecuencia mas alta en el rango.

  • 8/17/2019 Atmega164p Español

    39/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    8.12.2 CLKPR – Registro Prescalador del Reloj

    • Bit 7 – CLKPCE: Habilitación de cambio del Prescalador del RelojEl bit CLKPCE sería escrito a uno lógico al habilitar el cambio de los bitsCLKPS. El bit CLKPCE es solo actualizado cuando los otros bits en CLKPR sonsimultáneamente escritos a cero. CLKPCE es limpiado por hardware cuatrociclos después de que es escrito o cuando los bits CLKPS son escritos.Reescribiendo el bit CLKPCE dentro del periodo de tiempo fuera, no limpiaríael bit CLKPCE.

    • Bits 3:0 – CLKPS3:0: Bits de Selección del Prescalador del Reloj 3 – 0Estos bits definen el factor de división entre la fuente de reloj seleccionada y elsistema de reloj interno. Estos bits pueden ser escritos corriendo el tiempo ovariando la frecuencia del reloj en las aplicaciones requeridas. Cuando eldivisor divide en entrada del reloj Maestro del MCU, la velocidad para todoslos periféricos asincrónicos son reducidas cuando el factor de división es usado.Los factores de división están dados en la Tabla 8-15 de la página 41 dedatasheet.El fusible CKDIV8 determina el valor inicial de los bits CLKPS. Si CKDIV8 esdesprogramado, los bits CLKPS serían reseteados a ―0000‖. Si CKDIV8 es

    programado, los bits CLKPS son reseteados a ―0011‖, dando un facto r dedivisión de 8 para el inicio. Esto debería ser usado si la fuente de relojseleccionada tiene una frecuencia más alta que la máxima frecuencia de losdispositivos presentes en condiciones de operación.Note que cualquier valor puede ser escrito en los bits CLKPS indiferentementede la configuración de los fusibles CKDIV8. El software de aplicaciónaseguraría que un factor de división suficiente sea escogido si la fuente de relojseleccionada tiene una frecuencia más alta que la frecuencia máxima de losdispositivos presentes en condiciones normales. El dispositivo es enviado con elFusible CKDIV8 programado.

    9. Power Management y Modo Sleep

    9.1 Revisión General

    El modo sleep habilita la aplicación para cerrar los módulos no usados en elMCU, por eso ahorra energía.El AVR proporciona varios modos sleep permitiendo al usuario adaptar elconsumo de energía para la aplicación requerida.Cuando habilita, el Brown-out Detector  (BOD) activa el monitoreo de la

    alimentación de voltaje durante los periodos de descanso (sleep).Además ahorra energía, es posible desactivar el BOD en algunos modos sleep.

  • 8/17/2019 Atmega164p Español

    40/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    9.2 Modo Sleep (Descanso)

    La siguiente figura muestra los diferentes sistemas de reloj en elATmega164P/324P/644P, y su distribución. La figura es útil en la selección de

    un apropiado modo de sleep.

    La tabla 9-1 muestra los diferentes modos sleep, su forma de despertarse y lacapacidad de deshabilitar el BOD:

  • 8/17/2019 Atmega164p Español

    41/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Notas:1.  Solo recomendado con cristal externo o resonador como fuente de reloj.2.

     

    Si el Timer/Contador2 está corriendo en modo asincrónico.3.  Para el INT0, solo interrupción de nivel.

    Para entrar a cualquiera de los modos sleep, el bit SE en el SMCR debe serescrito en uno lógico y una instrucción SLEEP debe ser ejecutada. Los bits SM2,SM1, y SM0 en el registro SMCR seleccionan cual modo de descanso seráactivado mediante la instrucción SLEEP.Si ocurre la habilitación de una interrupción mientras el MCU está en modosleep, el MCU despierta. El MCU es parado durante cuatro ciclos además deltiempo de arranque, ejecuta la rutina de interrupción, y retoma la ejecución dela siguiente instrucción SLEEP.El contenido del Archivo de Registro y la SRAM son inalterables cuando eldispositivo despierta del descanso (sleep).Si ocurre un reset durante el modo sleep, el MCU despierta y ejecuta desde elVector de Reset.

    9.3 Desabilitación del BOD

    Cuando el Brown-out Detector (BOD) es habilitado por los fusibles BODLEVEL,el BOD es activado para monitorear la alimentación de voltaje durante elperiodo de descanso (sleep). Para ahorrar energía, es posible deshabilitar elBOD por software para algunos modos sleep. El consumo máximo del modosleep estará entonces en el mismo nivel como cuando BOD es deshabilitadoglobalmente por los fusibles.

    Si el BOD es deshabilitado por software, la función del BOD es apagadainmediatamente después de entrar en modo de descanso. Una vez quedespierta del modo sleep, el BOD es activado automáticamente otra vez.Esto asegura el funcionamiento seguro en caso de que el nivel de VCC caedurante el período de descanso.

    Cuando el BOD ha sido deshabilitado, el tiempo de arranque desde el modo dedescanso será aproximadamente 60us para asegurar que el BOD esté trabajandocorrectamente antes de que el MCU continúe ejecutando el código.La desabilitación del BOD es controlada por el bit 6, BODS (BOD Sleep) en elregistro MCUCR. Al escribir uno en este bit se apagará el BOD en el pertinentemodo sleep, mientras el BOD esté en cero este estará activo.Por defecto el BOD está en cero, por lo que siempre está activado.

    9.4 Modo Idle

    Cuando los bits SM2..0 son escritos como 000, la instrucción SLEEP hará que elMCU entre en modo Idle, deteniendo el CPU pero permitiendo que el SPI,USART, Comparador Análogo, ADC, Interfaz Serial de 2 wire (2 hilos),

  • 8/17/2019 Atmega164p Español

    42/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    Timer/Contador, Watchdog y el sistema de interrupciones continúefuncionando.Este modo básicamente detiene el reloj del CPU y el reloj de la Flash, mientraspermite que los otros relojes funcionen.El modo Idle le permite al MCU que se despierte de las interrupcionesactivadas externas así como el desbordamiento del Timer y las interrupcionesde transmisión Completas del USART.Si despierta desde la interrupción del Comparador Análogo, el ComparadorAnalógico puede activarse por configuración del bit ACD en el Controlcomparador y Registro de estado – ACSR. Esto reducirá el consumo de energíaen el modo Idle. 

    SI el ADC es habilitado una conversión comenzará automáticamente cundo seingresa a este modo.

    9.5 Modo de Reducción de Ruido del ADC

    Cuando los bits SM2..0 son escritos como 001, la instrucción SLEEP hace que elMCU entre en el Modo de Reducción de ruido del ADC, deteniendo al CPUpero permitiendo al ADC, las interrupciones externas, la Interfaz Serial de 2hilos(2 wire), Timer/Contador2 y Watchdog continuar funcionando (si eshabilitado). Este modo básicamente detiene el reloj de las entradas y salidas, elreloj del CPU y el reloj de la FLASH, mientras permite que los otros relojesestén funcionando.Esto mejora el ambiente de ruido del ADC, permitiendo alta resolución en lasmedidas.Si el ADC es habilitado, una conversión comienza automáticamente cuando seentra en este modo. Aparte de la Interrupción de Conversión Completa delADC, solo un reset externo, un reset del sistema del Watchdog, unaInterrupción del Watchdog, un reset del Brown-out, una interrupción de laInterfaz serial de 2 hilos (2 wire), una interrupción externa en INT7:4 o uncambio de interrupción pueden despertar al MCU desde el modo de reducciónde ruido del ADC.

    9.6 Modo Power-down

    Cuando los bits SM2..0 son escritos como 010, la instrucción SLEEP hace que elMCU entre en el Modo Power-down. En este modo, el oscilador externo esdetenido, mientras la interrupción externa, la interfaz serial de 2 wire (2 hilos), yel Watchdog continúan operando. Solo un reset externo, un reset del Watchdog,un reset del Brown-out, una interrupción externa en INT7:4, una interrupciónen INT2:0 o un cambio de interrupción pueden despertar al MCU.Este modo de descanso básicamente detiene todos los relojes generados,permitiendo operar solo el módulo asincrónico.Note que si el nivel del disparo de una interrupción es usado para despertardesde el modo power-down, el nivel cambiado debe sostenerse durante algún

  • 8/17/2019 Atmega164p Español

    43/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    tiempo para despertar al MCU. Cuando despierta del modo Power-down, hayun retardo antes de despertarse y continúa hasta que despierte totalmente. Estopermite al reloj reiniciar y llegar a estabilizarse antes de que haya sido detenido.El periodo para despertarse esta definido por el fusible CKSEL que define elperiodo de reset.

    9.7 Modo Power-save

    Cuando los bits SM2..0 son escritos como 011, la instrucción SLEEP hace que elMCU entre en el Modo Power-save. Esto modo es idéntico al modo Power-down, con una excepción: Si el Timer/contador2 es habilitado, este funcionaradurante el descanso. Este dispositivo puede despertarse desde undesbordamiento del Timer o una Salida del Comparador desde elTimer/Contador2 si los bits correspondientes a la interrupción delTimer/Contador2 son habilitadas en TIMSK2, y el bit en la interrupción global

    en SREG es puesta en uno.

    Si el Timer /Contador2 no está corriendo, se recomienda usar este modo.El Timer/Contador2 puede ser contado sincrónicamente y asincrónicamente enel Modo Power-save. Si el Timer/contador2 no está usando el reloj asincrónico,el oscilador del Timer/Contador es detenido durante el descanso (sleep). Si elTimer/contador2 no está usando el reloj sincrónico, la fuente del reloj esdetenido durante el descanso (sleep). Note que aun cuando el reloj síncronoestá corriendo en Power-save, este reloj sólo está disponible para elTimer/Counter2.

    9.8 Modo Standby

    Cuando los bits SM2..0 son escritos como 110 y un cristal/resonador externo esseleccionado, la instrucción SLEEP hace que el MCU entre en Modo Standbye.Este modo es idéntico al Power-Down con la excepción de que el Oscilador eskept running. En el modo Standby, el dispositivo se despierta en 6 ciclos dereloj.

    9.9 Modo Standby Extendido

    Cuando los bits SM2..0 son escritos como 111 y un cristal/resonador externo esseleccionado, la instrucción SLEEP hace que el MCU entre en el Modo Standbyeextendido. Este modo es idéntico al modo Power-save con la excepción que elOscilador es kept running.  En el modo Stanbye Extendido, el dispositivo sedespierta en 6 ciclos de reloj

  • 8/17/2019 Atmega164p Español

    44/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    9.10 Registro Reducción de Energía

    El Registro Reducción de Energía (PRR), proporciona un método para detenerlos periféricos individuales para reducir el consumo de energía.El estado de la corriente de los periféricos es congelada y los registros de E/S no

    pueden ser leídos o escritos.Los recursos usados por el periférico cuando el reloj se detiene permaneceránocupados, por está razón los periféricos deben en la mayoría de los casos serdeshabilitados antes de que se detenga el reloj.Al despertarse un periférico, el cual ha sido limpiado el bit en PRR, pone a losperiféricos en igual estado como antes de cerrarse.

    El cierre de los periféricos puede ser usado en modo Idle,  Modo Activo parareducir significantemente el sobre consumo de energía. En otros modos dedescanso, el reloj es ya es detenido.

    9.11 Minimización del Consumo de Energía

    Hay varios problemas a considerar cuando se trata de minimizar el consumo deenergía en un sistema controlado por un AVR. En general, los modos dedescanso deben ser usados tanto como sea posible, y el modo sleep debe serseleccionado dependiendo de la función del dispositivo que este operando.Todas las funciones no necesitan ser deshabilitadas. En particular, los módulossiguientes necesitan una consideración especial cuando tratan de obtener el másbajo consumo posible.

    9.11.2 Conversión Análoga a Digital

    Si habilitó, el ADC será habilitado en todos los modos de descanso. Paraahorrar energía, el ADC debe ser deshabitado antes de entrar en cualquiermodo sleep. Cuando el ADC es apagado y encendido otra vez, la siguienteconversión será una conversión extendida.

    9.11.2 Comparador Análogo

    Cuando entra en modo Idle, el comparador Análogo debe ser deshabilitado sino se está usando. Cuando entra en el modo de Reducción de Ruido del ADC,el comparador Análogo debe ser deshabilitado. En otros modos sleep, elComparador Análogo es automáticamente deshabilitado. Sin embargo, si elComparador Análogo es configurado para usar la Referencia del Voltaje Internocomo entrada, el Comparador Análogo debe ser deshabilitado en todos losmodos de descanso. De otro modo, la Referencia de voltaje Interna deberá serhabilitada, independientemente del modo de descanso.

  • 8/17/2019 Atmega164p Español

    45/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    9.11.3 Brown-out Detector

    Si el Brown-out Detector no es necesario para la aplicación, este modo debe serapagado. Si el Brown-out Detector es habilitado por los fusibles BODLEVEL,este será habilitado en todos los modos, y además, siempre consume energía.

    En el modo sleep más profundo, este contribuirá significantemente para elconsumo total de corriente.

    9.11.4 Referencia de Voltaje Interna

    La Referencia de Voltaje Interna será habilitada cuando se necesite detectar elBrown-out, el Comparador Análogo o el ADC. Si estos módulos sondeshabilitados como se describe en la sección de abajo, la referencia de VoltajeInterna será deshabilitada y esta no consumirá energía.

    Cuando se prende otra vez, el usuario debe poner la referencia antes de que seausado.

    9.11.5 Watchdog Timer

    Si el Watchdog Timer no es necesario para la aplicación, el módulo debe serapagado. Si el Perro Watchdog Timer es habilitado, este será habilitado entodos los modos, y además, siempre consumirá energía. En el más profundo delos descansos (sleep), este contribuirá significantemente al consumo total decorriente.

    9.11.6 Pines del Puerto

    Cuando entra en modo sleep, todos los pines del puerto deben ser configuradospara usar la mínima energía. Lo más importante es por lo tanto asegurar queningún pin maneje cargas resistivas. En el modo de descanso cuando el reloj delas E/S y el reloj del ADC son detenidos, los buffers de entrada del dispositivoserán deshabilitadas. Esto asegura que no exista consumo de energía cuandouna entrada lógica no es necesaria. En algunos casos, la entrada lógica esnecesaria para detectar condiciones de arranque, y entonces esto será

    habilitado.

    Si el buffer de entrada es habilitado y la señal de entrada es dejada a flote otiene una señal análoga en VCC/2, el buffer de entrada usará excesiva energía.Para los pines de entrada analógica, el buffer de entrada digital debe serdeshabilitado de todos los tiempos. Una señal análoga para VCC/2 en laentrada de un pin puede causar lo suficiente de corriente incluso en modoactivo.Los buffers de entrada digital pueden deshabilitarse escribiendo en el registrode desabilitación de entradas digitales (DIDR1 y DIDR0).

  • 8/17/2019 Atmega164p Español

    46/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    9.11.7 Sistema On-chip Debug

    Si el Sistema On-chip Debug es habilitado por el fusible OCDEN y el chip entraen modo sleep, la fuente del reloj principal será habilitada, y además, siempreconsumirá energía. En el más profundo de los modos sleep (descanso), este

    contribuirá significantemente al consumo total de corriente. Hay tres víasalternativas para deshabilitar el sistema OCD:

    1. 

    Deshabilitar el fusible del OCDEN2.  Deshabilitar el Fusible del JTAGEN3.  Escribir uno en el bit JTD del MCUCR

    9.12 Descripción de los Registros

    9.12.1 SMCR – Registro de Control para el Modo SleepEl Registro de Control para el Modo sleep contiene bits para el control de laenergía.

    • Bits 3, 2, 1 – SM2:0: Selección de Bits 2, 1, y 0 para el Modo SleepEstos bits seleccionan entre los cinco posible modos como muestra la tabla 9-2.

    Notas:1.

     

    El modo Standby es solo recomendado para usar con un cristal externo.

    • Bit 0 – SE: Habilitación del sleep

    El bit SE debe ser escrito a uno lógico para hacer que el MCU entre en modosleep cuando la instrucción SLEEP es ejecutada. Para evitar que el MCU entre almodo sleep es recomendable escribir a uno el bit SE antes de ejecutar la

    instrucción SLEEP y para limpiar inmediatamente después de despertarse.

  • 8/17/2019 Atmega164p Español

    47/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    9.12.2 MCUCR – Registro de Control MCU

    • Bit 6 – BODS: Descanso BOD

    El bit BODS deber ser escrito a uno lógico para apagar el BOD durante eldescanso (sleep). Al escribir en el bit BODS, se controla por una secuencia detiempos y un bit de habilitación, BODSE en el registro MCUCR. Paradeshabilitar el modo de descanso, el BODS debe ser puesto a uno y el BODSEdebe estar en cero en cuatro ciclos del reloj.El bit BODS es activado en tres ciclos del reloj después de ser configurado. Unainstrucción SLEEP debe ser ejecutada mientras el BODS es activado para apagarel BOD para el nuevo modo de descanso. El bit BODS es automáticamentelimpiado después de tres ciclos del reloj.

    • Bit 5 – BODSE: Habilitación del sleep (descanso) BOD

    El BODSE habilita la configuración del bit de control BODS, como se explica enla descripción del BODS. La deshabilitación del BOD es controlada por unasecuencia de tiempos.

    9.12.3 PRR – Registro Reducción de Energía

    • Bit 7 - PRTWI: Reducción de Energía TWIAl escribir un uno lógico en este bit cierra el TWI mediante la detención delreloj. Cuando arranque otra vez el TWI, el TWI debe ser reinicializado para

    asegurar su correcto funcionamiento.

    • Bit 6 –Reducción de Energía del Timer/Countador2 PRTIM2Al escribir un uno lógico en este bit pone el modulo del Timer/Contador2 enmodo asincrónico (AS2 es 0). Cuando el Timer/Contador2 es habilitado, laoperación continuará como antes de que haya sido cerrado.

    • Bit 5 - PRTIM0: Reducción de Energía del Timer/Contador0Al escribir un uno lógico en este bit se cierra el modulo del Timer Contador0.Cuando el Timer/Contador0 es habilitado, la operación continuará como antes

    de que haya sido cerrado.

  • 8/17/2019 Atmega164p Español

    48/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    • Bit 4 - PRUSART1: Reducción de Energía en el USART1Al escribir un uno lógico en este bit se cierra el USART1 detenido el reloj delmódulo.Cuando despierta otra vez el USART1, el USART1 debe reinicializarse paraasegurar su correcto funcionamiento.

    • Bit 3 - PRTIM1: Power Reduction Timer/Counter1Al escribir un uno lógico en este bit se cierra el módulo del Timer/Contador1.Cuando el Timer/Contador1 es habilitado, la operación continuará como antesde que haya sido cerrado.

    • Bit 2 - PRSPI: Power Reduction Serial Peripheral InterfaceAl escribir un uno lógico en este bit se cierra el módulo de Interfaz PeriféricaSerial mediante la detención del reloj. Cuando despierta otra vez del SPI, el SPI

    debe reinicializarse para asegurar su correcto funcionamiento.

    • Bit 1 - PRUSART0: Reducción de Energía del USART0

    Al escribir un uno lógico en este bit se cierra el USART0 deteniendo el reloj delmódulo.Cuando despierta otra vez el USART0, el USART0 debe reinicializarse paraasegurar su correcto funcionamiento.

    • Bit 0 - PRADC: Power Reduction ADC

    Al escribir un uno lógico en este bit se cierra el ADC. El ADC debe serdeshabilitado antes de que se cierre el módulo. El comparador análogo nopuede usar el MUX de entrada del ADC cuando el ADC es cerrado.

    10. Control del Sistema y Reset

    10.0.1 Reset del AVRDurante el reset, todos los registros de E/S se ponen en su valor inicial, y elprograma empieza a ejecutarse desde el Vector de Reset. La instrucción

    localizada en el Vector de Reset debe ser un JMP – Salto Absoluto – instrucciónpara reiniciar la rutina manualmente. Si el programa nunca habilita una fuentede interrupciones, el Vector de interrupciones no es usado, y el código deprograma puede ser ubicado en esta localidad. Es también del caso, si el Vectorde Reset, está en la sección de aplicaciones mientras el Vector de Interrupcionesestá en la sección baja del programa (boot), o viceversa. El diagrama del circuitose muestra en la tabla 10-1 la cual muestra el reset lógico.

    Los puertos de E/S de los AVRs son reiniciadas inmediatamente a su estadoinicial cuando una fuente de reset está activa. Esto no requiere que cualquierfuente de reloj esté corriendo. Después de resetear todas las fuentes ha sidodesactivado, se efectúa un conteo de retardo, alargándose el reset interno. Esto

  • 8/17/2019 Atmega164p Español

    49/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    permite lograr una estabilidad antes de la operación normal de inicio. Elperiodo de tiempo para el conteo del retardo está definido por el usuario através de los fusibles SUT y CKSEL.

    10.0.2 Fuentes de Reset

    El ATmega164P/324P/644P tiene cinco Fuentes de reset:

    1. 

    Power-on reset. El MCU es reseteado cuando el voltaje de alimentaciónestá por debajo del umbral del Power-on Reset (VPOT).

    2. 

    Reinicio externo. El MCU es reseteado cuando un nivel bajo en el pin deRESET el cual es mas largo que el pulso mínimo.

    3.  Reset del Watchdog. El MCU es reseteado cuando el período del Tiempodel Watchdog termina y el Watchdog es habilitado.

    4.  Reset del Brown-out. El MCU es reseteado cuando el voltaje de VCC dealimentación está debajo del Brown-out Reset (VBOT) y el Brown-outDetector es habilitado.

    5.  Reset del JTAG. El MCU es reseteado si existe un uno lógico en elregistro del Reset.

  • 8/17/2019 Atmega164p Español

    50/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    10.0.3 Reset del Power-on

    Un pulso del Power-on (POR) es generado por un circuito de detención internodel chip. El circuito del POR está activado cuando el VCC esta por debajo delnivel de detección. El circuito del POR puede ser usado para disparar el reset,

    así como para detectar una falla en el voltaje de alimentación.El circuito de reset del Power-on asegura que el dispositivo sea reseteado desdeel Power-on. Alcanzar el voltaje umbral del Power-on llama al contador delprograma, el cual determina cuanto tiempo el dispositivo está en reset desde desubir el VCC. La señal de RESET es activada otra vez, sin ningún retardo,cuando el VCC decrementa por debajo del nivel de detección.

    10.0.4 Reset Externo

    Un reset externo es generado por un nivel bajo en el pin de RESET. Los pulsosde RESET más largos que el ancho del pulso mínimo generan un reset, o si elreloj no está corriendo. Pulsos cortos no garantizan generar un reset. Cuando laseñal aplicada alcanza el voltaje umbral de Reset – VRST – en su flanco positivo,el contador de retardos inicia al MCU después de que periodo de tiempo tout haterminado.

  • 8/17/2019 Atmega164p Español

    51/377

    A.T.R. ADVANTAGE TECHNOLOGY RISCJUAN GALARZA TEL: 593 2 3215620  –  091348748 –  email: [email protected] DISTRIBUIDOR ATMEL PARA EL ECUADOR

    10.0.5 Detección del Brown-out

    El ATmega164P/324P/644P tiene en su interior un circuito detector del Brown-

    out (BOD) para monitorear el nivel del VCC durante su operación mediante lacomparación de un nivel de disparo.El nivel de disparo del BOD puede ser seleccionado por el fusible BODLEVEL.El nivel de disparo tiene una histéresis para asegurar la detección del Brown-out. La histéresis en el nivel de detección deben ser interpretados como VBOT+=VBOT + VHYST/2 y VBOT- = VBOT - VHYST/2.

    Cuando el BOD es habilitado, y decrece el VCC a un valor más abajo del nivelde disparo, el Brown-out Reset es inmediatamente activado.Cuando incrementa el VCC por encima del nivel de disparo, el contador de

    retardos inicia al MCU después de que el periodo de tiempo tTOUT ha terminado.

    10.0.6 Reset del Watchdog

    Cuando hay un tOUT, esto genera un pulso de reset corto de una duración delciclo CK.