informaciÓn sobre el multiplexor y el avr utilizado

160
Descripción general Cada uno de estos decodificadores de 4 líneas a 16 líneas utiliza el trazado de circuito de la TTL para descifrar cuatro entradas codificadas en binario en una de dieciséis mutuamente salidas de la exclusiva cuando ambas las entradas del estroboscópico, G1and G2, son bajas. La función demultiplexaje es realizada usando las 4 líneas de entrada para tratar la línea de salida, pasando los datos a partir de la una de las entradas del estroboscópico con el otro estroboscópico entraron punto bajo. Cuando cualquier entrada del estroboscópico es alta, todas las salidas son altas. Estos demultiplexores se satisfacen idealmente para poner los decodificadores de alto rendimiento de la memoria en ejecución. Se protegen todas las entradas y la entrada que afianza los diodos con abrazadera se proporciona para reducir al mínimo la transmisión-línea efectos y de tal modo simplifica diseño del sistema. Características: -Descifra 4 entradas codificadas en binario en una de 16 mutuamente salidas de la exclusiva. - Realiza la función demultiplexaje distribuyendo datos a partir de una línea de entrada de 16 salidas - La entrada que afianza los diodos con abrazadera simplifica diseño del sistema - Alto fan salida, bajo-impedancia, salidas del tótem - La propagación típica retrasa: 3 niveles de la lógica 23 ns Estroboscópico 19 ns - Disipación típica 45 mW de la energía

Upload: cristian-alban

Post on 13-Jun-2015

1.430 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Descripción general Cada uno de estos decodificadores de 4 líneas a 16 líneas utiliza el trazado de circuito de la TTL para descifrar cuatro entradas codificadas en binario en una de dieciséis mutuamente salidas de la exclusiva cuando ambas las entradas del estroboscópico, G1and G2, son bajas. La función demultiplexaje es realizada usando las 4 líneas de entrada para tratar la línea de salida, pasando los datos a partir de la una de las entradas del estroboscópico con el otro estroboscópico entraron punto bajo. Cuando cualquier entrada del estroboscópico es alta, todas las salidas son altas. Estos demultiplexores se satisfacen idealmente para poner los decodificadores de alto rendimiento de la memoria en ejecución. Se protegen todas las entradas y la entrada que afianza los diodos con abrazadera se proporciona para reducir al mínimo la transmisión-línea efectos y de tal modo simplifica diseño del sistema.

Características:

-Descifra 4 entradas codificadas en binario en una de 16 mutuamente salidas de la exclusiva. - Realiza la función demultiplexaje distribuyendo datos a partir de una línea de entrada de 16 salidas - La entrada que afianza los diodos con abrazadera simplifica diseño del sistema - Alto fan salida, bajo-impedancia, salidas del tótem - La propagación típica retrasa:

3 niveles de la lógica 23 ns Estroboscópico 19 ns

- Disipación típica 45 mW de la energía

Page 2: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO
Page 3: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO
Page 4: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

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 - 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 del mismo 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és fase 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, modo comparació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érdida de polarización) programable. - Oscilador RC interno calibrado. - Fuentes de interrupción externas e internas.

Page 5: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

- 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 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 ATMEGA 164P/324P/644P

- Activo: 0.4mA - Modo Power-down: 0.1uA - Modo Power-Save: 0.6uA (Incluye RTC de 32 Khz) 1. CONFIGURACIÓN DE PINES Figura 1-1. Pines de Salida del ATmega164P/324P/644P

TQFP/QFN/MLF

Page 6: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

2. Revisión Global El ATmega164P/324P/644P es un microcontrolador CMOS de 8 bits de bajo consumo basado en la arquitectura RISC mejorada. Sus instrucciones se ejecutan en un ciclo de máquina, el ATmega164P / 324P / 644P consigue transferencia de información alrededor de 1 MIPS por MHz admitido por el sistema, permitiendo al diseñador del sistema optimizar el consumo de energía versus la velocidad de procesamiento. 2.1 Diagrama de Bloque Figura 2 -1. Diagrama de Bloques

Page 7: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El core (núcleo) AVR combina un conjunto de instrucciones RISC con 32 registros para uso de propósito general. Todos los 32 registros están directamente relacionados con la Unidad Aritmética Lógica (ALU), admitiendo dos registros independientes al ejecutarse una instrucción en un ciclo de máquina. El resultado de esta arquitectura es más eficiente, se consigue un caudal de flujo y transferencia hasta diez veces más rápido que microcontroladores 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 escritura de 512B/1K/2K bytes en la EEPROM, 1/2/4K bytes en la SRAM, 32 pines de E/S para propósito general, 32 registros de propósito general, Contador en Tiempo real (RTC), tres Timer/Contadores flexibles con modo de Comparación y PWM, 2 USARTs, un byte orientado a la Interfaz Serial de 2 hilos, 8 canales ADC 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-chip Debug y seis modos de programación seleccionable para ahorro de energía. El modo Idle detiene al CPU mientras permite a la SRAM, Timer/Contador, Puerto SPI y al sistema de interrupciones continuar funcionando. El Modo Power-down guarda el contenido de los registros pero paraliza al oscilador, desactiva todas las otras funciones de chip hasta la próxima interrupción o mediante reseteo por hardware. En el Modo Power-save, el reloj asincrónico continúa corriendo, permitiendo tener actualizado al reloj mientras el resto de dispositivos están descansando. El Modo de Reducción del Ruido del ADC detiene al CPU y a todos los módulos de E/S excepto al Reloj Asincrónico y al ADC, para minimizar el ruido durante la conversión. En el Modo Standby, el oscilador Cristal/Resonador está

Page 8: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

corriendo mientras el resto de dispositivos están descansando. Estos permiten comenzar una rápida combinación con el consumo de baja energía. En el Modo de espera (Standby) extendido, corre el Oscilador principal y el Reloj Asincrónico. Este elemento es hecho usando tecnología de alta densidad de memoria no volátil de ATMEL. El chip interno ISP de la FLASH permite a la memoria de programa ser reprogramada a través del puerto interno ISP mediante un programador convencional no volátil o mediante un programa interno en el dispositivo AVR. El programa de inicialización puede usar cualquier interfaz para descargar el programa de aplicación en la memoria flash. El programa en la sección Flash Boot es actualizado mientras continúa corriendo 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 un sistema de Flash Auto-programable en un chip monolítico, el ATmega164P/324P/644P es un poderoso microcontrolador que provee una alta flexibilidad y solución de costos efectivos para cualquier aplicación de control. El ATmega164P / 324P / 644P AVR es soportado con un juego completo de programas y herramientas de desarrollo del sistema incluyendo: compiladores de 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 2.3.2 GND Tierra 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 con resistencias internas de pull up (seleccionables para cada bit). Los buffers de salida del puerto A tienen características simétricas controladas con fuentes de alta capacidad. Los pines del puerto A están en tri-estado cuando las condiciones de reset están activadas o cuando el reloj no este corriendo. El puerto A también sirve para varias funciones especiales del ATmega164P/324P/644P como la Conversión Análoga Digital. 2.3.4 Port B (PB7:PB0) El puerto B es un puerto bidireccional de 8 bits de E/S con resistencias internas de pull up. Las salidas de los buffers del puerto B tienen características simétricas controladas con fuentes de alta capacidad.

Page 9: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

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 para varias funciones especiales del ATmega164P/324P/644P como se menciona en las 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 internas de pull up (seleccionadas por cada bit). Las salidas de los buffers del puerto C tienen 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án activadas siempre y cuando el reloj no este corriendo. El puerto C también sirve para las funciones de Interfaz del JTAG, con funciones especiales del ATmega164P/324P/644P como se menciona en las páginas iniciales. 2.3.6 Port D (PD7:PD0) El Puerto D es un puerto bidireccional de entradas y salidas con resistencias internas de pull up (seleccionadas por cada bit). Las salidas de los buffers del puerto D tienen características simétricas controladas con sumideros de fuentes de alta capacidad. Los pines del Puerto D están en tri-estado cuando llega una condición de reset activa, siempre y cuando el reloj no esté corriendo. El puerto D también sirve para varias funciones especiales del ATmega164P/324P/644P como se menciona en las páginas iniciales.

2.3.7 RESET Entrada del Reset. Un pulso de nivel bajo en este pin por períodos de pulso mínimo genera un reset, siempre y cuando el reloj no esté corriendo. La longitud del pulso mínimo está especificada en las Características y Sistemas de Reset (Páginas 331 del Data Sheet). Pulsos cortos no son garantizados para generar un reset. 2.3.8 XTAL1 Entrada para el amplificador del oscilador invertido y entrada para el circuito de operación del reloj interno. 2.3.9 XTAL2 Salida del Oscilador amplificador de salida. 2.3.10 AVCC AVCC es la alimentación de voltaje para el pin del Puerto F y el Conversor Análogo a Digital. Este debe ser conectado externamente a VCC, siempre y cuando el ADC no sea usado. Si el ADC es usado, este deberá ser conectado a VCC a través de un filtro paso bajo. 2.3.11 AREF Está es la referencia para el pin de la conversión Análoga a Digital. 3. Recursos Un set comprensible de herramientas, notas de aplicación y datasheet se puede descargar desde http://www.atmel.com/avr. 4. Acerca de los Ejemplos de Código

Page 10: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Este documento contiene unos simples ejemplos de código que brevemente muestran como usar varias partes del dispositivo. Sea consiente que no todos los vendedores de compiladores en C incluyen la definición de bits en el archivo de cabecera y el manejo de interrupciones en el compilador C es dependiente. Por favor confirme con la documentación del compilador C para más detalles. Los ejemplos de código asumen que la parte de archivo de cabecera esta incluido antes de la compilación. Para las localidades de los registros de E/S en el 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 Datos La fiabilidad de la calificación de resultados muestra que la velocidad de falla de un proyecto es mucho menor que 1 PPM en 20 años a 85°C ó 100 años a 25°C. 6. AVR CPU Core 6.1 VISIÓN GENERAL Esta sección discute la arquitectura general del AVR. La principal función del AVR es asegurar la correcta ejecución del programa. La CPU debe ser capaz de acceder a la memoria, llevar a cabo cálculos, control de periféricos y atención de interrupciones.

Page 11: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Para maximizar el rendimiento y el paralelismo, el AVR usa una arquitectura de Hardware con separador de memorias y buses para programa y datos. Las instrucciones en la memoria de programa son ejecutadas con un simple nivel de colas. Mientras una instrucción es ejecutada, la siguiente instrucción es ejecutada desde la memoria de programa. Este concepto permite que las instrucciones sean ejecutadas en cada ciclo de máquina. La memoria de programa está en la memoria Flash re-programable. El Archivo del Registro (Register File) de rápido acceso contiene 32 registros de propó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. En una operación típica de la ALU, dos operandos están fuera del Archivo de Registro, la operación es ejecutada, y el resultado es guardado en el Archivo de Registro en un ciclo de máquina. Seis de los 32 registros pueden ser usados como tres registros punteros de 16 bits de dirección, para direccionar los Datos y permitir los cálculos de direcciones diferentes. Uno de estos tres punteros puede ser usado como un puntero de direcciones para tablas en la memoria de programa de la Flash. Estos registros de función adicionales son el X, Y y Z de 16 bits, descritos después en esta sección. La ALU soporta operaciones lógicas y aritméticas entre registros o entre constantes y registros. Simples operaciones de registros pueden ser ejecutadas en la ALU. Después de una operación aritmética, el registro de estado es actualizado para reflejar información acerca de los resultados de la operación. El flujo del programa es provisto 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 palabra de 16 bits. Cada dirección de memoria contiene instrucciones de 16 o 32 bits. El espacio de memoria en la flash está dividido en dos secciones, la sección Baja del programa y la sección de aplicación de programa. Ambas secciones están dedicadas para bloqueo de escritura y protección de lectura/escritura. La instrucción SMP que se escribe en la Sección de la memoria Flash debe residir en la sección Baja del programa. Durante los llamados de interrupción y subrutinas, la dirección de regreso del Contador de Programa (CP) es almacenado en la pila (stack). La pila (stack) está localizada efectivamente en la SRAM (RAM estática) de datos y consecuentemente el tamaño de la pila está limitado solo por el tamaño total de la SRAM (RAM estática) y su uso. Todos los programas a usarse deben inicializar en el SP (Stack Pointer) en la rutina 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 el espacio de E/S. La RAM estática de datos puede ser fácilmente penetrada a través de los cinco diferentes modos de direccionamiento soportados en la arquitectura de AVR. El espacio de memoria en la arquitectura de los mapas de memoria de los AVR son todos lineales y regulares. Un módulo de interrupción flexible tiene sus registros de control en los espacios de E/S con una Habilitación de Interrupción Global en el Registro de Estado. Todas las interrupciones tienen separado un vector de interrupciones en la tabla del vector de interrupciones. Las interrupciones tienen prioridad de conformidad con su vector de interrupciones. La dirección más baja del vector de interrupciones tiene alta prioridad. El espacio de memoria de E/S contiene 64 direcciones para las funciones periféricas de la CPU, el Registro de Control SPI y otras funciones de Entrada y Salida. La memoria de Entrada y Salida puede ser accedida directamente o como localidades de espacio de datos siguiendo estos Archivos de Registro:0x20 - 0x5F. En suma, el ATmega164P/324P/644P tiene espacios extendidos de

Page 12: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

entrada y salida desde la dirección 0x60 - 0xFF en la SRAM donde solo las instrucciones 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 las instrucciones aritméticas más recientes ejecutadas. Está información puede ser usada para alterar el flujo del programa en el funcionamiento de operaciones condicionales. Note que el Registro de Estado es actualizado después de todas las operaciones de la ALU, como especificaciones en el Set de Instrucciones de Referencia. En algunos casos esto retira la necesidad de usar comparación de instrucciones dedicadas, resultando un código más rápido y compacto. El Registro de estado no es almacenado automáticamente cuando entra una rutina de interrupción y se restituye cuando regresa de una interrupción. 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 para habilitar las interrupciones. La interrupción individual permite que el control sea llevado a cabo en registros de control distintos. Si el registro de Habilitación de interrupciones globales es borrado, ninguna de las interrupciones están activadas independiente de la configuración de una interrupción individual. El bit I es limpiado por hardware después de que una interrupción ha ocurrido, y es puesto en uno por la instrucción de RETI para habilitar interrupciones siguientes. El bit I también puede ser puesto en uno y borrado por la aplicación con 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 el bit 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 mediante la instrucción SBT y un bit en T puede ser copiado dentro de un registro del Archivo de registros mediante la instrucción BLD. • Bit 5 – H: Half Carry Flag Half Carry es útil en la aritmética BCD. • Bit 4 – S: Bit de Signo, S = N ⊕ V El 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 Dos La bandera de desbordamiento en Complemento a Dos soporta el complemento a dos. • Bit 2 – N: Bandera Negativa La Bandera Negativa N indica un resultado negativo en una operación aritmética o lógica.

Page 13: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 1 – Z: Bandera del Cero La bandera del cero indica si un resultado es cero en una operación aritmética o ló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 General El Archivo de Registros es optimizado por el Juego de instrucciones RISC del AVR. Para lograr la actuación y flexibilidad requerida, los esquemas del entrada/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ósito General que trabajan en la CPU.

La mayoría de las operaciones de instrucciones en el Archivo de Registro tiene acceso directo a todos los registros, y la mayoría de ellos son instrucciones de un ciclo. Como se muestra en la figura anterior a cada registro en la memoria de datos se le asigna una dirección, mapeados estos directamente dentro de las 32 localidades para el uso del espacio de Datos. Aunque físicamente no son implementados en las localidades de la SRAM, esta memoria 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 cualquier archivo de registro. El registro X, el registro Y y el registro Z Los registros R26… R31 tienen algunas funciones adicionales para uso de propósito general. Estos registros son punteros de 16 bits de dirección para direccionar indirectamente al espacio de datos. Los tres registros de direccionamiento indirecto X, Y y Z están definidos como se muestra en la figura siguiente. Figure 6-3. Los registros X, Y y Z

Page 14: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

En los modos de direccionamiento directo estos registros de dirección tienen desplazamientos fijos, incrementos y decrementos automáticos. 6.5 Puntero de Pila (Stack Pointer) El Stack–Pointer es usado para almacenar información temporal, para almacenar variables locales y para almacenar direcciones de regreso después de una 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ás alta a la localidad mas baja de la memoria. Esto implica que un comando PUSH decrementa el Puntero de Pila. El puntero de pila para la SRAM es el área donde las interrupciones y subrutinas son localizadas. Estos espacios de pila en los datos de la SRAM deben ser definidos por el programa antes de que cualquier llamado de subrutina sea ejecutado o una interrupción sea habilitada. El puntero de pila debe estar por encima de la localidad 0x0100. El valor inicial del puntero de pila es la última dirección de la SRAM interna. El puntero de pila es decrementado a uno cuando los datos presionan en la pila con la instrucción PUSH, y este es decrementado por tres cuando los datos llenan la pila con un regreso desde una subrutina RET o de regreso desde una interrupción RETI. El Puntero de Pila del AVR es implementado como un registro de 8 bits en el espacio de E/S. El número de bits actualmente usados es dependientemente implementado. Note que el espacio de datos en algunas implementaciones en la arquitectura del AVR es tan pequeña que solo necesita el SPL. En este caso, el registro SPH no esta presente. 6.5.1 SPH y SPL – Puntero de Pila Alto y Puntero de Pila Bajo

Note: 1Valores iniciales respectivamente para el ATmega164P/324P/644P. 6.5.2 RAMPZ – Z Extendido – Registro puntero para ELPM/SPM

Page 15: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Para las instrucciones ELPM/SPM, el puntero Z es una concatenación del RAMPPZ, ZH y ZL se muestran en la figura siguiente. Note que LPM no es afectado por la configuración del RAMPZ. Figura. El puntero Z usado por ELPM y SPM.

El número actual de los bits es dependiente de la implementación. Al no usar los bits en una implementación se leerán como cero. Para compatibilidad con dispositivos futuros, asegurar el escribir estos bits como cero. 6.7 Reset e Interrupción Manual El AVR provee diferentes Fuentes de interrupción. Cada de estas interrupciones y el Vector Separador de Reset tienen un Vector separador de programa en el espacio de la memoria de programa. Todas las interrupciones son bits habilitados de forma individual los cuales deben ser escritos a uno lógico junto con el bit Habilitador de Interrupciones Globales en el registro de Estado. Dependiendo del valor del contador del programa, las interrupciones deben ser deshabilitadas automáticamente cuando los bits Boot Lock (BLB02 o BLB12) son programados. Esta característica mejora la seguridad de software. La dirección más baja en el espacio de la memoria de programa está definida por defecto como vectores de Reset e Interrupción. La lista completa de vectores se muestra en la página 61 del Data Sheet. La lista también determina los niveles de prioridad de las diferentes interrupciones. El nivel de prioridad es desde la dirección mas baja a la más alta. El RESET tiene la prioridad 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 la parte baja de la Flash por la configuración del bit IVSEL en el MCU del registro de Control (MCUCR). El vector de Reset también puede ser movido al inicio de la 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 Interrupciones Globales es limpiado y todas las interrupciones son deshabilitadas. El software del usuario puede escribir uno lógico en el bit I para habilitar de nuevo las interrupciones. Todas las interrupciones habilitadas pueden entonces interrumpir las rutinas de interrupciones. El bit I es puesto en uno automáticamente cuando regresa de una interrupción al ser ejecutada la instrucción RETI. Existen básicamente dos tipos de interrupciones. El primer tipo es disparado por un evento que configura la bandera de interrupción. Para estas interrupciones, el Contador de Programa es direccionado para el actual Vector de Interrupción a medida que se ejecuta una rutina de interrupción manual y limpiada por hardware la correspondiente bandera de interrupción. La bandera de interrupción puede también ser limpiada por uno lógico para la posición de la bandera del bit.

Page 16: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Si una condición de interrupción ocurre mientras se habilita el bit de interrupció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 es limpiada por software. De igual forma, si una o más condiciones de interrupción ocurren mientras el bit de interrupción es limpiado, la correspondiente bandera de interrupción será puesta en uno y la Bandera de Interrupción Global es Habilitada mientras el 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 de interrupción actual. Si la condición de interrupción desaparece antes que la interrupción sea habilitada, la interrupción no será disparada. Cuando existe una interrupción en el AVR, esta siempre regresará al programa principal y ejecutará una o más interrupciones antes de cualquier pedido de interrupción. Note que el Registro de Estado no es almacenado automáticamente cuando entra una rutina de interrupción o cuando regresa de la rutina de interrupción. Esto deber ser hecho manualmente por software. Cuando usa la instrucción CLI para deshabilitar interrupciones, la interrupción será deshabilitada inmediatamente. Ninguna interrupción será ejecutada después de la interrupción CLI, Incluso si ocurre simultáneamente con la instrucción CLI. Los siguientes ejemplos muestran como esto puede ser usado para evitar interrupciones durante el tiempo de escritura en la EEPROM. 6.7.1 Tiempo de respuesta de la Interrupción La respuesta para la ejecución de interrupción para habilitar todas las interrupciones del AVR son mínimos cinco ciclos. Después de cinco ciclos de reloj la dirección del vector de programa para la rutina manual de interrupción es ejecutada. Durante este periodo de cinco ciclos, el Contador de Programa es guardado en el 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ón de una instrucción de múltiples ciclos, esta instrucción es completada antes de que la interrupción sea pedida. Si una interrupción es ejecutada ocurre cuando el MCU esta en modo de descanso, la interrupción ejecuta tiempos de respuesta en incrementos de cinco ciclos de reloj. Este incremento llega al iniciar los tiempos desde la selección del Modo 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) es abierto desde el Stack, el puntero de Pila es incrementado por tres y el bit I en la configuración del SREG. 7. Memorias del AVR 7.1 Vista General Esta sección describe las diferentes memorias en el ATmega164P/324P/644P. La arquitectura de los AVR tiene dos espacios de memoria principal, la memoria de datos y el espacio de memoria de programa. En suma, al ATmega164P/324P/644P le caracteriza una memoria EEPROM para 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 sistema reprogramable de memoria interno para almacenamiento. Mientras todas las instrucciones son de un ancho de 16 o 32 bits, la Flash esta organizada como 32/64 x 16. Para seguridad del software, el espacio de memoria de la

Page 17: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Flash está dividido en dos secciones, la sección baja de programa (Boot Program) y la sección de Aplicación de Programa. La memoria Flash tiene una duración de más o menos 10.000 ciclos de lectura/escritura. El Contador de Programa del ATmega164P/324P/644P es de un ancho de 15/16 bits, en consecuencia direcciona 32/64K localidades en la memoria de programa. Figura. Mapa de la memoria de programa

7.3 Memoria De Datos SRAM La figura de abajo muestra como la memoria SRAM del ATmega164P/324P/644P esta organizada. El ATmega164P/324P/644P es un microcontrolador complejo con más unidades periféricas que pueden ser soportadas entre la localidad 64 reservada en el código para las instrucciones de entrada y salida. Para los espacios extendidos de E/S desde la localidad $060 a la $FF en la SRAM, 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 el Archivo de Registro, la Memoria de E/S, la Memoria extendida de E/S y la SRAM de datos interna. Las primeras 32 localidades direccionan el Archivo de Registro, las 64 siguientes direccionan la SRAM de datos interna. Los cinco diferentes modos de direccionamiento para cubrir la Memoria de Datos son: Directo, Indirecto con desplazamiento, Indirecto, Indirecto con Pre-decremento y el Indirecto con Post incremento. En el archivo de registro, los registros del R26 al R31 marcan el direccionamiento 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.

Page 18: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

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 Z son decrementados o incrementados. El trabajo de los 32 registros de propósito general, los64 registros de E/S, los registros extendidos de E/S y bytes 1024/2048/4096 de la SRAM interna en el ATmega164P/324P/644P son todos accesibles a través de estos modos de direccionamiento. Figura. Mapa de la memoria de datos

7.3.1 Tiempos de Acceso a la Memoria de datos Esta sección describe los tiempos de acceso generales para el acceso interno a la memoria. El acceso interno a la SRAM de datos funciona en dos ciclos de la CPU como se describe en la figura siguiente. Figura. Ciclos de acceso a la SRAM de datos internos

7.4 Memoria de datos EEPROM El ATmega164P/324P/644P contiene 512B/1K/2K bytes en la memoria de datos EEPROM. Está organizado como un espacio de datos separado, en el cual solo los bytes pueden ser leídos y escritos. La EEPROM tiene una resistencia de más o menos 100.000 ciclos de escritura/lectura. El acceso entre la EEPROM y la CPU esta descrito en lo siguiente, especificando Registros de Dirección, Registros de datos de la EEPROM y el registro de Control de la EEPROM.

Page 19: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Para prevenir escritura unidireccional de la EEPROM, una escritura específica debe proceder de la siguiente forma. Referirse a la descripción del Registro de Control de la EEPROM para detalles de este. Cuando la EEPROM es leída, la CPU es detenida por cuatro ciclos de reloj antes de la siguiente instrucción sea ejecutada. Cuando la EEPROM es escrita. La CPU es detenida por cuatro ciclos de reloj antes de que la siguiente instrucción sea ejecutada. 7.4.2 Prevención de Corrupción en la EEPROM Durante períodos bajos de VCC, los datos de la EEPROM pueden ser corrompidos porque el voltaje de alimentación es también bajo para la CPU y la EEPROM opera apropiadamente. Estos asuntos son los mismos para el nivel del sistema que usa la EEPROM, y la misma solución del diseño debería ser aplicado. Una alteración de datos en la EEPROM puede ser causada por dos situaciones cuando el voltaje es demasiado bajo. Primero, una secuencia de escritura regular a la EEPROM requiere un mínimo voltaje para operar correctamente. Segundo, la misma CPU puede ejecutar instrucciones incorrectas, si la alimentación es demasiado baja. Una alteración de datos en la EEPROM puede ser fácilmente evitada siguiendo las siguientes recomendaciones: Durante los periodos con insuficiente alimentación de voltaje poner el RESET del 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, la operación de escritura será completada suministrando el voltaje de alimentación necesario. 7.5 Memoria de E/S Todas las E/S y periféricos del ATmega164P/324P/644P son ubicados en el espacio de E/S. Todas las localidades de entrada pueden ser accedidas mediante las instrucciones LD/LDS/LDD y ST/STS/STD, transfiriendo datos entre 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 las instrucciones SBI y CBI. En estos registros, el valor de estos bits pueden ser verificados mediante el uso de las instrucciones SBIS y SBIC. Cuando usamos los comandos específicos de ENTRADA y SALIDA, las direcciones de E/S 0x00 a la 0x3F deberían ser usadas. Cuando direccionamos los registros de E/S como espacios de datos usando las instrucciones ST y LD, la localidad 0x20 debe ser añadida a estas direcciones. El ATmega164P/324P/644P es un microcontrolador complejo con muchas unidades periféricas que pueden soportar entre las 64 localidades reservadas en las instrucciones de Entrada y Salida. Para los espacios extendidos de E/S desde la localidad 0x60 a la 0xFF en la SRAM, solo las instrucciones ST/STS/STD y LD/LDS/LDD pueden ser usadas. Para compatibilidad con dispositivos futuros, los bits reservados deberían ser escritos a cero. Las direcciones reservadas de E/S nunca deben ser escritas. Algunas de las banderas 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 operan sobre bits específicos, y pueden además ser usados sobre registros que tienen tales banderas de estado. Las instrucciones SCI y CBI trabajan con solo con los registros de la 0x00 a la 0x1F. Los registros de E/S y periféricos pueden ser usados para almacenar cualquier información y son particularmente para almacenar variables globales y banderas de estado. Los registros de E/S de propósito general están entre los rangos de direcciones 0x00 a la 0x1F y se usa para su acceso las instrucciones SBI, CBI, SBIS y SBIC

Page 20: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

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 Reservados Estos bits son reservados en el ATmega164P/324P/644P Y siempre se leen como cero. • Bits 11:0 – EEAR8:0: Dirección de la EEPROM Los registros de dirección de la EEPROM –EEARH y EEARL- especifican la dirección de la EEPROM en los 4K bytes de espacio de la EEPROM. Los bytes de 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 antes Un valor correcto debe ser escrito antes de que el EEPROM pueda ser accedido. 7.6.2 EEDR – EL Registro de Datos de la EEPROM

• Bits 7:0 – EEDR7:0: Datos de la EEPROM Para la operación de la escritura en la EEPRM, el registro EEDR contienen los datos a ser escritos para la EEPROM en las direcciones dadas por el registro EEAR. Para la operación de lectura de la EEPROM, la EEDR contiene la lectura de 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 Reservados Estos bits son reservados en el ATmega164P/324P/644P Y siempre se leen como cero. • Bits 5:4 – Los Bits de Modo de Programación de la EEPROM: EEPM1 EEPM0 La configuración del bit de modo de programación de la EEPROM define cual acción del programa será disparada al EEPE.

Page 21: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Esto es posible para la programación de datos en una operación atómica (borra el valor antiguo y el nuevo valor del programa) o para dividir la operación de lectura y escritura en dos diferentes operaciones. Los tiempos de programación para los diferentes modos se muestran en la tabla 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 a menos que el programa de la EPROM este ocupado.

• Bit 3 – EERIE: Habilitación de interrupciones de la EEPROM Escribiendo a uno el bit EERIE se habilita la interrupción de la EEPROM si el bit del SREG es uno. Escribiendo cero en EERIE se deshabilita la interrupción. La interrupción de la EEPROM genera una interrupción constante cuando EEPE es limpiado. • 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 la EEPROM sea escrita. Cuando EEMPE es uno, configurando EEPE durante cuatro ciclos del reloj escribiría el dato a la EEPROM al seleccionar la dirección. Si EEMPE es cero, la configuración de EEPE no tendría efecto. Cuando EMPE ha sido escrito a uno por software, hardware limpiamos el bit a cero después de cuatro ciclos de reloj. 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 la habilitación de la EEPROM. Cuando la dirección y el dato son correctamente configurados, el bit EEPE debería ser escrito a uno para un valor de escritura dentro de la EEPROM. El bit EEMPE debería ser uno antes de que un uno lógico sea escrito a EEPE, con lo cuá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 uno lógico a EEPE. La EEPROM no puede ser programada durante la escritura del CPU a la memoria Flash. El software chequearía que la programación de la Flash es completada antes de inicializar la nueva escritura de la EEPROM.

Page 22: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El paso 2 es solo relevante si el software contiene el Boot Loader permitiendo al CPU la programación de la Flash. Si la Flash nunca comienza la actualización por el CPU, el paso 2 seria omitido. Ver “Programación de la Memoria” en la Pág. 293 en el datasheet. Precaución: Una Interrupción entre los paso 5 y 6 haría que el ciclo de escritura falle, desde que la EEPROM es interrumpida por otro acceso a la EEPROM, el Registro EEAR o EEDR seria modificado, causando que el acceso a la Interrupción de la EEPROM falle. Esto es recomendado para tener la Bandera Global de Interrupciones limpia durante todos los pasos para evitar estos problemas. Cuando el tiempo de acceso a la escritura ha finalizado, el bit EEPE es limpiado por software. El software del usuario puede esperar por un cero antes de la escritura del siguiente byte. Cuando EEPE ha sido puesto en uno, el CPU es Detenido por dos ciclos antes de que la siguiente instrucción es ejecutada. • Bit 0 – EERE: Habilitación de Lectura de la EEPROM La lectura de la habilitación de la señal EERE de la EEPROM es leída para habilitar la EEPROM. Cuando la dirección correcta es configurada en el registro EEAR, el bit EERE seria escrito con uno lógico en el disparo de lectura de la EEPROM. El acceso de la lectura de la EEPROM toma una instrucción, y la respuesta del dato es disponible inmediatamente. Cuando la EEPROM es leída, la CPU es detenida por cuatro ciclos antes que la siguiente instrucción sea ejecutada. El usuario debería verificar el bit EEPE antes de empezar la operación de lectura. Si la escritura de la operación esta en progreso, no sería posible leer la EEPROM, o cambiar el Registro EEAR- La Calibración del Oscilador es usada al tiempo de acceso a la EEPROM- La Tabla 7-2 en la página 25 del datasheet lista el tiempo típico de programación para el acceso a la EEPROM desde el CPU.

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. Sistema de Reloj y Opciones de Reloj 8.1 Sistemas de Reloj y sus Distribuciones

Page 23: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La Figura 8-1 presenta los principales sistemas de reloj en el AVR y su distribució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 a ser usados cuando están detenidos por uso de diferentes modos sleep, como se describe en “Power Management and Sleep Modes” en la página 42 del datasheet. Los sistemas de relojes se describen a continuación en la figura 8-1.

8.1.1 CPU Clock – clk CPU El reloj del CPU es dividido en partes del sistema concerniente a la operación del 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 de las operaciones y cálculos. 8.1.2 I/O Clock – clk E/S La E/S de reloj es usada por la mayoría de los módulos de E/S, Timer/Counter, SPI, y USART. 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 flancos asíncronos, permitiendo que cada Interrupción sea detectada si el reloj de E/S es detenido. También note que la detección de la condición de inicio en el módulo USI es llevado a cabo asincrónicamente cuando el clk de E/S es detenido. El reconocimiento de la dirección de TWI en todos los modos sleep. 8.1.3 Flash Clock – clk FLASH El reloj de la Flash controla la operación de la interfase Flash. El reloj de la Flash es 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 contado directamente desde un reloj de cristal externo de 32 kHz.

Page 24: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El reloj dominante permite usar este Timer/Counter como contador en tiempo real cuando el dispositivo esta en modo sleep. 8.1.5 Reloj del ADC – clkADC El ADC es proporcionado con un reloj dominante dedicado. Esto permite detener el CPU y los relojes de E/S. esto reduce el ruido generado por los circuitos digitales. Esto da una mayor Presición a la conversión ADC. 8.2 Fuentes de Reloj El 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 la fuente de selección es entrada al generador de reloj del AVR.

8.2.1 Fuentes de Reloj por Defecto Este dispositivo es enviado con un oscilador interno de 8.0 MHz y con los fusibles 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 fuera habilitado (CKSEL = "0010", SUT = "10", CKDIV8 = "0"). Las configuraciones por defecto aseguran que todos los usuarios puedan hacer sus fuentes de reloj deseadas usando cualquier programación de interfase. 8.2.2 Inicio de la secuencia de Reloj Cualquier fuente de reloj necesita suficiente Vcc para comenzar la oscilación y un número mínimo de ciclos de oscilación antes de que pueda considerarse estable. Para aseguran un suficiente Vcc, el dispositivo envía un reset interno con 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 del Watchdog y el número de ciclos en demora es puesto por los bits de fusibles SUTx y CKSELx. La selección de retardos se muestra en la Tabla 8-2. La frecuencia del Oscilador del Watchdog es el voltaje dependiente como se muestra en “Características Típicas”.

El propósito general de los retardos es guardar al AVR en reset hasta que suplido con el mínimo voltaje Vcc. El retardo no monitorea el voltaje actual y esto requeriría de un retardo mas

Page 25: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

prolongado que el tiempo de subida de Vcc. Si esto no es posible, el interno o externo Brown-Out Detection circuit debería ser usado. El circuito BOD aseguraría suficiente Vcc antes que se realice el reset, el tiempo de retardo pueda ser deshabilitado. Deshabilitando el retardo sin utilizar 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 reloj sea considerado estable. El contador de onda interna monitorea la salida de reloj del oscilador y guarda el reset interno activado para un número dado de ciclos 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 de reloj y varía desde 6 ciclos aplicados por un reloj externo de 32K para una baja frecuencia de cristal. La secuencia de inicio para el reloj incluye ambas el tiempo de retardo y el tiempo de inicio cuando el dispositivo empieza desde reset. Cuando empieza desde el modo Power-save o Power-down, Vcc es asumido para estar con el nivel suficiente y solo el tiempo de inicio es incluido. 8.2.3 Conexiones de la Fuente de Reloj Los pines XTAL1 y XTAL2 son entradas y salidas, respectivamente, de un amplificador invertido con el cual puede ser configurado para usos como oscilador On-Chip, como se muestra en la Figura 8-2- Un cristal de quartz o resonador cerámico puede ser usado. C1 y C2 debería siempre ser iguales para ambos cristales y resonantes. El valor optimo de los capacitores de pende del cristal y del resonador usados, la cantidad de perdida de capacitancia, y el ruido electromagnético del ambiente Para resonantes cerámicos, el valor del capacitor es dado por el fabricante.

8.3 Oscilador del Cristal de Baja Energía Este oscilador del Cristal es de baja energía, con voltaje reducido en la salida del XTAL2. Esto da un bajo consumo de energía, pero no es capaz de manejar otras salidas 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 seleccionado por los fusibles CKSEL3. Como se muestra en la figura 8-3.

Page 26: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

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

8.4 Ajuste del Oscilador del Cristal El Oscilador del cristal es ajustado, con This Crystal Oscillator is a full swing oscillator, with rail-to-rail swing on the XTAL2 output.

Page 27: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Este es muy usado para controlar otras salidas de reloj y ambientes ruidosos. El consumo de corriente es más alto que ”Low Power Crystal Oscillator” en la página 32 del data sheet. Note que el ajuste del Oscilador del Cristal solo funciona para Vcc = 2.7 - 5.5 voltios. 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 se muestra en la tabla8-5.

8.5 Oscilador del Cristal de Baja Frecuencia La baja frecuencia del Oscilador del Cristal es optimizada para usar un cristal de 32.768 KHz. Cuando seleccionamos el cristal, la capacitancia de carga y la Resistencia en serie equivalente del

Page 28: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

cristal, ESR sería tomado en consideración. Ambos valores son especificados por el fabricante. El oscilador del ATmega164P/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 ESR se recomienda cristales de 9pF y 12.5 pF.

Los osciladores de baja frecuencia del cristal proporciona una capacitancia de carga interna de cristales típicos de 8.0 pF. Los cristales con recomendaciones de 8.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 y CKSEL0 como se muestra en la figura de la Tabla 8-8.

8.6 Calibrar el Oscilador Interno RC Por defecto, el Oscilador Interno RC proporciona un reloj de aproximadamente 8MHz. Junto con el voltaje y temperatura dependiente, este reloj puede ser calibrado con mucha precisión por el usuario. Ver la tabla 27-4 “Velocidad del Oscilador Interno” para mas detalles.

Page 29: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El dispositivo es enviado con el fusible CKDIV8 programado. Ver “Prescalador del Sistema de Reloj” para más detalles. Este reloj puede ser seleccionado como sistema de reloj por programación del fusible CKSEL como se muestra en la Tabla 8-9. Si es seleccionado, esto operaría con componentes no externos. Durante el reset, el hardware carga el valor de calibración de la pre-programación en el registro OSCCAL y por eso automáticamente calibra el oscilador RC. La precisión de esta calibración es mostrada como calibración de fábrica en la tabla 27-4. Para cargar el registro OSCCAL desde SW, ver “OSCCAL- Registro de Calibración del Oscilador” en la página 40 del datasheet, esto es posible para obtener 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 la Tabla 27-4. Cuando este Oscilador es usado como el reloj del chip, el oscilador del Watchdog todavía sería usado por el Watchdog Timer para el Reseteo a tiempo fuera. 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 determinados por los fusibles SUT como se muestra en la Tabla 8-10 en la página 36 del datasheet.

8.7 Oscilador Interno de 128 kHz El Oscilador Interno de 128 KHz es un oscilador de bajo consumo provisto con un reloj de 128 KHz. La frecuencia nominal es 3V a 25 °C. Este reloj puede ser seleccionado como el sistema de reloj programando los fusibles CKSEL a “0011” como es mostrado en la Tabla 8-11.

Page 30: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

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

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

Cuando esta fuente de reloj es seleccionada, los tiempos de inicio son determinados 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 la frecuencia 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 siguiente puede 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. Note que el Prescalador del Sistema de Reloj puede ser usado para implementar cambios de ejecución de tiempo de la frecuencia del reloj interno mientras todavía asegura una operación

Page 31: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

estable. Referirse a “prescalador del sistema de Reloj” en la Pág. 38 del datasheet para más detalles. 8.9 Oscilador del Timer/Counter El ATmega164P/324P/644P usa el mismo tipo de oscilador del cristal para cristal de baja frecuencia y el oscilador del Timer/Counter. Ver “Oscilador del Cristal de baja frecuencia” en la página 34 del datasheet para mayores detalles. El dispositivo puede operar con Timer/Counter desde un cristal con frecuencia externa de 32.768 KHz o una fuente de reloj externa. Ver “Conexiones del la Fuente 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 en el Registro ASSR es escrito con uno lógico. Ver “el registro de comparación de salida B que contiene valores de 8-bit que continuamente compara con el valor de contador (TCNT2). Esto puede ser usado para generar una Interrupción de comparación a la salida, o generar una forma de onda a la salida en el pin OC2B” en la página 157 del datasheet. 8.10 Buffer del Reloj de Salida El dispositivo puede ser salida del sistema de reloj en el pin CLKO. Al habilitar la salida, el fusible CKOUT ha sido programado. Este modo es conveniente cuando el reloj del chip es usado para manejar otros circuitos en el sistema. El reloj también sería una salida durante el reset, y la operación normal del pin de E/S sería alterada cuando el fusible es programado. Ninguna fuente de reloj, incluyendo el Oscilador interno RC, puede ser seleccionado cuando el reloj es salida en CLKO. Si el prescalador del Sistema de Reloj es usado, esto divide el sistema de reloj que es salida. 8.11 Prescalador de Sistema de Reloj El ATmega164P/324P/644P tiene un Prescalador del sistema de reloj y el sistema de reloj puede ser dividido por configuración de “CLKPR-Registro Prescalador del reloj” en la página 40 del datasheet. Esto puede ser usado para decrementar la frecuencia del sistema de reloj y el consumo de energía cuando el requerimiento para procesamiento en energía es bajo. Esto puede ser usado con todas las opciones de fuente de reloj, y esto afectaría la frecuencia de reloj del CPU y todos los periféricos asíncronos clkI/O, clkADC, clkCPU, and clkFLASH son divididos por factores como se muestra en la Tabla 8-15 en la página 41 del datasheet. Cuando se cambia entre las configuraciones del prescalador, el prescalador del sistema 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 la frecuencia de reloj correspondiente a las configuraciones previas, o la frecuencia correspondiente a configuraciones nuevas. El contador de onda que implementa el Prescalador corre a la frecuencia no dividida del reloj, con lo cual puede ser más rápido que la frecuencia de reloj del CPU. Esto no es posible para determinar el estado del prescalador si esto sería leíble, y el tiempo exacto que toma el cambio desde una división de reloj a otra que no puede ser exactamente predefinida. Desde el tiempo que el valor de CLKPS es escrito, esto toma entre T1 + T2 y T1 + 2*T2 antes de que la nueva frecuencia de reloj sea activada. En este intervalo, la activación de 2 flancos para el reloj son producidos. T1 es el periodo previo del reloj, y T2 es el periodo correspondiente a la configuración del nuevo prescalador. Para evitar cambios unidireccionales de la frecuencia de reloj, un procedimiento de 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 a cero CLKPCE.

Page 32: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Las Interrupciones serian deshabilitadas cuando se carga las configuraciones del Prescalador para estar seguros que el procedimiento de escritura no sea interrumpido. 8.12 Descripción de Registros 8.12.1 OSCCAL – Registro de Calibración de Oscilador

• Bits 7:0 – CAL7:0: Valor de Calibración del Oscilador El Registro de Calibración del Oscilador es usado para la calibración del Oscilador Interno RC y remover la variación de procesos desde la frecuencia del oscilador. El valor de calibración pre-programado es automáticamente escrito en este registro durante el reset del chip, dando la frecuencia de calibración del fabricante como se especifica en la Tabla 27-4 en la página 330 del datasheet. El software de aplicación puede escribir en este registro para cambiar la frecuencia del oscilador. El oscilador puede ser calibrado a frecuencias como es especifica en la Tabla 27-4 en la página 330. La calibración fuera del rango no es garantizada. Note que este oscilador es usado al tiempo de acceso de escritura en la EEPROM y la Flash, y estos tiempos de escritura serían afectados. Si la EEPROM y la Flash son escritas, no calibrar a más de 8.8 MHz. Por otra parte, la escritura de la EEPROM o la Flash puede fallar. El bit CAL7 determina el rango de operación para el oscilador. Configurando este bit a 0 da el rango de frecuencia más bajo, en otras palabras configurando OSCCAL = 0x7F da la frecuencia más alta que OSCCAL = 0x80. Los bits CAL6..0 son usadas para modular la frecuencia dentro del rango seleccionado. 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.12.2 CLKPR – Registro Prescalador del Reloj

• Bit 7 – CLKPCE: Habilitación de cambio del Prescalador del Reloj El bit CLKPCE sería escrito a uno lógico al habilitar el cambio de los bits CLKPS. El bit CLKPCE es solo actualizado cuando los otros bits en CLKPR son simultáneamente escritos a cero. CLKPCE es limpiado por hardware cuatro ciclos 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ía el bit CLKPCE. • Bits 3:0 – CLKPS3:0: Bits de Selección del Prescalador del Reloj 3 – 0 Estos bits definen el factor de división entre la fuente de reloj seleccionada y el sistema de reloj interno. Estos bits pueden ser escritos corriendo el tiempo o variando la frecuencia del reloj en las aplicaciones requeridas. Cuando el divisor divide en entrada del reloj Maestro del MCU, la velocidad para todos los 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 de datasheet. El fusible CKDIV8 determina el valor inicial de los bits CLKPS. Si CKDIV8 es desprogramado, los bits CLKPS serían reseteados a “0000”. Si CKDIV8 es programado, los bits CLKPS son reseteados a “0011”, dando un factor de división de 8 para el inicio. Esto debería ser usado si la fuente de reloj

Page 33: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

seleccionada tiene una frecuencia más alta que la máxima frecuencia de los dispositivos presentes en condiciones de operación. Note que cualquier valor puede ser escrito en los bits CLKPS indiferentemente de la configuración de los fusibles CKDIV8. El software de aplicación aseguraría que un factor de división suficiente sea escogido si la fuente de reloj seleccionada tiene una frecuencia más alta que la frecuencia máxima de los dispositivos presentes en condiciones normales. El dispositivo es enviado con el Fusible 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 el MCU, por eso ahorra energía. El AVR proporciona varios modos sleep permitiendo al usuario adaptar el consumo 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. 9.2 Modo Sleep (Descanso) La siguiente figura muestra los diferentes sistemas de reloj en el ATmega164P/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 la capacidad de deshabilitar el BOD:

Page 34: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

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 ser escrito 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 modo sleep, el MCU despierta. El MCU es parado durante cuatro ciclos además del tiempo de arranque, ejecuta la rutina de interrupción, y retoma la ejecución de la siguiente instrucción SLEEP. El contenido del Archivo de Registro y la SRAM son inalterables cuando el dispositivo despierta del descanso (sleep). Si ocurre un reset durante el modo sleep, el MCU despierta y ejecuta desde el Vector 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 el periodo de descanso (sleep). Para ahorrar energía, es posible deshabilitar el BOD por software para algunos modos sleep. El consumo máximo del modo sleep estará entonces en el mismo nivel como cuando BOD es deshabilitado globalmente por los fusibles. Si el BOD es deshabilitado por software, la función del BOD es apagada inmediatamente después de entrar en modo de descanso. Una vez que despierta del modo sleep, el BOD es activado automáticamente otra vez. Esto asegura el funcionamiento seguro en caso de que el nivel de VCC cae durante el período de descanso. Cuando el BOD ha sido deshabilitado, el tiempo de arranque desde el modo de descanso será aproximadamente 60us para asegurar que el BOD esté trabajando correctamente 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 el registro MCUCR. Al escribir uno en este bit se apagará el BOD en el pertinente modo 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

Page 35: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Cuando los bits SM2..0 son escritos como 000, la instrucción SLEEP hará que el MCU entre en modo Idle, deteniendo el CPU pero permitiendo que el SPI, USART, Comparador Análogo, ADC, Interfaz Serial de 2 wire (2 hilos), Timer/Contador, Watchdog y el sistema de interrupciones continúe funcionando. Este modo básicamente detiene el reloj del CPU y el reloj de la Flash, mientras permite que los otros relojes funcionen. El modo Idle le permite al MCU que se despierte de las interrupciones activadas externas así como el desbordamiento del Timer y las interrupciones de transmisión Completas del USART. Si despierta desde la interrupción del Comparador Análogo, el Comparador Analógico puede activarse por configuración del bit ACD en el Control comparador y Registro de estado – ACSR. Esto reducirá el consumo de energía en el modo Idle. SI el ADC es habilitado una conversión comenzará automáticamente cundo se ingresa 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 el MCU entre en el Modo de Reducción de ruido del ADC, deteniendo al CPU pero permitiendo al ADC, las interrupciones externas, la Interfaz Serial de 2 hilos(2 wire), Timer/Contador2 y Watchdog continuar funcionando (si es habilitado). Este modo básicamente detiene el reloj de las entradas y salidas, el reloj del CPU y el reloj de la FLASH, mientras permite que los otros relojes estén funcionando. Esto mejora el ambiente de ruido del ADC, permitiendo alta resolución en las medidas. Si el ADC es habilitado, una conversión comienza automáticamente cuando se entra en este modo. Aparte de la Interrupción de Conversión Completa del ADC, solo un reset externo, un reset del sistema del Watchdog, una Interrupción del Watchdog, un reset del Brown-out, una interrupción de la Interfaz serial de 2 hilos (2 wire), una interrupción externa en INT7:4 o un cambio de interrupción pueden despertar al MCU desde el modo de reducción de ruido del ADC. 9.6 Modo Power-down Cuando los bits SM2..0 son escritos como 010, la instrucción SLEEP hace que el MCU entre en el Modo Power-down. En este modo, el oscilador externo es detenido, mientras la interrupción externa, la interfaz serial de 2 wire (2 hilos), y el 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ón en 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 despertar desde el modo power-down, el nivel cambiado debe sostenerse durante algún tiempo para despertar al MCU. Cuando despierta del modo Power-down, hay un retardo antes de despertarse y continúa hasta que despierte totalmente. Esto permite 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 el periodo de reset. 9.7 Modo Power-save Cuando los bits SM2..0 son escritos como 011, la instrucción SLEEP hace que el MCU 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 funcionara durante el descanso. Este dispositivo puede despertarse desde un desbordamiento del Timer o una Salida del Comparador desde el

Page 36: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Timer/Contador2 si los bits correspondientes a la interrupción del Timer/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 en el 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 el Timer/contador2 no está usando el reloj sincrónico, la fuente del reloj es detenido durante el descanso (sleep). Note que aun cuando el reloj síncrono está corriendo en Power-save, este reloj sólo está disponible para el Timer/Counter2. 9.8 Modo Standby Cuando los bits SM2..0 son escritos como 110 y un cristal/resonador externo es seleccionado, 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 es kept running. En el modo Standby, el dispositivo se despierta en 6 ciclos de reloj. 9.9 Modo Standby Extendido Cuando los bits SM2..0 son escritos como 111 y un cristal/resonador externo es seleccionado, la instrucción SLEEP hace que el MCU entre en el Modo Standbye extendido. Este modo es idéntico al modo Power-save con la excepción que el Oscilador es kept running. En el modo Stanbye Extendido, el dispositivo se despierta en 6 ciclos de reloj 9.10 Registro Reducción de Energía El Registro Reducción de Energía (PRR), proporciona un método para detener los 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án ocupados, por está razón los periféricos deben en la mayoría de los casos ser deshabilitados antes de que se detenga el reloj. Al despertarse un periférico, el cual ha sido limpiado el bit en PRR, pone a los periféricos en igual estado como antes de cerrarse. El cierre de los periféricos puede ser usado en modo Idle, Modo Activo para reducir significantemente el sobre consumo de energía. En otros modos de descanso, 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 de energía en un sistema controlado por un AVR. En general, los modos de descanso deben ser usados tanto como sea posible, y el modo sleep debe ser seleccionado dependiendo de la función del dispositivo que este operando. Todas las funciones no necesitan ser deshabilitadas. En particular, los módulos siguientes necesitan una consideración especial cuando tratan de obtener el más bajo consumo posible. 9.11.2 Conversión Análoga a Digital Si habilitó, el ADC será habilitado en todos los modos de descanso. Para ahorrar energía, el ADC debe ser deshabitado antes de entrar en cualquier modo sleep. Cuando el ADC es apagado y encendido otra vez, la siguiente conversión será una conversión extendida.

Page 37: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

9.11.2 Comparador Análogo Cuando entra en modo Idle, el comparador Análogo debe ser deshabilitado si no 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, el Comparador Análogo es automáticamente deshabilitado. Sin embargo, si el Comparador Análogo es configurado para usar la Referencia del Voltaje Interno como entrada, el Comparador Análogo debe ser deshabilitado en todos los modos de descanso. De otro modo, la Referencia de voltaje Interna deberá ser habilitada, independientemente del modo de descanso. 9.11.3 Brown-out Detector Si el Brown-out Detector no es necesario para la aplicación, este modo debe ser apagado. 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 el consumo total de corriente. 9.11.4 Referencia de Voltaje Interna La Referencia de Voltaje Interna será habilitada cuando se necesite detectar el Brown-out, el Comparador Análogo o el ADC. Si estos módulos son deshabilitados como se describe en la sección de abajo, la referencia de Voltaje Interna será deshabilitada y esta no consumirá energía. Cuando se prende otra vez, el usuario debe poner la referencia antes de que sea usado. 9.11.5 Watchdog Timer Si el Watchdog Timer no es necesario para la aplicación, el módulo debe ser apagado. Si el Perro Watchdog Timer es habilitado, este será habilitado en todos los modos, y además, siempre consumirá energía. En el más profundo de los descansos (sleep), este contribuirá significantemente al consumo total de corriente. 9.11.6 Pines del Puerto Cuando entra en modo sleep, todos los pines del puerto deben ser configurados para usar la mínima energía. Lo más importante es por lo tanto asegurar que ningún pin maneje cargas resistivas. En el modo de descanso cuando el reloj de las E/S y el reloj del ADC son detenidos, los buffers de entrada del dispositivo serán deshabilitadas. Esto asegura que no exista consumo de energía cuando una entrada lógica no es necesaria. En algunos casos, la entrada lógica es necesaria 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 o tiene 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 ser deshabilitado de todos los tiempos. Una señal análoga para VCC/2 en la entrada de un pin puede causar lo suficiente de corriente incluso en modo activo. Los buffers de entrada digital pueden deshabilitarse escribiendo en el registro de desabilitación de entradas digitales (DIDR1 y DIDR0). 9.11.7 Sistema On-chip Debug Si el Sistema On-chip Debug es habilitado por el fusible OCDEN y el chip entra en modo sleep, la fuente del reloj principal será habilitada, y además, siempre consumirá energía. En el más profundo de los modos sleep (descanso), este contribuirá significantemente al consumo total de corriente. Hay tres vías alternativas para deshabilitar el sistema OCD:

Page 38: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

1. Deshabilitar el fusible del OCDEN 2. Deshabilitar el Fusible del JTAGEN 3. 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 Sleep El Registro de Control para el Modo sleep contiene bits para el control de la energía.

• Bits 3, 2, 1 – SM2:0: Selección de Bits 2, 1, y 0 para el Modo Sleep Estos 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 modo sleep cuando la instrucción SLEEP es ejecutada. Para evitar que el MCU entre al modo sleep es recomendable escribir a uno el bit SE antes de ejecutar la instrucción SLEEP y para limpiar inmediatamente después de despertarse. 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 el descanso (sleep). Al escribir en el bit BODS, se controla por una secuencia de tiempos y un bit de habilitación, BODSE en el registro MCUCR. Para deshabilitar el modo de descanso, el BODS debe ser puesto a uno y el BODSE debe estar en cero en cuatro ciclos del reloj.

Page 39: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El bit BODS es activado en tres ciclos del reloj después de ser configurado. Una instrucción SLEEP debe ser ejecutada mientras el BODS es activado para apagar el BOD para el nuevo modo de descanso. El bit BODS es automáticamente limpiado 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 en la descripción del BODS. La deshabilitación del BOD es controlada por una secuencia de tiempos. 9.12.3 PRR – Registro Reducción de Energía

• Bit 7 - PRTWI: Reducción de Energía TWI Al escribir un uno lógico en este bit cierra el TWI mediante la detención del reloj. 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 PRTIM2 Al escribir un uno lógico en este bit pone el modulo del Timer/Contador2 en modo asincrónico (AS2 es 0). Cuando el Timer/Contador2 es habilitado, la operación continuará como antes de que haya sido cerrado. • Bit 5 - PRTIM0: Reducción de Energía del Timer/Contador0 Al 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. • Bit 4 - PRUSART1: Reducción de Energía en el USART1 Al escribir un uno lógico en este bit se cierra el USART1 detenido el reloj del módulo. Cuando despierta otra vez el USART1, el USART1 debe reinicializarse para asegurar su correcto funcionamiento. • Bit 3 - PRTIM1: Power Reduction Timer/Counter1 Al 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 antes de que haya sido cerrado. • Bit 2 - PRSPI: Power Reduction Serial Peripheral Interface Al escribir un uno lógico en este bit se cierra el módulo de Interfaz Periférica Serial 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 del módulo. Cuando despierta otra vez el USART0, el USART0 debe reinicializarse para asegurar su correcto funcionamiento. • Bit 0 - PRADC: Power Reduction ADC

Page 40: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Al escribir un uno lógico en este bit se cierra el ADC. El ADC debe ser deshabilitado antes de que se cierre el módulo. El comparador análogo no puede usar el MUX de entrada del ADC cuando el ADC es cerrado. 10. Control del Sistema y Reset 10.0.1 Reset del AVR Durante el reset, todos los registros de E/S se ponen en su valor inicial, y el programa empieza a ejecutarse desde el Vector de Reset. La instrucción localizada en el Vector de Reset debe ser un JMP – Salto Absoluto – instrucción para reiniciar la rutina manualmente. Si el programa nunca habilita una fuente de interrupciones, el Vector de interrupciones no es usado, y el código de programa puede ser ubicado en esta localidad. Es también del caso, si el Vector de Reset, está en la sección de aplicaciones mientras el Vector de Interrupciones está en la sección baja del programa (boot), o viceversa. El diagrama del circuito se 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 estado inicial cuando una fuente de reset está activa. Esto no requiere que cualquier fuente de reloj esté corriendo. Después de resetear todas las fuentes ha sido desactivado, se efectúa un conteo de retardo, alargándose el reset interno. Esto permite lograr una estabilidad antes de la operación normal de inicio. El periodo de tiempo para el conteo del retardo está definido por el usuario a travé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ón está por debajo del umbral del Power-on Reset (VPOT).

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

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

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

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

Page 41: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

10.0.3 Reset del Power-on Un pulso del Power-on (POR) es generado por un circuito de detención interno del chip. El circuito del POR está activado cuando el VCC esta por debajo del nivel 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 desde el Power-on. Alcanzar el voltaje umbral del Power-on llama al contador del programa, el cual determina cuanto tiempo el dispositivo está en reset desde de subir 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.

Page 42: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

10.0.4 Reset Externo Un reset externo es generado por un nivel bajo en el pin de RESET. Los pulsos de RESET más largos que el ancho del pulso mínimo generan un reset, o si el reloj no está corriendo. Pulsos cortos no garantizan generar un reset. Cuando la señ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 ha terminado.

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 la comparació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 nivel de 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.

Page 43: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

10.0.6 Reset del Watchdog Cuando hay un tOUT, esto genera un pulso de reset corto de una duración del ciclo CK. En el flanco de bajada de este pulso, el tiempo de retardo empieza a contar el periodo de tiempo del tOUT.

10.1 Referencia del Voltaje Interno El ATmega164P/324P/644P ofrece una referencia interna. Esta referencia se usa para Detectar el Brown=out, y puede usarse como una entrada al Comparador Analógico o al CONVERSOR ANALÓGICO-DIGITAL. 10.1.1 Habilitación de la señal de voltaje interna y tiempo de arranque La referencia de voltaje tiene un arranque que influencia en la forma en que este debería usarse. Para ahorrar energía, la referencia no siempre es activada. La referencia esta activada en las siguientes situaciones:

1. Cuando el BOD es habilitado (por programación del fusible BODLVEL [2:0]). 2. Cuando la referencia Bandgap es conectada al comparador analógico (por configuración

del bit ACBG en el registro ACSR). 3. Cuando el ADC es habilitado.

Además, cuando el BOD no es habilitado, después de configurar el bit ACBG o deshabilitar el ADC, el usuario debe siempre iniciar la referencia antes de que la salida del comparador Análogo sea usada. Para reducir el consumo de energía en el modo Power-dowm, el usuario puede evitar las tres condiciones de arriba para asegurar que la referencia sea apagada antes de entrar en el modo Power-dowm.

Page 44: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

10.2 Watchdog Timer 10.2.1 Características: • Contador desde un Oscilador dentro del chip • 3 Modos de Operación – Interrupciones – Reinicio del Sistema – Reinicio de Interrupciones y del sistema • Periodo del Time-out seleccionable desde 16ms to 8s • Possible Hardware fuse Watchdog always on (WDTON) for fail-safe mode 10.2.2 Vista Global El ATmega164P/324P/644P tiene un Watchdog timer mejorado (WDT). El WDT es un contador de ciclos de tiempos de un oscilador separador en el chip de 128Khz. El WDT produce una interrupción o un reset al sistema cuando el contador alcanza el valor dado en el time/out. En el modo de operación normal, esto requiere que el sistema use la instrucción WDR / Watchdog Timer Reset/ para reiniciar al contador antes de que alcance el valor del time/out. Si el sistema no reinicia el contador, se producirá una interrupción o se reiniciara el sistema.

En el modo de interrupción, el WDT produce una interrupción cuando el tiempo termina. Esta interrupción puede ser usada para despertar al dispositivo del modo de descanso y también como un contador del sistema general: como por ejemplo para limitar el tiempo máximo permitido para operaciones seguras, dando una interrupción cuando funciona mas tiempo de lo esperado. En el modo de Reset del Sistema, el WDT da un reset cuando termina el tiempo. Esto es típicamente usado para prevenir desconexiones del sistema en caso de código runaway. El tercer modo, Modo de interrupciones y Reset del sistema, combinas los otros dos modos mediante el primero genera una interrupción y entonces conecta el modo de Reset del sistema. Este modo permitirá un cierre seguro por ejemplo ahorrando los parámetros críticos antes de un reset del sistema.

Page 45: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El Watchdog siempre enciende el fusible WDTON, si programando forzamos al WDT para entrar en modo de reset del sistema. Cuando el fusible es programado el bit WCE en el modo de Reset del Sistema y el bit WDIE en el modo de Interrupción son puestos en 1 y 0 respectivamente. Para mayor seguridad del programa, el Watchdog debe ser configurado siguiendo los siguientes pasos:

1. En operaciones similares, escribir un uno lógico para cambiar el bit WDEN y WDE del Watchdog. Un uno lógico debe ser escrito en el WDE para un previo valor del bit WDE.

2. Entre las siguientes cuatro ciclos de reloj, escribir en el WDE y en los bits del prescalador del Watchdog como requiera, pero con el bit WDCE limpiado. Esto debe ser hecho con una sola operación.

10.3 Descripción de los Registros 10.3.1 MCUSR – Registro de Estado MCU El Registro de Estado MCU brinda información las causas por las cuales las fuentes de reset provocan un reset en el MCU.

• Bit 4 – Banderas del Reset JTRF: JTAG Este bits es puesto a uno si un reset es cuando por un uno lógico en el Registro de Reset JTAG seleccionado por la instrucción JTAG AVR_RESET. Este bit es reseteado por un reset del Power-on, o por un cero lógico en la bandera. • Bit 3 – WDRF: Bandera del reset del Watchdog Este bit es puesto a uno si ocurre un Reset del Watchdog. El bit es reseteado por un Reset del Power-on o por la escritura de un cero lógico en la bandera. • Bit 2 – BORF: Bandera de reset del Brown-out Este bit es puesto a uno si ocurre un Reset del Brown-out. El bit es reseteado por un Reset del Power-on, o por una escritura de un cero lógico en la bandera. • Bit 1 – EXTRF: Bandera de Reset Externo Este bit es puesto a uno si ocurre un Reset externo. El bit es reseteado por un reset del Power-on, o por la escritura de un cero lógico en la bandera. • Bit 0 – PORF: Bandera de Reset del Power-on Este bit es puesto a uno si ocurre un Reset del Power-on. El bit es reseteado solo por una escritura de un cero lógico en la bandera. Para ser uso de la Bandera de Reset para identificar una condición de reset, el usuario debe leer y entonces resetear el MCUSR tan pronto sea posible en el programa. Si el registro es limpiado antes de que ocurra otro reset, la fuente de reset ser encontrada mediante la revisión de las Banderas de Reset. 10.3.2 WDTCSR – Registro de Control del Watchdog Timer

Page 46: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 7 - WDIF: Bandera de Interrupción del Watchdog Este bit es puesto a uno cuando ocurre un time-out en el Watchdog Timer y el Watchdog Timer es configurado por interrupción. WDIF es limpiado por hardware cuando se ejecuta el correspondiente vector de interrupción. Alternativamente, WDIF es limpiado mediante la escritura de un uno lógico en la bandera. Cuando el Bit I en el registro de estado es configurado, la interrupción del Watchdog Timer es ejecutada. • Bit 6 - WDIE: Habilitación de Interrupción del Watchdog Cuando este bit es escrito como uno y el bit I en el Registro de estado es configurado, la interrupción del Watchdog es habilitada. Si WDE es limpiada en combinación con su configuración, el Watchdog Timer está en modo de Interrupción, y la interrupción es ejecutada si ocurre un time-out en el Watchdog Timer. Si el WDE es configurado, el Watchdog Timer está en modo de Interrupción y rset del Sistema. El primer time-out en el Watchdog Timer pondrá en uno el WDIF. Al ejecutarse el vector de interrupción correspondiente limpiara automáticamente WDIE y WDIF por hardware. Esto es usado para brindar seguridad al Watchdog Timer mientras usa la interrupción. Este sin embargo no debería estar en la misma rutina de interrupción, porque puede comprometer la seguridad del Sistema de reset del Watchdog. Si la interrupción no es ejecutada antes del siguiente time-out, un reset del Sistema será aplicado.

• Bit 4 - WDCE: Habilitación de cambio del Watchdog Este es usado en secuencias de tiempos para cambiar los bits WDE y el prescalador. Para limpiar el bit WDE, y/o cambiar los bits del prescalador, WDCE debe ser configurado. Una vez escrito a uno, por hardware se limpiará WDCE por cuatro ciclos de reloj. • Bit 3 - WDE: Habilitación del Sistema de Reset del Watchdog El WDE es overridden por WDRF en el MCUSR. Esto significa que WDE es siempre puesto a uno cuando WDRF es configurado. Para limpiar WDE, WDRF debe ser limpiado primero. Este elemento asegura múltiples resets durante condiciones que causan problemas, y asegura ante de problemas de arranques. • Bit 5, 2:0 - WDP3:0: Prescalador 3, 2 ,1 y 0 del

Page 47: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Los bits WDP3:0 determinan los prescaladores (divisores) del Watchdog Timer cuando el Watchdog Timer está corriendo. Los valores de los diferentes prescaladores (divisores) y sus correspondientes periodos de time-out se muestran en la siguiente tabla 10-2.

11. INTERRUPCIONES

Page 48: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

11.2 Vectores de Interrupción ATmega164P/324P/644P

11.3 DESCRIPCION DE REGISTROS 11.3.1 MCUCR –Registro de control MCU

Page 49: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 1 – IVSEL: Selección del vector de interrupción Cuando el bit IVSEL es cero, los vectores de interrupción son puestos al comienzo de la memoria Flash. Cuando este bit es uno, los vectores de interrupción son movidos al comienzo de la sección Boot Loader de la Flash. La actual dirección de comienzo de la sección Boot es determinada por los fusibles BOOTSZ. Para evitar cambios unidireccionales de las tablas de los vectores de interrupciones se procede a los siguientes cambios en el bit IVSEL: a. Habilitar el cambio en el vector de interrupción escribiendo uno en el bit (IVCE). b. Dentro de cuatro ciclos de reloj, escribir el valor deseado a IVSEL mientras se escribe cero a IVCE. Las Interrupciones automáticamente son deshabilitadas mientras la secuencia es ejecutada. Las interrupciones son deshabilitadas cuando es uno en el ciclo IVCE, y permanecen deshabilitadas hasta la siguiente instrucción escrita en Bisel. Si Bisel no es escrita, las interrupciones permanecen deshabilitadas por cuatro ciclos. El bit-I del registro de estado no es afectado por la desabilitación automática. • Bit 0 – IVCE: Habilitación de Cambios del Vector Interrupción El bit IVCE será escrito con uno lógico al habilitar el cambio del bit IVSEL. IVCE es puesto en cero por hardware por cuatro ciclos después es escrito o es cero cuando IVSEL es escrito directamente. Configurando los bits del IVCE desabitará las interrupciones.

12. INTERRUPCIONES EXTERNAS 12.1 DESCRIPCIÓN DE REGISTROS 12.2.1 EICRA – Registro de Control de Interrupciones A

• Bits 7:6 – Reservados Estos bits son reservados en el ATmega164P/324P/644P, y siempre son escritos con cero. • Bits 5:0 – ISC21, ISC20 – ISC00, ISC00: Interrupciones Externas 2 - 0 Sentido de los Bits de Control La interrupciones externas 2-0 son activadas por los pin externos INT2:0 si la bandera I en SREG y la correspondiente mascara de Interrupción en el EIMSK es uno. El nivel en los pines externos corresponde a uno en el EIMSK. Los límites de la forma de onda cuadrada en INT2, INT0 son registrados asincrónicamente. Los pulsos en INT2:0 son más extensos que el mínimo ancho de pulso dado en las “Interrupciones Externas” generadas en la interrupción. Pequeños pulsos no son garantizados para generar una interrupción. Si la interrupción a nivel bajo es seleccionada, el nivel bajo seria sostenido hasta la realización de la actualización ejecutando la instrucción para generar la interrupción. Si se habilita, el nivel activo de interrupción se generará una llamada de la interrupción hasta que el pin este en bajo. Cuando se cambia el bit, ISCn, la interrupción puede ocurrir. Por consiguiente, es recomendable primero deshabitar INTn encerando la habilitación de este bit en el registro EIMSK.

Page 50: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Luego, el bit ISCn puede ser cambiado. Finalmente, la bandera de interrupción INTn debería ser limpiada por la escritura de uno lógico en este bit de la bandera de interrupción (INTFn) en el registro EIFR antes de que la interrupción sea nuevamente habilitada. Sentido de Control de la Interrupción

ISCn1 ISCn0 Descripción

0 0 El nivel bajo de INTn genera un pedido de interrupción

0 1 Cualquier flanco de INTn genera un pedido de interrupción asincrónico

1 0 El flanco de bajada de INTn genera un pedido de interrupción asincrónico

1 1 El flanco de subida de INTn genera un pedido de interrupción asincrónico

12.2.2 EIMSK – Registro Mascara de Interrupción Externa

• Bits 2:0 – INTF2:0: External Interrupt Flags 2 - 0 Cuando algún flanco o cambio lógico en el pin INT dispara un pedido de interrupción, INTF2:0 llega hacer uno. Si el bit-I en el SREG y la correspondiente habilitación de interrupción en el bit, INT2:0 EIMSK, son uno, el MCU saltara al vector de interrupción. La bandera es limpiada cuando la rutina de interrupción es ejecutada. Alternativamente, la bandera puede ser limpiada por la escritura de uno lógico. Estas banderas son siempre limpiadas cuando INT2:0 son configuradas como nivel de interrupción. Note que cuando entra en modo sleep con las interrupciones INT2:0 deshabilitadas, los buffers de entrada en estos pines serian deshabilitados. Esto puede causar un cambio lógico en las señales internas con uno en las banderas INTF2:0. 12.2.4 PCICR –Registro de Control Cambio del pin de Interrupción

• Bit 3 – PCIE3: Habilitación de la Interrupción 3 cambiada al PIN Cuando el bit PCIE3 es uno y el bit-I en el Registro de Estado (SREG) es uno, el cambio de pin de interrupción 3 es habilitado. Cualquier cambio en cualquier habilitación en los pines PCINT31..24 causará una interrupción. La correspondiente interrupción demandada al cambio de pin de interrupción es ejecutada desde el vector de Interrupción PCI3. Los pines PCINT31..24 son habilitados individualmente por el Registro PCMSK3. • Bit 2 – PCIE2: Habilitación de la Interrupción 2 cambiada al PIN Cuando el bit PCIE2 es uno y el bit-I en el Registro de Estado (SREG) es uno, el cambio de pin de interrupción 2 es habilitado. Cualquier cambio en cualquier habilitación en los pines PCINT23..16 causara una interrupción. La correspondiente interrupción demandada al cambio de pin de interrupción es ejecutada desde el vector de Interrupción PCI1. Los pines PCINT23..16 son habilitados individualmente por el Registro PCMSK2.

Page 51: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 1 – PCIE1: Habilitación de la Interrupción 1 cambiada al PIN Cuando el bit PCIE1 es uno y el bit-I en el Registro de Estado (SREG) es uno, el cambio de pin de interrupción 1 es habilitado. Cualquier cambio en cualquier habilitación en los pines PCINT15..8 causara una interrupción. La correspondiente interrupción demandada al cambio de pin de interrupción es ejecutada desde el vector de Interrupción PCI1. Los pines PCINT15..8 son habilitados individualmente por el Registro PCMSK1. • Bit 0 – PCIE0: Habilitación de la Interrupción 0 cambiada al PIN Cuando el bit PCIE0 es uno y el bit-I en el Registro de Estado (SREG) es uno, el cambio de pin de interrupción 0 es habilitado. Cualquier cambio en cualquier habilitación en los pines PCINT7..0 causará una interrupción. La correspondiente interrupción demandada al cambio de pin de interrupción es ejecutada desde el vector de Interrupción PCI1. Los pines PCINT7..0 son habilitados individualmente por el Registro PCMSK0. 12.2.5 PCIFR – Cambio de Pin en el Registro de banderas de Interrupción

• Bit 3– PCIF3: Cambio de Pin en la Bandera de Interrupción 3 Cuando un cambio lógico en cualquier pin de disparo PCINT31..24 en demanda de una interrupción, PCIF3 llegara a ser uno. Si el bit-I en el SREG y el bit PCIE3 en EIMSK son uno, el MCU saltara al correspondiente vector de interrupción. La bandera es limpiada cuando la rutina de interrupción es ejecutada. Alternativamente, la bandera puede ser limpiada por la escritura de uno lógico. • Bit 2 – PCIF2: Cambio de Pin en la Bandera de Interrupción 2 Cuando un cambio lógico en cualquier pin de disparo PCINT23..16 en demanda de una interrupción, PCIF2 llegara a ser uno. Si el bit-I en el SREG y el bit PCIE2 en EIMSK son uno, el MCU saltara al correspondiente vector de interrupción. La bandera es limpiada cuando la rutina de interrupción es ejecutada. Alternativamente, la bandera puede ser limpiada por la escritura de uno lógico. • Bit 1 – PCIF1: Cambio de Pin en la Bandera de Interrupción 1 Cuando un cambio lógico en cualquier pin de disparo PCINT15..8 en demanda de una interrupción, PCIF1 llegara a ser uno. Si el bit-I en el SREG y el bit PCIE1 en EIMSK son uno, el MCU saltara al correspondiente vector de interrupción. La bandera es limpiada cuando la rutina de interrupción es ejecutada. Alternativamente, la bandera puede ser limpiada por la escritura de uno lógico. • Bit 0 – PCIF0: Cambio de Pin en la Bandera de Interrupción 0 Cuando un cambio lógico en cualquier pin de disparo PCINT7..0 en demanda de una interrupción, PCIF0 llegara a ser uno. Si el bit-I en el SREG y el bit PCIE0 en EIMSK son uno, el MCU saltara al

Page 52: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

correspondiente vector de interrupción. La bandera es limpiada cuando la rutina de interrupción es ejecutada. Alternativamente, la bandera puede ser limpiada por la escritura de uno lógico. 12.2.6 PCMSK3 –Cambio de Pin en el Registro Mascara 3

• Bit 7:0 – PCINT31:24: Cambio de Pin en el Registro Mascara 31:24 Cada selección de los bits PCINT31:24 si el cambio de pines de interrupción son habilitados en las correspondientes pines de E/S. Si PCINT31:24 es uno y el bit PCIE2 en PICICR es uno, el cambio de pines de interrupción es habilitado en la correspondiente pin E/S. Si PCINT31..24 es limpiado, el cambio de pin de interrupción en el correspondiente pin de E/S es deshabilitado. 12.2.7 PCMSK2 – Cambio de Pin en el Registro Mascara 2

• Bit 7:0 – PCINT23:16: Cambio de Pin en el Registro Mascara 23..16 Cada selección de los bits PCINT23:16 si el cambio de pines de interrupción son habilitados en las correspondientes pines de E/S. Si PCINT23:16 es uno y el bit PCIE2 en PICIR es uno, el cambio de pines de interrupción es habilitado en la correspondiente pin E/S. Si PCINT23..16 es limpiado, el cambio de pin de interrupción en el correspondiente pin de E/S es deshabilitado. 12.2.8 PCMSK1 – Cambio de Pin en el Registro Mascara 1

• Bit 7:0 – PCINT15:8: Cambio de Pin en el Registro Mascara 15..8 Cada selección de los bits PCINT15:8 si el cambio de pines de interrupción son habilitados en las correspondientes pines de E/S. Si PCINT15:8 es uno y el bit PCIE1 en EIMSK es uno, el cambio de pines de interrupción es habilitado en la correspondiente pin E/S. Si PCINT15..8 es limpiado, el cambio de pin de interrupción en el correspondiente pin de E/S es deshabilitado. 12.2.9 PCMSK0 – Cambio de Pin en el Registro Mascara 0

• Bit 7:0 – PCINT7:0: Cambio de Pin en el Registro Mascara 7..0 Cada selección de los bits PCINT7:0 si el cambio de pines de interrupción son habilitados en las correspondientes pines de E/S. Si PCINT7:0 es uno y el bit PCIE0 en PCICR es uno, el cambio de pines de interrupción es habilitado en la correspondiente pin E/S. Si PCINT7..0 es limpiado, el cambio de pin de interrupción en el correspondiente pin de E/S es deshabilitado.

Page 53: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

13. Pórticos de E/S Todos los Pórtico del AVR tienen una verdadera modificación de lectura-escritura cuando son usados como pórticos generales digitales. Esto significa que la dirección de un pin de un pórtico puede ser cambiado sin intención cargando la dirección de cualquier otro pin con las instrucciones SBI y CBI. Los mismo se aplica cambiando el valor manejado (si configuramos como salida) o habilitación/desabilitación de las resistencias pull-up (si se configura como entrada)- Cada buffer de salida tendría un manejo similar de las características con la capacidad de ambas fuentes. El pin manejado es habilitado fuertemente al manejar LED displays directamente. Todos los pines del pórtico tienen pull-up que pueden ser seleccionados individualmente con una fuente de voltaje de resistencia invariante. Todos lo pines E/S tienen diodos de protección ambos a Vcc y Tierra como se indica en la figura. 13.1 Esquema Equivalente de los Pines de E/S

Todos los registros y bits referidos en estas acciones son escritos en forma general. La letra minúscula “x” representa el número para el pórtico, y la letra minúscula “n” representa el número de bit. Sin embargo, cuando usamos el registro o los bits definidos en el programa, se usaría adecuadamente. Por ejemplo, para el bit 3 en el pórtico PORTB3, este documento lo denota como PORTxn. Tres de localidades de dirección de memoria de E/S son localizadas por cada pórtico, cada una para el Registro de Datos- PORTx, Registro de Dirección de Datos –DDRx, y los Pines de Entrada al Pórtico-PINx. Los Pines de Entrada al Pórtico de E/S son solo de lectura, mientras que el Registro de datos y el Registro de Direcciones son de lectura/escritura. Si embargo, escribiendo uno lógico en el bit del registro PINx, resultaría una inversión en el correspondiente bit en el Registro de Datos. Adicionalmente, las Pull-up deshabilitadas- bit PUD en MCUCR deshabilita la función de las pull-up para todos los pines en todos los pórticos cuando son uno. La mayoría de los pines de los pórticos son multiplexados con funciones alternativas para los dispositivos. Note que habilitando las funciones alternativas de algunos de los pórticos no afectaría al uso de otros pines en el pórtico como E/S generales digitales. 13.2 Pórticos como E/S Generales Analógicas Los pórticos son E/S bi-direccionales con pull-up internas opcionales. La siguiente figura muestra la descripción de funcionamiento de un pin de E/S, generalmente llamado Pxn:

Page 54: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

13.2.1 Configurando el Pin Cada pin del pórtico esta compuesto de tres registros: DDxn, PORTxn, y PINxn, los bits DDXn son accesos a la dirección del DDRx E/S, los bits PORTxn direccional al PORTx E/S, y los bits del PINnx direccional al PINx E/S. El bit DDxn en el registro DDRx selecciona la dirección de este pin. Si DDxn es escrito a uno lógico Pxn es configurado como un pin de salida. Si DDxn es escrito con cero lógico, Pxn es configurado como un pin de entrada. Si PORTxn es escrito como uno lógico cuando el pin es configurado como un pin de entrada, las resistencias pull-up son activadas. Para cambiar a apagar las resistencias pull-up, el PORTxn tuvo que ser escrito con cero lógico o el pin tubo que ser configurado como pin de salida. Los pines del pórtico son de declarados cuando la condición reset llega hacer activada. Incluso si el reloj no esta corriendo. Si el PORTxn es escrito con uno cuando el pin es configurado como un pin de salida, el pin del pórtico es manejado con uno. Si el PORTxn es escrito con cero lógico cuando el pin es configurado como salida, el pin del pórtico es manejado con cero. 13.2.2 Invirtiendo el Pin Escribiendo uno lógico en el PINxn, se invierte el valor de PORTxn, independientemente del valor de DDRxn. Note que la instrucción SBI pude ser usada para invertir un pin de un pórtico de manera sencilla. 13.2.3 Cambiando entre Entrada y Salida Cuando cambiamos entre ({DDxn, PORTxn} = 0b00) y la salida en alto ({DDxn, PORTxn}= 0b11), e inmediatamente con la habilitación de las pull-up {DDxn, PORTxn} = 0b01) o la salida en bajo ({DDxn, PORTxn} = 0b10) ocurriría. Normalmente, la habilitación de las pull-up es aceptable, como una alta-impedancia no seria la diferencia entre un fuerte manejo en alto y la pull-up. Si este no es el caso, el bit PUD en el registro MCUCR puede ser uno y deshabilitar todas la pull-up en todos los

Page 55: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

pórticos. Cambiando entre la entrada con pull-up y la salida en bajo genera el mismo problema. Al usar el tri-state ({DDxn, PORTxn} = 0b00) o la salida en high state ({DDxn, PORTxn} = 0b11) como en el paso inmediato. Configuración de los Pines del Pórtico

DDxn PORTxn PUD (en MCUCR)

E/S Pull-up

Comentario

0 0 X Entrada No Tri-State (Alta-Z)

0 1 0 Entrada SI Pxn corriente en la fuente si existe pulled low

0 1 1 Entrada No Tri-State (Alta-Z)

1 0 X Salida No Salida en Bajo

1 1 X Salida No Salida en Alto (Fuente)

13.2.4 Lectura del Valor del Pin Independientemente de la configuración del bit de Dirección de Datos DDxn, el pin del pórtico puede ser leído a través del bit del registro PINxn, el bit del registro PINxn y el latch forman una sincronización. Esto es necesario para evitar la metastability si el pin físicamente cambia de valor cerca del límite del reloj interno, pero esto también introduce un retardo. La máxima y mínima propagación retardada son denotados como tpd, max y tpd, min respectivamente. Sincronización cuando es aplicado un valor de lectura externa

Considerando el periodo de reloj comenzando corto y después el primer flanco de bajada del sistema de reloj. El latch es cerrado cuando el reloj esta en bajo, y va transparentando cuando el reloj esta en alto, como indica la región sombreada en la señal del “SYNC LATCH”. El valor de la señal es habilitado cuando el sistema de reloj va en bajo. Este reloj dentro del PINxn. Registrando lo que sucede en el flanco posito del reloj. Como indican las dos flechas tpd,max y tpd,min, una simple transición de la señal en el pin será demorada entre ½ y 1½ periodos de reloj dependiendo en el tiempo de aserción. Cuando leemos el valor de atrás asignado por software al pin, una instrucción NOP será insertada. En este caso, la demora tpd a través de la sincronización 1 periodo de ciclo de reloj. 13.2.5 Habilitación de Entrada Digital y Modo Sleep La señal de entrada digital puede ser sujetada alrededor de la entrada schmitt-trigger. La señal denotada SLEEP, es uno por el Controlador MCU Sleep en modo de Bajo consumo (Power-Down),

Page 56: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Modo seguro de energía y Modo de Espera evita el alto consumo de energía si algunas señales de entrada están flotando a la izquierda, o tienen un nivel de señal analógica a Vcc/2- SLEEP es barrido por habilitación del pin del pórtico como un pin de interrupción. Si la interrupción externa demandada no es habilitada, SLEEP es activada también por estos pines. SLEEP es también barrida por varias otras funciones alternativas. Si un nivel lógico alto (uno) es presentada en un pin de interrupción asincrónica externa configurada como “Interrupción con Flanco de Subida, Flanco de Bajada, o cualquier cambio lógico al pin” mientras la interrupción externa no es habilitada, la correspondiente bandera de interrupción seria uno cuando resumimos desde el Modo Sleep mencionado anteriormente, como al activar en este Modo Sleep produce un cambio lógico de nivel. 13.2.6 Pines no Conectados Si algunos pines no son usados, es recomendable asegurarse que estos pines tengan definido un nivel. Incluso a través de la mayoría de la entradas digitales son deshabilitadas en profundo Modo Sleep como se describió anteriormente, las entradas flotantes deberían ser evitadas (Reset, Modo Activo, y Modo Idle) El método más simple para asegurar la definición de un nivel lógico para un pin que no se usa es habilitar las pull-up internas. En este caso, las pull-up serian deshabilitadas durante el reset. El bajo consumo de energía durante el reset es importante, es recomendable usar pull-up o pull-down. Conectando pines que no se utilizan directamente a Vcc o Tierra no es recomendable, esto pude causar excesivas corrientes si el pin es accidentalmente configurado como salida. 13.3 Funciones Alternativas de los Pórticos La mayoría de los pines del pórtico tienen funciones alternativas adicionales haciendo E/S generales digitales. El barrido de la señal puede ser no presentada en todos los pórticos, la siguiente figura muestra una descripción general aplicable a todos los pines del pórtico de la familia de los microcontroladores AVR. Funciones Alternativas del Pórtico

Page 57: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Nombre

de la Señal

Nombre Completo Descripción

PUOE Habilitación Pull-up overriddes

Si esta señal es uno, la habilitación pull up es controlada por la señal PUOV. Si esta señal es cero la pull up es habilitada cuando {DDxn, PORTxn, PUD} = 0b010.

PUOV Valor Pull-up Si PUOE es uno, la pull-up es habilitada/rehabilitada cuando PUOV es uno/cero, indiferente de la configuración del DDxn, PORTxn y los bits del registro PUD.

DDOE Habilitación Dirección de Datos

Si esta señal es uno, el control de habilitación de salida es controlado por la señal DDOV. Si esta señal es cero, el manejo de la salida es habilitado por el bit del registro DDxn.

DDOV Habilitación del valor de Dirección de Datos

Si DDOE es uno, manejo de la salida es habilitado/deshabilitado cuando DDOV es uno/cero, indiferente de la configuración del bit del registro DDxn.

PVOE Habilitación del valor del pórtico

Si esta señal es uno y el manejo de la salida es habilitado, el valor del pórtico es manejado por la señal PVOE. Si PVOE es cero y el manejo de la salida es habilitado, el valor del pórtico es controlado por el bit del registro DDxn.

PVOV Si PVOE es uno, el valor del pórtico es uno a PVOE,

Page 58: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

indiferentemente de la configuración del bit del registro PORTxn.

PTOE Si PTOE es uno, el bit del Registro del PORTxn es invertido.

DIEOE Si este bit es uno, la habilitación de Entrada Digital es controlada por la señal DIEOV. Si esta señal es cero, la habilitación de la Entrada Digital es determinada por el estado MCU (Modo Normal, Modo Sleep)

DI Entrada Digital Esta Entrada Digital con funciones alternativas. En la figura, la señal es conectada a las salida de la Schmitt trigger pero antes de la sincronización. A menos que la entrada digital sea usada como fuente de reloj, el modulo con la función alternativa usara estos propios sincronizadores.

AIO Entrada/Salida Analógica

Esto es la Entrada/salida analógica para funciones alternativas. Puede ser usada bidireccionalmente.

13.3.1 Funciones Alternativas Pórtico A

Pin del Pórtico Función Alternativa

PA7 ADC7 (Entrada canal 7 ADC) PCINT7 (Cambio de pin Interrupción 7)

PA6 ADC6 (Entrada canal 7 ADC) PCINT6 (Cambio de pin Interrupción 6)

PA5 ADC5 (Entrada canal 5 ADC) PCINT5 (Cambio de pin Interrupción 5)

PA4 ADC4 (Entrada canal 4 ADC) PCINT4 (Cambio de pin Interrupción 4)

PA3 ADC3 (Entrada canal 3 ADC) PCINT3 (Cambio de pin Interrupción 3)

PA2 ADC2 (Entrada canal 2 ADC) PCINT2 (Cambio de pin Interrupción 2)

PA1 ADC1 (Entrada canal 1 ADC) PCINT1 (Cambio de pin Interrupción 1)

PA0 ADC0(Entrada canal 0 ADC) PCINT0 (Cambio de pin Interrupción 0)

13.3.2 Funciones Alternativas Pórtico B

Pin del Pórtico Función Alternativa

PB7 SCK (SPI Bus de entrada reloj maestro) PCINT15 (Cambio de pin interrupción 15)

PB6 MISO (SPI Bus Maestro Salida Entrada/ esclavo) PCINT14 (Cambio de pin Interrupción 14)

PB5 MOSI (SPI Bus Maestro Salida Entrada/ esclavo) PCINT13 (Cambio de pin Interrupción 13)

PB4 SS (SPI Selección de entrada Esclavo) OC0B (Timer/Contador0 Salida de comparación B) PCINT12 (Cambio de pin Interrupción 12)

PB3 AIN1(Entrada Comparador Analógico Negativo)

Page 59: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

OC0A (Timer/Contador0 Salida de comparación A) PCINT11 (Cambio de pin Interrupción 11)

PB2 AIN0 (Entrada Comparador Analógico Positivo) INT2 (Entrada de Interrupción Externa 2) PCINT10 (Cambio de pin Interrupción 10)

PB1 T1 (Timer/Contador 1 Entrada Contador Externo) CLK0 Sistema de división del reloj de salida PCINT9 (Cambio de pin Interrupción 9)

PB0 T0 (Timer/Contador 0 Entrada Contador Externo) XCK0 (USART0 Reloj Externo de Entrada/Salida) PCINT8 (Cambio de pin Interrupción 8)

• SCK/PCINT15 – Portico B, Bit 7 SCK: Reloj Maestro de Salida, Reloj esclavo de entrada para canal SPI. Cuando el SPI es habilitado como esclavo, este pin es configurado como entrada indiferentemente de la configuración del DDB7. Cuando el SPI0 es habilitado como maestro, la dirección de datos de estos pines es controlada por DDB7. Cuando el pin es forzado para ser una entrada, la pull up puede todavía ser controlada por el bit del PORTB7. PCINT15, Cambio del pin de fuente de interrupción 15: El pin PB7 puede servir como fuente de interrupción externa. • MISO/PCINT14 – Portico B, Bit 6 MISO: Entrada de Datos Maestro, Pin de salida de datos esclavo para canal SPI. Cuando SPI es habilitada como maestro, este pin es configurado como entrada indiferentemente de la configuración de DDB6. Cuando el SPI es habilitado como esclavo, la dirección de datos de estos pines es controlada por DDB6. Cuando el pin es forzado para ser una entrada, la pull up puede todavía ser controlada por el bit del PORTB6. PCINT14, Cambio del pin de fuente de interrupción 14: El pin PB6 puede servir como fuente de interrupción externa. • MOSI/PCINT13 – Portico B, Bit 5 MOSI: SPI salida de datos maestro, entrada de datos esclavo para canal SPI. Cuando SPI es habilitada como maestro, este pin es configurado como entrada indiferentemente de la configuración de DDB5. Cuando el SPI es habilitado como maestro, la dirección de datos de estos pines es controlada por DDB5. Cuando el pin es forzado para ser una entrada, la pull up puede todavía ser controlada por el bit del PORTB5. PCINT3, Cambio del pin de fuente de interrupción 13: El pin PB5 puede servir como fuente de interrupción externa.

• SS /OC0B/PCINT12 – Portico B, Bit 4

SS : Selección del pórtico de entrada esclavo. Cuando SPI es habilitada como esclavo, este pin es configurado como entrada indiferentemente de la configuración de DDB4. Cuando el SPI es habilitado como maestro, la dirección de datos de estos pines es controlada por DDB4.

Page 60: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

OC0B, salida de comparación B: El pin PB4 puede servir como una salida (DDB4 uno) al servir esta función. El pin OC0B es también la salida del pin para la PWM Modo Timer. PCINT12, Cambio de pin de fuente de interrupción 12: El PB4 puede servir como una fuente de interrupción externa. • AIN1/OC0A/PCINT11, Bit 3 AIN1, Entrada Negativa del Comparador Analógico. Este pin es conectado directamente a la entrada negativa del comparador analógico. OC0A, Salida del punto de comparación A: El pin PB3 puede servir como una salida externa para el Timer/contador0 comparación a la salida. El pin tiene que ser configurado como salida (DDB3 uno) al sacar esta función. El pin OC0A es también la salida del pin para la PWM funcionando en modo Timer PCINT11, Cambio de pin de fuente de interrupción 11: El pin PB3 puede servir como una fuente de interrupción externa. • AIN0/INT2/PCINT10, Bit 2 AIN1, Entrada Positiva del Comparador Analógico. Este pin es conectado directamente a la entrada positiva del comparador analógico. INT2, Fuente de interrupción externa 2- El pin PB2 puede servir como una fuente de interrupción externa del MCU. PCINT10, Cambio de pin de fuente de interrupción 10: El pin PB2 puede servir como una fuente de interrupción externa. • T1/CLKO/PCINT9, Bit 1 T1, Fuente contador Timer/contador 1 CLKO, Sistema de división del reloj: El sistema de división del reloj puede ser salida del pin PB1. El sistema de división del reloj seria salida si el fusible CKOUT es programado, implícitamente de la configuración del PORTB1. Esto también seria salida durante el Reset. PCINT10, Cambio de pin de fuente de interrupción 9: El pin PB1 puede servir como una fuente de interrupción externa. • T0/XCK0/PCINT8, Bit 0 T0, Fuente contador Timer/contador0. XCK, USART reloj externo. El registro de dirección de datos (DDB0) controla si el reloj es salida (DDD uno) o entrada (DDD0 cero). El pin XCK0 es activado solo cuando el USART0 opera en modo síncrono.

Page 61: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

PCINT8, Cambio de pin de fuente de interrupción 8: El pin PB0 puede servir como una fuente de interrupción externa. 13.3.3 Funciones Alternativas del Pórtico C

Pin del Pórtico Funciones Alternativas

PC7 TOSC2 (Timer Oscilador Pin 2) PCINT23 (Cambio del pin de interrupción 23)

PC6 TOSC1 (Timer Oscilador Pin 1) PCINT22 (Cambio del pin de interrupción 22)

PC5 TDI (JTAG Entrada testeo de datos) PCINT21 (Cambio del pin de interrupción 21)

PC4 TDO (JTAG Salida testeo de datos) PCINT20 (Cambio del pin de interrupción 20)

PC3 TMS (JTAG Modo selección de testeo) PCINT19 (Cambio del pin de interrupción 19)

PC2 TCK (JTAG testeo de reloj) PCINT17 (Cambio del pin de interrupción 18)

PC1 SDA (2-alambres Bus de datos serial línea de Entrada/Salida) PCINT18 (Cambio del pin de interrupción 17)

PC0 SCL (2-alambres Bus serial línea de reloj) PCINT16 (Cambio del pin de interrupción 16)

• TOSC2/PCINT23 – Pórtico C, Bit7 TOSC2, Oscilador de Tiempo pin 2. El pin PC7 puede servir como una interrupción externa al MCU. PCINT23, Cambio del pin de de fuente de interrupción 23: El pin PC7 puede servir como una fuente de interrupción externa • TOSC1/PCINT22 – Portico C, Bit 6 TOSC1, Oscilador de Tiempo pin 1. El pin PC6 puede servir como una interrupción externa al MCU. PCINT22, Cambio del pin de de fuente de interrupción 23: El pin PC6 puede servir como una fuente de interrupción externa • TDI/PCINT21 – Portico C, Bit 5 TDI, JTAG Test Data Input. PCINT22, Cambio del pin de de fuente de interrupción 21: El pin PC5 puede servir como una fuente de interrupción externa • TDO/PCINT20 – Port C, Bit 4 TDO, JTAG Test Data Output. PCINT20, Cambio del pin de de fuente de interrupción 20: El pin PC4 puede servir como una fuente de interrupción externa. • TMS/PCINT19 – Port C, Bit 3 TMS, JTAG Test Mode Select.

Page 62: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

PCINT19, Cambio del pin de de fuente de interrupción 19: El pin PC3 puede servir como una fuente de interrupción externa. • TCK/PCINT18 – Port C, Bit 2 TCK, JTAG Test Clock. PCINT18, Cambio del pin de de fuente de interrupción 18: El pin PC2 puede servir como una fuente de interrupción externa. • SDA/PCINT17 – Port C, Bit 1 SDA, 2-wire Serial Bus Data Input/Output Line. PCINT17, Cambio del pin de de fuente de interrupción 17: El pin PC1 puede servir como una fuente de interrupción externa. • SCL/PCINT16 – Port C, Bit 0 SCL, 2-wire Serial Busk Clock Line. PCINT23, Cambio del pin de de fuente de interrupción 16: El pin PC0 puede servir como una fuente de interrupción externa. 13.3.4 Funciones Alternativas Pórtico D

Pin del Pórtico Función Alternativa

PD7 OC2A (Timer/Contador2 Salida de punto de comparación A) PCINT31 (Cambio de pin de Interrupción 31)

PD6 ICP1 (Timer /Contador 1 Entrada de captura Trigger) OC2B (Timer/Contador 2 Salida al punto de comparación B) PCINT30 (Cambio de pin de Interrupción 30)

PD5 OC1A (Timer/Contador1 Salida de punto de comparación A) PCINT29 (Cambio de pin de Interrupción 29)

PD4 OC1B (Timer/Contador1 Salida de punto de comparación B) XCK1 (USART1 Reloj Externo Entrada/Salida) PCINT28 (Cambio de pin de interrupción28 )

PD3 INT1 (Entrada de Interrupción Externa 1) TXD1 (USART1 Pin de transmisión) PCINT27 (Cambio de pin de interrupción27 )

PD2 INT0 (Entrada de Interrupción Externa 1) RXD1 (USART1 Pin de recepción) PCINT26 (Cambio de pin de interrupción26 )

PD1 TXD0 (USART Pin de Transmisión) PCINT25 (Cambio de pin de interrupción25 )

PD0 RXD0 (USART Pin de Recepción) PCINT24 (Cambio de pin de interrupción24 )

• OC2A/PCINT31 – Portico D, Bit 7 OC2A, Salida del punto de comparación A: EL pin PD7 puede servir como una salida externa del Timer/Contador2 salida de comparación A. El pin tiene que ser configurado como salida (DDD7 uno). El pin OC2A es también la salida de la PWM Modo de función de tiempo.

Page 63: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

PCINT31, cambio de pin de fuente de fuente de interrupción 31: El pin PD7 puede ser una fuente de interrupción externa. • ICP1/OC2B/PCINT30 – Port D, Bit 6 ICP1, Pin de captura de entrada 1: El pin PD6 puede actuar como un pin de captura de entrada para el Timer/Contador 1. OC2B, Salida de punto de comparación B: El pin PD6 puede servir como una interrupción externa del Timer/contador2 salida de comparación B. El pin tiene que ser configurado como (DDD6 uno). El pin OC2B es también el pin de salida para la PWM Modo función Timer. PCINT30, Cambio del pin de de fuente de interrupción 30: El pin PD6 puede servir como una fuente de interrupción externa. • OC1A/PCINT29 – Port D, Bit 5 OC1A, salida de punto de comparación A: El pin PB5 puede servir como una interrupción externa del Timer/contador1 salida de comparación A. El pin tiene que ser configurado como (DDD5 uno). El pin OC1A es también el pin de salida para la PWM Modo función Timer. PCINT29, Cambio del pin de de fuente de interrupción 29: El pin PD5 puede servir como una fuente de interrupción externa. • OC1B/XCK1/PCINT28 – Port D, Bit 4 OC1A, salida de punto de comparación B: El pin PB4 puede servir como una interrupción externa del Timer/contador1 salida de comparación B. El pin tiene que ser configurado como (DDD4 uno). El pin OC1B es también el pin de salida para la PWM Modo función Timer. XCK1, USART1 Reloj externo. El registro de dirección de datos (DDD4) controla si el reloj es salida (DD4 uno) o salida (DDD4 cero). El pin XCK4 es activado solo cuando USART1 opera en modo síncrono. PCINT28, Cambio del pin de de fuente de interrupción 28: El pin PD4 puede servir como una fuente de interrupción externa. • INT1/TXD1/PCINT27 – Port D, Bit 3 INT1, Fuente de Interrupción Externa 1. El pin PD3 puede servir como una fuente de interrupción externa del MCU. TXD1, Transmisión de Datos (Pin de Salida de Datos para el USART1). Cuando la transmisión del USART1 es habilitada, este pin es configurado como salida indiferentemente del valor de DDD3. PCINT27, Cambio del pin de de fuente de interrupción 27: El pin PD3 puede servir como una fuente de interrupción externa. • INT0/RXD1/PCINT26 – Port D, Bit 2 INT0, Fuente de Interrupción Externa 0. El pin PD2 puede servir como una fuente de interrupción externa del MCU.

Page 64: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

RXD1, RXD0, Recepción de Datos (Pin de Entrada de Datos para el USART1). Cuando la transmisión del USART1 es habilitada, este pin es configurado como salida indiferentemente del valor de DDD2. Cuando el USART fuerza este pin seria una entrada, las pull up pueden ser controladas por el bit del PORTD2. PCINT26, Cambio del pin de de fuente de interrupción 26: El pin PD1 puede servir como una fuente de interrupción externa. • TXD0/PCINT25 – Port D, Bit 1 TXD0, Transmisión de Datos (Pin de Salida de Datos para el USART0). Cuando la transmisión del USART0 es habilitada, este pin es configurado como salida indiferentemente del valor de DDD1. PCINT25, Cambio del pin de de fuente de interrupción 25: El pin PD1 puede servir como una fuente de interrupción externa. • RXD0/PCINT24 – Port D, Bit 0 RXD0, Recepción de Datos (Pin de Entrada de Datos para el USART0). Cuando la transmisión del USART0 es habilitada, este pin es configurado como salida indiferentemente del valor de DDD0. Cuando el USART fuerza este pin seria una entrada, las pull up pueden ser controladas por el bit del PORTD0. PCINT24, Cambio del pin de de fuente de interrupción 24: El pin PD0 puede servir como una fuente de interrupción externa.

DESCRIPCIÓN DE REGISTROS 13.3.5 MCUCR – Registro de Control MCU

• Bit 4 – PUD: Desabilitación Pull-up Cuando este bit es escrito con uno, las pull up en los pórticos de E/S son deshabilitados si los registros DDxn y PORTxn son configurados para habilitar las pull up ({DDxn, PORTxn} = 0b01). 13.3.6 PORTA – Registro de Datos del pórtico A

13.3.7 DDRA – Registro de Dirección de Datos del pórtico A

13.3.8 PINA –Dirección de los pines de salida del pórtico A

Page 65: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

13.3.9 PORTB– Registro de Datos del pórtico B

13.3.10 DDRB – Registro de Dirección de Datos del pórtico B

13.3.11 PINB –Dirección de los pines de salida del pórtico B

13.3.12 PORTC – Registro de Datos del pórtico C

13.3.13 DDRC – Registro de Dirección de Datos del pórtico C

13.3.14 PINC –Dirección de los pines de salida del pórtico C

13.3.15 PORTD – Registro de Datos del pórtico D

13.3.16 DDRD – Registro de Dirección de Datos del pórtico D

13.3.17 PIND –Dirección de los pines de salida del pórtico D

14. Timer/Contador0 con PWM 8-bits

Page 66: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

14.1 Especificaciones: • Dos unidades de comparación diferenciales • Registros de comparación con doble Buffer de salida • Recarga Automática en los modos Clear Timer y punto de comparación (Compare Match) • Modulación de ancho de Pulso (PWM) • Periodo variable PWM • Generador de Frecuencia • Tres Fuentes de Interrupción Externa (TOV0, OCF0A y OCF0B) 14.2 Diagrama de Bloques Timer/Contador 0 8-bits

14.7 Modos de Operación En el modo de operación, la conducta del Timer/Contador y los Pines de comparación a la salida, son definidos por la combinación del modo de Generador de Forma de onda (WGM02:0) y el Modo de Comparación de Salida (COM0x1:0). Los bits en el Modo de Comparación a la salida no afectan la secuencia de conteo, mientras q los bits del Modo Generador de Forma de Onda lo hacen. Los bits COM0x1:0 controlan si la salida de la PWM generada debería ser invertida o no (PWM invertida o no). Para Modo no-PWM los bits COM0x1:0 controlan si la salida debería ser uno, cero, o invertida al punto de comparación. 14.7.1 Modo Normal El modo más simple de operación es el Modo Normal (WGM02:0 = 0). En este modo la dirección del contador siempre se encuentra incrementando, y el contador no se pone en cero. El contador simplemente deja de contar con un valor máximo a 8 bits (TOP=0xFF) y luego inicia desde tope bajo (0x00). En operación normal la Bandera de desbordamiento del Timer/Contador será uno al mismo tiempo que el ciclo de máquina como el TCNT0 llegan a ser cero. La bandera TOV0 en este caso se comporta como un noveno bit, excepto que esté solo en uno. Sin embargo, combinado con la interrupción de desbordamiento del timer que automáticamente limpia la bandera TOV0, la resolución del timer puede incrementarse por software. No hay casos especiales a considerar en el Modo Normal, el valor del nuevo contador puede ser escrito a cualquier instante.

Page 67: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La salida de comparación unitaria puede ser usada para generar interrupciones en algún tiempo dado. Usar la salida de comparación para generar Formas de Onda en modo Normal no es recomendada, ya que ocupa mucho tiempo en el CPU. 14.7.2 Modo Clear Timer y Punto de Comparación (CTC) En el modo Clear Time y Punto de Comparación o CTC (WGM02:0 = 2), el registro OCR0A es usado para manipular la resolución del contador. En el modo CTC el contador es puesto en cero cuando el valor del contador (TCNT0) se combina con OCR0A. El OCR0A define el valor máximo del contador, por lo tanto también su resolución. Este modo permite un control más grande de la frecuencia de salida en el punto de comparación. Estos también simplifican la operación de contador de eventos externos. El diagrama de tiempos para el CTC se muestra a continuación. El valor de contador (TCNT0) incrementa mientras ocurre una comparación entre TCNT0 y OCR0A, y el contador (TCNT0) es limpiado.

Una interrupción puede ser generada cada vez que el valor del contador llega al máximo valor usando la bandera del OCF0A. Si la interrupción es habilitada, la rutina de interrupción puede ser usada para actualizar el valor máximo. Sin embargo, cambia de valor máximo a la dirección 0x00 cuando el contador está corriendo sin ningún prescalador o con valores bajos de prescalador, el valor debe ser tomado con cuidado ya que el modo CTC no tiene una característica de doble buffer. Si el nuevo valor escrito en OCR0A es más bajo que el valor corriente de TCNT0, el contador perderá el punto de comparación. El contador entonces contará hasta su máximo valor (0xFF) y vuelve a empezar desde la dirección 0x00 antes de que ocurra un punto de comparación. Para generar formas de ondas cuadradas a la salida en el Modo CTC, la salida del OC0A puede estar en uno o invertido su valor lógico en cada punto de comparación por los bits del Modo Comparador de Salida (COM0A1:0 = 1). El valor del OC0A no debe ser visible en los pines del pórtico a menos que la dirección del dato del pin de salida esté en uno. La forma de Onda cuadrada generada tendrá una frecuencia máxima de fOC2A = fclk_I/O/2 cuando OCR0A es puesto en la dirección (0x00). La frecuencia de la forma de onda está definida por la siguiente ecuación:

La variable N representa el factor del prescalador (1, 8, 32, 64, 128, 256, ó 1024). En cuanto al modo Normal de operación, la bandera del TOV2 es seteada en el mismo ciclo del reloj del timer cuando el contador cuenta del máximo valor a la dirección 0x00. Modo de Rápida PWM

Page 68: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El modo de Rápida PWM (WGM02:0=3 o7) proporciona una opción de generación de forma de onda PWM a alta frecuencia. La rápida PWM difiere de otra opción de PWM por la simple pendiente de operación (diente de sierra). El contador cuenta desde el 0x00 hasta el Tope luego inicia desde 0x00. El tope es definido como 0xFF cuando WGM2:0 = 3, y OCR0A cuando WGM2:0 = 7. En Modo de comparación de salida no invertido, la salida de comparación (OCOx) es limpiada en el punto de comparación entre TCNT0 y OCR0x, y pone en uno a la dirección 0x00. En Modo de Comparación de salida Invertida, la salida es puesta en uno en el punto de comparación y es limpiada en la dirección 0x00, en simple pendiente de operación, la frecuencia de operación en modo rápida PWM puede estar dos veces en alto como en el modo de fase correcta PWM que usa doble pendiente de operación (onda triangular). Esta alta frecuencia hace que el modo Rápida PWM pueda ser usada para reguladores de voltaje, rectificadores, y aplicaciones DAC. Para alta frecuencia se tiene físicamente pequeños tamaños de componentes externos (capacitores), y reduce el costo total del sistema. 14.7.3 Diagrama de Tiempos en Modo Rápida PWM

La bandera de desbordamiento (TOV0) del Timer/Contador es puesta en uno cada vez que la cuenta llega al Tope. Si la interrupción es habilitada, la rutina de interrupción puede ser usada para actualizar el valor de comparación. En modo de Rápida PWM, la comparación unitaria permite la generación de formas de onda PWM en el pin OC0x. Configurando los bits del COM0x1:0 a dos producirán una PWM no invertida y una PWM invertida de salida q puedes ser generada por configuración del COM0x1:0 con tres: Configurando los bits COM0A1:0 con uno permitiendo la inversión del pin OC0A en el punto de comparación si el bit WGM02 es uno. Esta opción no es valida para el pin OC0B. El valor actual OC0x solo será visible en el pin del pórtico si la dirección del dato para el pin del pórtico es uno como salida. La forma de onda PWM es generada por la configuración del registro OC0x al tiempo que el contador del ciclo de máquina es limpiado (cambio desde el Tope hasta 0x00). La frecuencia para la salida de la PWM puede ser calculada por la siguiente ecuación:

256

/

N

ff

oIclk

OCnxPWM

La variable N representa el factor prescalador (1,8, 64, 256 o1024). El valor extremo para el OCR0A es igual a uno en 0X00, la salida será un pico estrecho para cada MAX+1 del ciclo de máquina del reloj. Configurando el OCR0A igual al MAX (0xFF)) resulta una constante en alto o bajo de la salida (dependiendo de la polaridad de la salida será uno por los bits COM0A1:0). A frecuencia (50 %) salida de la forma de onda en Modo de Rápida PWM puede archivado por la configuración del

Page 69: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

OC0x para invertir esto con un nivel lógico en cada punto de comparación (COM0x1:0 = 1). La generación de la forma de onda tendrá una máxima frecuencia de = fclk_I/O/2 cuando OCR0A va de uno a cero. Esta característica es similar al del OC0A invertido en modo CTC, excepto a la característica del doble buffer de la comparación a la salida el uno es el habilitador del modo de Rápida PWM 14.7.4 Modo de Fase Correcta del PWM El Modo de Fase Correcta de PWM (WGM02:0 = 1 o 5) provee una alta resolución en la opción para la Generación de Formas de Ona de fase correcta. El Modo de operación de fase correcta está basado en la operación dual-slope(onda triangular). El contador cuenta repetidamente desde el valor mínimo 0x00 hasta el valor máximo y desde el valor máximo al valor mínimo. El valor máximo está definido como 0x00 cuando WGM2:0=1 y cuando WGM2:0=5. En Modo de comparación no invertida, la comparación de salida (OC0x) es limpiada en el punto de comparación entre TCNT0 y OCR0x mientras cuenta ascendentemente y pone uno mientras el punto de comparación cuanta hacia abajo. En el Modo de comparación invertida, la operación es invertida. La operación dual-slope tiene una frecuencia de operación más baja que la máxima en simple operación slope. Sin embargo, debido a los modos de simetría de la pendiente doble de PWM, estos modos son preferidos para aplicaciones de control de motor. En fase correcta de PWM el contador es incrementado mientras el valor del contador llega a su valor máximo. Cuando el contador alcanza su valor máximo, este contador cambia de dirección. El valor del TCNT0 será igual al valor máximo para un ciclo de máquina del Timer. En la figura siguiente se muestra el diagrama de tiempos para el modo de operación Correcta PWM para ilustrar la operación dual slope (doble pendiente). El diagrama incluye las salidas invertidas y no invertidas del PWM. La línea pequeña horizontal marcada en el TCNT0 representa comparación entre OCR0x y TCNT0.

La bandera de desbordamiento del Timer/Counter (TOV0) es puesta en uno cada vez que el contador llega a su valor mínimo (0x00).

Page 70: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La bandera de interrupción puede ser usada para generar un tiempo de interrupción cada vez que contador llega al valor mínimo. En Modo de Fase Correcta, la unidad de comparación permite generar formas de onda cuadrada de PWM en el pin OC0x. Configurando los dos bits COM0x1:0 como dos en binario producirá una PWM no invertida. Una salida de PWM invertida puede ser generada configurando los dos bits COM0x1:0 como tres en binario. El valor máximo es definido como OxFF cuando WGM2:0=3, y cuando MGM2:0=7. El valor actual del OC0x no debe ser visible en los pines del pórtico a menos que la dirección del dato del pin de salida esté en uno. La forma de Onda cuadrada por el registro OC0x en el punto de comparación entre OCR0x y TCNT0 cuando ocurren incrementos. La frecuencia de la PWM en Modo de Fase Correcta puede ser calculada por la siguiente ecuación:

La variable N representa el factor del prescalador (1, 8, 32, 64, 128, 256, or 1024). Los valores extremos para el Registro OCR0A representan casos especiales cuando genera una forma de onda cuadrada de salida PWM cuando está en modo de fase correcta. Si el pin OCR0A es igual que el valor mínimo, la salida estará continuamente en bajo y si es igual al valor máximo la salida permanecerá en alto para Modo no invertido de la PWM. Para la salida de la PWM invertida se tendrá valores de niveles lógicos opuestos. En el inicio del segundo periodo de la figura anterior en OCnx se tiene una transición de alto a bajo siempre y cuando no este en Punto de Comparación. El punto de esta transición es para garantizar simetría cerca del valor mínimo. Existen dos casos para dar una transición sin Punto De Comparación.

1. Cuando el OCR0A cambia su valor máximo como en la figura anterior. Cuando el valor del OCR0A es el máximo, el valor del pin OCn es igual como resultado de la cuenta descendente en el Punto de Comparación. Para asegurar la simetría en la parte inferior el valor del OCn debe corresponder al resultado de la cuenta ascendente en el punto de Comparación.

2. El timer empieza a contar desde un valor mas alto que el uno en el OCR0A, y por esta

razón se pierde el Punto de Comparación y por lo tanto el ONc cambia si hubiese contado ascendentemente.

14.9 DESCRIPCIÓN DE REGISTROS 14.9.1 TCCR0A – Registro de Control A Timer /Contador

Page 71: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bits 7:6 – COM0A1:0: Modo de Comparación de Salida A Estos bits controlan el comportamiento del pin de comparación-salida (OC0A). Si uno o ambos bits del COM0A1:0 están en uno, la salida del OC0A proporciona el normal funcionamiento de los pines de I/O cuando están conectados. Sin embargo, note que el bit del Registro de Dirección de datos (DDR) corresponde al pin OC0A el cual debe estar en uno conforme a la habilitación de salida del controlador. Cuando el OC0A es conectado al pin, la funcionalidad de los bits del COMOA1:0 depende de los bits puestos en WGM02:0. La siguiente tabla muestra la funcionalidad de los bits del COM0A1:0 cuando los bits del WGM02:0 están en uno. Modo de Comparación de Salida, Modo no PWM

COM0A1 COM0A0 Descripción

0 0 Pórtico en operación normal, OC0A desconectado.

0 1 Invierte OC0A en Modo Comparación

1 0 Pone cero OC0A en Modo Comparación

1 1 Pone uno OC0A en Modo Comparación

Modo de Comparación de Salida, Modo rápida PWM

COM0A1 COM0A0 Descripción

0 0 Modo en operación normal, OC0A desconectado.

0 1 WGM02=0: Modo en operación Normal, OCA desconectado WGM02=1: Invierte OC0A en Modo Comparación

1 0 Pone cero OC0A en Modo Comparación, Poner en uno OC0A con el Botón.

1 1 Pone uno OC0A en Modo Comparación, Poner cero OC0A con el Botón.

Modo de Comparación de Salida, Modo fase correcta PWM

COM0A1 COM0A0 Descripción

0 0 Modo en operación normal, OC0A desconectado.

0 1 WGM02=0:Modo en operación Normal, OCA desconectado WGM02=1: Invierte OC0A en Modo Comparación

1 0 Pone cero OC0A en Modo Comparación cuando cuenta de subida. Pone en uno OC0A en Modo Comparación cuando cuenta de bajada.

1 1 Pone uno OC0A en Modo Comparación cuando cuenta de subida. Pone en cero OC0A en Modo Comparación cuando cuenta de bajada.

• Bits 5:4 – COM0B1:0: Modo de Comparación de Salida B Estos bits controlan el comportamiento del pin de comparación-salida (OC0B). Si uno o ambos bits del COM0B1:0 están en uno, la salida del OC0B proporciona el normal funcionamiento de los pines de I/O cuando están conectados. Sin embargo, note que el bit del Registro de Dirección de datos (DDR) corresponde al pin OC0B el cual debe estar en uno conforme a la habilitación de salida del controlador. Cuando el OC0B es conectado al pin, la funcionalidad de los bits del COMOB1:0 depende de los bits puestos en WGM02:0. La siguiente tabla muestra la funcionalidad de los bits del COM0B1:0 cuando los bits del WGM02:0 están en uno. Modo de Comparación de Salida, Modo no PWM

Page 72: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

COM0A1 COM0A0 Descripción

0 0 Pórtico en operación normal, OC0B desconectado.

0 1 Invierte OC0B en Modo Comparación

1 0 Pone cero OC0B en Modo Comparación

1 1 Pone uno OC0B en Modo Comparación

Modo de Comparación de Salida, Modo rápida PWM

COM0A1 COM0A0 Descripción

0 0 Pórtico en operación normal, OC0B desconectado.

0 1 Reservado

1 0 Pone cero OC0B en Modo Comparación, Poner en uno OC0B con el Botón.

1 1 Pone uno OC0B en Modo Comparación, Poner cero OC0B con el Botón.

Modo de Comparación de Salida, Modo fase correcta PWM

COM0A1 COM0A0 Descripción

0 0 Pórtico en operación normal, OC0B desconectado.

0 1 Reservado

1 0 Pone cero OC0B en Modo Comparación cuando cuenta de subida. Pone en uno OC0B en Modo Comparación cuando cuenta de bajada.

1 1 Pone uno OC0B en Modo Comparación cuando cuenta de subida. Pone en cero OC0B en Modo Comparación cuando cuenta de bajada.

• Bits 3:2-Bits Reservados Estos bits son reservados en el ATmega 164P/324P/644P y siempre serán leídos como cero. • Bits 1:0- WGM01:0: Modo generador de Forma de Onda Combinado con el bit WGM02 encontrado en el registro TCCR0B, estos bits de control la secuencia de cuenta de contador, la fuente para el máximo valor del contador (TOP), y que tipo de forma de onda va hacer usada. Estos modos de operación son soportador por Timer/Contador uno: Modo normal (contador), modo CTC y dos tipos de pulso del modulador de ancho de pulso (PWM) Descripción del Bit Modo Generador de Forma de Onda

MODO WGM2 WGM1 WGM0 Timer/Contador Modo de Operación

TOP Actualización OCRx

Bandera TOV

0 0 0 0 Normal 0xFF Inmediato MAX

1 0 0 1 PWM, fase Correcta

0xFF TOP Parte Inferior

2 0 1 0 CTC OCRA Inmediato MAX

3 0 1 1 Rápida PWM 0xFF Botón MAX

4 1 0 0 Reservado - - -

5 1 0 1 PWM, fase correcta

OCRA TOP Parte Inferior

6 1 1 0 reservado - - -

7 1 1 1 Rápida, PWM OCRA Botón TOP

NOTES:

1. MAX: 0xFF 2. Parte Inferior: 0x00

Page 73: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

14.9.2 TCCR0B – Registro de Control Timer/Contador B

• Bit 7 – FOC0A: Comparación Forzada a la salida A El bit FOC0A solo se activa cuando los bits WGM son especificados como Modo no PWM. Sin embargo, para asegurar la compatibilidad con futuros dispositivos, este bit seria cero cuando TCCR0B es escrito cuando opera en Modo PWM. Cuando se escribe uno lógico en el bit FOC0A, inmediatamente la comparación es forzada a la generación de una forma de onda. La salida OC0A es cambiada acorde los bits COM0A1:0 son puestos. Note que el bit FOC0A es implementado como un estroboscopio. Por consiguiente es el presente de valor en los bits COM0A1:0 que determina el efecto de la comparación forzada. Una habilitación del FOC0A no generará ninguna interrupción, ni pondrá en uno el timer en el modo CTC usando OCR0A como TOPE. El bit FOC0A siempre se lee como cero. • Bit 6 – FOC0B: Comparación Forzada a la salida B El bit FOC0B solo se activa cuando los bits WGM son especificados como Modo no PWM. Sin embargo, para asegurar la compatibilidad con futuros dispositivos, este bit seria cero cuando TCCR0B es escrito cuando opera en Modo PWM. Cuando se escribe uno lógico en el bit FOC0B, inmediatamente la comparación es forzada a la generación de una forma de onda. La salida OC0B es cambiada acorde los bits COM0A1:0 son puestos. Note que el bit FOC0B es implementado como un estroboscopio. Por consiguiente es el presente de valor en los bits COM0A1:0 que determina el efecto de la comparación forzada. La habilitación de FOC0B no generará ninguna interrupción, ni pondrá en uno el timer en el modo CTC usando OCR0B como TOPE El bit FOC0A siempre se lee como cero. • Bits 5:4 – Res: Bits Reservados Estos bits son reservados y siempre se leen como cero. • Bit 3 – WGM02: Modo Generación de Forma de Onda Ver la descripción en el TCCR0A- Timer /Contador Registro de Control A • Bits 2:0 – CS02:0: Selector de Reloj Los tres bits de selección de la fuente de reloj son usados por el Timer/Contador. Descripción de los bits de selección del Reloj

CS02 CS01 CS00 Descripción

0 0 0 Sin fuente de Reloj(Timer/Contador parados)

0 0 1 Clk I/O (Sin prescalador)

0 1 0 Clk I/O /8(Prescalador)

0 1 1 Clk I/O /64(Prescalador)

1 0 0 Clk I/O /256(Prescalador)

1 0 1 Clk I/O /1024(Prescalador)

Page 74: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

1 1 0 Fuente de Reloj Externo pin T0. Reloj con flanco de bajada

1 1 1 Fuente de Reloj Externo pin T0. Reloj con flanco de subida

Si se usan los modos del pin para el Timer/Counter0, las transiciones en el pin T0 contaran aun cuando el pin se configura como una salida. Esto permite el mando del software del Contador. 14.9.3 TCNT0 – Registro Timer/Contador

El Registro Timer/Contador da el acceso directo, ambos para el funcionamiento de lectura y escritura en el Timer/Contador uno, contador de 8-bits. Escribiendo a los bloques de Registro TCNT0 (removidos) en modo de comparación en el siguiente tiempo de reloj. Modificando al contador (TCNT0) mientras el contador está corriendo, introduce un riesgo de perder el modo de comparación entre el TCNT0 y los Registros del OCR0x. 14.9.4 OCR0A – Registro de comparación de Salida A

El Registro Comparador de Salida A contiene 8-bits cuyo valor es continuamente comparado con el valor del contador (TCNT0). Match puede ser usado para generar una interrupción de comparación de salida, o generar una forma de onda en la salida del pin OC0A 14.9.5 OCR0B – Registro de comparación de Salida B

El Registro Comparador de Salida B contiene 8-bits cuyo valor es continuamente comparado con el valor del contador (TCNT0). Match puede ser usado para generar una interrupción de comparación de salida, o generar una forma de onda en la salida del pin OC0B 14.9.6 TIMSK0 – Registro mascara de Interrupción Timer/Contador

Page 75: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bits 7:3 – Res: Bits Reservados Estos bits son reservados y siempre serán leídos como cero. • Bit 2 – OCIE0B: Habilitación de Interrupciones a la salida de la comparación B Cuando el bit OCIE0B es escrito con uno, y el bit-I en el registro de Estado es uno, en el Timer/Contador en modo comparador se habilitada la interrupción. La correspondiente interrupción es ejecutada si el modo comparación en el Timer/Contador ocurre, cuando el bit OCF0B esta en uno en el registro de interrupción de Banderas TIFR0 en el Timer/Contador. • Bit 1 – OCIE0A: Habilitación de Interrupciones a la salida de la comparación B Timer/Contador 0 Cuando el bit OCIE0A es escrito con uno, y el bit-I en el registro de Estado es uno, en el Timer/Contador0 en modo comparador A se habilitada la interrupción. La correspondiente interrupción es ejecutada si el modo comparación en el Timer/Contador0 ocurre, cuando el bit OCF0A esta en uno en el registro de interrupción de Banderas TIFR0 en el Timer/Contador. • Bit 0 – TOIE0: Habilitación de Interrupciones por desbordamiento Timer/Contador0 Cuando el bit TOIE0 es escrito con uno, el bit-I en el Registro de Estado es uno, el Timer/Contador0 interrupción por desbordamiento es habilitada. La correspondiente interrupción es ejecutada si el desbordamiento en el Timer/Contador ocurre, cuando el bit TOV0 en el registro de banderas de interrupción TIFR0 es uno en el Timer/Contador0 14.9.7 TIFR0 – Registro de Interrupción de Banderas Timer/Contador0

• Bits 7:3 – Res: Bits Reservados Estos bits son reservados en el ATmega164P/324P/644P y siempre serán leídas como cero. • Bit 2 – OCF0B: Modo de comparación B de la bandera a la salida Timer/Contador 0 El bit OCF0B es uno cuando el modo de Comparación ocurre entre el Timer/Contador y el dato en OCR0B- Registro de salida de comparación 0 B. OCF0B esta en cero por hardware cuando esta ejecutando la correspondiente interrupción. Alternativamente, OCF0B esta en cero por escribir uno lógico en la bandera- Cuando el bit-I en el SREG, OCIE0B (Habilitación de interrupciones Timer/Contador Modo de comparación B), y OCF0B esta en uno, el timer/contador en modo de comparación es ejecutado. • Bit 1 – OCF0A: Modo de comparación A de la bandera a la salida Timer/Contador 0 El bit OCF0A es uno cuando el modo de Comparación ocurre entre el Timer/Contador y el dato en OCR0A- Registro de salida de comparación 0 B. OCF0A esta en cero por hardware cuando esta ejecutando la correspondiente interrupción. Alternativamente, OCF0B esta en cero por escribir uno lógico en la bandera- Cuando el bit-I en el SREG, OCIE0A (Habilitación de interrupciones Timer/Contador0 Modo de comparación), y OCF0A esta en uno, el timer/contador0 en modo de comparación es ejecutado.

Page 76: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 0 – TOV0: Desbordamiento de Bandera Timer/Counter0 El bit TOV0 esta en uno cuando ocurre un desbordamiento en el Timer/Counter0. TOV0 esta en cero por hardware cuando esta ejecutando el correspondiente vector de interrupción. Alternativamente, TOV0 esta en cero cuando se escribe uno lógico por la bandera. Cuando el bit-I del SREG, TOIE0 (Habilitación de Interrupción por desbordamiento Timer/Contador0), y TOV0 esta en uno, la interrupción por desbordamiento del Timer/Contador0 es ejecutada. La configuración de esta bandera es dependiente del bit WGM02:0 15. Timer/Counter1 con PWM 16-Bits 15.1 Especificaciones • Diseñado para 16 bits PWM • Dos salidas independientes de comparación unitaria • Registros comparadores con doble salida de Buffer • Entrada de captura unitaria • Entrada de captura y cancelación de ruido • Recarga Automática en los modos Clear Timer y Compare Match • Modulador de ancho de Pulso (PWM) • Periodo Variable PWM • Generador de frecuencia • Contador de eventos externos • Cuatro Fuentes independientes de interrupción (TOV1, OCF1A, OCF1B, y ICF1) 15.2 Revisión General Diagrama de bloque Timer/Contador1 16 -bits

15.9 Modos de Operación El modo de operación, la conducta del Timer/Contador y los Pines de comparación a la salida, son definidos por la combinación del modo de Generador de Forma de onda (WGMn3:0) y el Modo de Comparación de Salida (COMnx1:0). Los bits en el Modo de Comparación a la salida no afectan la secuencia de conteo, mientras q los bits del Modo Generador de Forma de Onda lo hacen. Los bits COM0x1:0 controlan si la salida de la PWM generada debería ser invertida o no (PWM invertida o no). Para Modo no-PWM los bits COMnx1:0 controlan si la salida debería ser uno, cero, o invertida al punto de comparación.

Page 77: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

15.9.1 Modo Normal El modo más simple de operación es el Modo Normal (WGMn3:0 = 0). En este modo la dirección del contador siempre se encuentra incrementando, y el contador no se pone en cero. El contador simplemente deja de contar con un valor máximo a 16 bits (MAX=0xFFFF) y luego inicia desde tope bajo (0x0000). En operación normal la Bandera de desbordamiento del Timer/Contador (TOVn) serán uno al mismo tiempo que el ciclo de máquina como el TCNTn llegan a ser cero. La bandera TOVn en este caso se comporta como un décimo séptimo bit, excepto que esté solo en uno. Sin embargo, combinado con la interrupción de desbordamiento del timer que automáticamente limpia la bandera TOVn, la resolución del timer puede incrementarse por software. No hay casos especiales a considerar en el Modo Normal, el valor del nuevo contador puede ser escrito a cualquier instante. La salida de comparación unitaria puede ser usada para generar interrupciones a un tiempo dado. Usar la salida de comparación para generar formas de onda en modo normal no es recomendado. 15.9.2 Modo Clear Timer on Compare Match (CTC) En el modo Clear Time y Punto de Comparación o CTC (WGMn3:0 = 4 o 12), el registro OCRnA o ICRn es usado para manipular la resolución del contador. En el modo CTC el contador es puesto en cero cuando el valor del contador (TCNTn) se combina con el OCRnA (EGMn3:0=4) o el ICRn (WGMn3:0=12). El OCRnA define el valor máximo del contador, por lo tanto también su resolución. Este modo permite un control más grande de la frecuencia de salida en el punto de comparación. Estos también simplifica la operación de contador de eventos externos. El diagrama de tiempos para el CTC se muestra a continuación. El valor de contador (TCNTn) incrementa mientras ocurre una comparación entre TCNTn y OCRnA, y el contador (TCNTn) es limpiado.

Una interrupción puede ser generada cada vez que el valor del contador llega al máximo valor usando la bandera del OCFnA o ICFn. Si la interrupción es habilitada, la rutina de interrupción puede ser usada para actualizar el valor máximo. Sin embargo, cambia de valor máximo a la dirección 0x0000 cuando el contador está corriendo sin ningún prescalador o con valores bajos de prescalador, el valor debe ser tomado con cuidado ya que el modo de CTC no tiene una característica de doble buffer. Si el nuevo valor escrito en el OCRnA o ICRn es más bajo que el valor corriente del TCNTn, el contador perderá el punto de comparación. El contador entonces contará hasta su máximo valor (0xFFFF) y vuelve a empezar desde la dirección 0x0000 antes de que ocurra un punto de comparación. Para generar formas de ondas cuadradas a la salida en el Modo CTC, la salida del OCnA puede estar en uno o invertido su valor lógico en cada punto de comparación por los bits del Modo

Page 78: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Comparador de Salida (COMnA1:0 = 1). El valor del OCnA no debe ser visible en los pines del pórtico a menos que la dirección del dato del pin de salida esté en uno (DDR_OCnA=1). La forma de Onda cuadrada generada tendrá una frecuencia máxima de fOCnA = fclk_I/O/2 cuando OCRnA es puesto en la dirección (0x0000). La frecuencia de la forma de onda está definida por la siguiente ecuación:

La variable N representa el factor prescalador (1, 8, 64, 256, o 1024). Como para el modo de operación normal, la bandera TOVn esta en uno al mismo tiempo del ciclo de reloj y el contador desde MAX (0xFFFF) hasta 0x0000 15.9.3 Modo de Rápida PWM El modo de Rápida PWM (WGMn3:0=5, 6, 7, 14 o 15) proporciona una opción de generación de forma de onda PWM a alta frecuencia. La rápida PWM difiere de otra opción de PWM por la simple pendiente de operación (diente de sierra). El contador cuenta desde el 0x0000 hasta el Tope luego inicia desde 0x0000.. En Modo de comparación de salida no invertido, la salida de comparación (OCnx) es limpiada en el punto de comparación entre TCNTn y OCRnx, y pone en uno a la dirección 0x0000. En Modo de Comparación de salida Invertida, la salida es puesta en uno en el punto de comparación y es limpiada en la dirección 0x0000, en simple pendiente de operación, la frecuencia de operación en modo rápida PWM puede estar dos veces en alto como en el modo de fase correcta PWM que usa doble pendiente de operación (onda triangular). Esta alta frecuencia hace que el modo Rápida PWM pueda ser usada para reguladores de voltaje, rectificadores, y aplicaciones DAC. Para alta frecuencia se tiene físicamente pequeños tamaños de componentes externos (capacitores), y reduce el costo total del sistema. La resolución de la PWM por rápida PWM puede ser arreglada a 8, 9 o 10bitsm o definiendo ICRn o OCRnA. La mínima resolución es 2-bit (ICRn o OCRnA en uno a 0x00003), y la máxima resolución es 16-bits (ICRn o OCRnA en uno a 0xFFFF). La resolución e la PWM en bits puede ser calculada usando la siguiente ecuación:

En modo rápida PWM el contador es incrementado mientras es limpiado en el siguiente ciclo de reloj. El diagrama de tiempos mostrado a continuación muestra el modo de rápida PWM cuando OCRnA o ICRn es usada para definir el Tope. El valor de TCNTn es mostrado en el diagrama de tiempos para ilustración del (single –slope operation). El diagrama incluye la salida de PWM invertida y no invertida. Una pequeña línea horizontal marca el TCNTn y marca la comparación entre OCRnx y TCNTn. La bandera de interrupción OCnx será uno cuando llegue al punto de comparación. Diagrama de tiempos de la Rápida PWM

Page 79: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La bandera de desbordamiento del Timer/Counter (TOVn) es puesta en uno cada vez que el contador llega a su valor mínimo (0x0000). Adicionalmente la bandera OCnA o ICFn es uno al mismo tiempo que el ciclo de reloj como TOVm estén en uno cuando OCRnA o ICRn es usada para definir el valor TOPE. Si una de las interrupciones son habilitadas la rutina puede ser usada para actualizar el valor TOPE de comparación. Cuando se esta cargando el valor TOPE el programa debe asegurarse que el nuevo valor TOPE es alto o igual al valor de tos los registros de comparación. Si el valor TOPE es bajo que cualquier registro de comparación, el punto de comparación nunca ocurrirá entre el TCNTn y el OCTnx. Note que cuando se esta usando un arreglo para el valor TOPE los bits son mascaras con cero cuando ninguno de los registros OCRnx son escritos. El proceso para actualización ICRn difiere desde la actualización OCRnA cuando es usada para la definición del valor TOPE. El registro ICRn no tiene doble buffer. Esto significa que si ICRn es cambiado a un valor bajo cuando el contador esta corriendo con ninguno o un valor bajo del prescalador, hay un riesgo que el nuevo valor de ICRn sea escrito con un valor bajo que el valor actual de TCNTn. Es resultado será luego contado perdiendo el valor del punto TOPE. El contador luego contara el valor MAX (0xFFFF) y emperazá alrededor de 0x0000 antes que la comparación en el punto pueda ocurrir. El registro ICRn sin embargo, tiene un doble buffer. Esto corresponde a la localización OCRnA E/S q seria escrita en cualquier instante. Cuando la localidad OCRnA E/S es escrita con un valor se puede poner un registro buffer. El registro de comparación OCRnA puede ser actualizado con el valor en el registro Buffer y en el siguiente ciclo de reloj en el punto TOPE de TCNTn. La actualización es hecha al mismo tiempo que el tiempo del ciclo de reloj como TCNTn es limpiada y la bandera TOVn es uno. Usando el Registro ICRn por definición del valor TOPE trabajaría cuando se usa un valor de arreglo al TOPE. Usando el registro ICRn, el registro OCRnA es libre de ser usado para generar una PWM a la salida del OCnA. Si embargo si la base de frecuencia de la PWM esta activando cambios (por cambios en el valor TOPE), usando el OCRnA como TOPE es claramente mejor escoger dos buffer. En modo de rápida PWM, la comparación unitaria permite la generación de formas de onda PWM en los pines OCnx. Configurando los bits COMnx1:0 a dos produciría una PWM no invertida y una PWM invertida a la salida. El valor actual del OCnx no debe ser visible en los pines del pórtico a menos que la dirección del dato del pin de salida esté en uno. La forma de Onda cuadrada por el registro OCnx en el punto de comparación entre OCRnx y TCNTn cuando ocurren incrementos. La frecuencia de la PWM en Modo de Fase Correcta puede ser calculada por la siguiente ecuación:

Page 80: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La variable N representa el prescalador dividido (1, 8, 64, 256, o 1024). El valor extreme de el Registro OCRnx representa casos especiales cuando generan una forma de onda PWM a la salida en Modo Rápida PWM. Si el OCRnx es igual a uno en (0x0000) de la salida seria un pico para cada tiempo TOPE+1 del tiempo de ciclo de reloj. Configurando el OCRnx igual al TOPE resultaría en una constante de salida alta o baja (dependiendo la polaridad de la salida en uno por los bits COMnx1:0). Una frecuencia de salida para la forma de onda en Modo de Rápida PWM puede ser archivado por la configuración OCnA a inversión estos niveles lógicos en cada punto de comparación (COMnA1:0 = 1).Esto es aplicable solo si OCR1A es usado para definir el valor TOPE (WGM13:0015). La forma de onda generada tendrá una frecuencia máxima fOCnA = fclk_I/O/2 cuando OCRnA va de uno a cero (0x0000). Estos es similar al OCnA invertido en el modo CTC. 15.9.4 Modo Fase Correcta PWM La fase correcta para el modulador de ancho de pulo en modo de fase correcta PWM (WGMn3:0 = 1, 2, 3,10, o 11) proporciona una alta resolución en fase correcta PWM en la opción de generación de forma de onda. El modo correcto de fase PWM esta basada en la operación forma triangular (dualslope). El contador cuenta repetitivamente desde (0x0000) hasta el valor TOPE y desde TOPE hasta 0x0000. En modo de comparación no invertido, la salida de comparación (OCnx) limpia en la comparación entre TCNTn y OCRnx mientras decrementa, y enciende la comparación mientras decrementa. En modo de comparación invertida, la operación es invertida. La operación en (dual-slope) tiene una frecuencia de operación máxima menor que la operación (single slope). Sin embargo, conserva la doble simetría del modo (dual-slope) PWM, estos tres modos son preferidos para aplicación de control de motores. La resolución PWM para el modo de fase correcta puede ser arreglada a 8-, 9-, o 10-bit, o definida por ICRn o OCRnA. La mínima resolución es 2 bits (ICRn o OCRnA con uno en 0x0003), y la máxima resolución es 16 bits (ICRn o OCRnA en uno en la dirección MAX 0xFFFF). La resolución PWM en bits puede ser calculada usando la siguiente ecuación:

En modo de fase correcta PWM el contador es incrementado hasta el valor en el punto uno de los valores arreglados 0x00FF, 0x01FF, o 0x03FF (WGMn3:0 = 1, 2, o 3), el valor en ICRn (WGMn3:0 = 10), o el valor en OCRnA (WGMn3:0 = 11). El contador tiene luego q alcanzar el TOPE y cambiar la dirección de la cuenta. El valor TCNTn será igual al TOPE para un ciclo de reloj del timer. El diagrama de tiempos para modo de fase correcta muestra el modo de fase correcta PWM cuando OCRnA o ICRn son usados para definir el TOPE. EL valor TCNTn incluye salidas PWM invertidas y no invertidas- La línea horizontal pequeña marcada del TVNTn representa el punto de comparación entre OCRnx y TCNTn. La bandera de interrupción OCnx será uno cuando la comparación el punto ocurra. Diagrama de Tiempos en Modo de fase Correcta

Page 81: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La bandera de desbordamiento del Timer/Counter (TOVn) es uno cada vez que el contador alcaza 0x00000. Cuando OCRnA o ICRn es usada para definir el valor TOPE, el OCnA o ICFn es uno de acuerdo al mismo tiempo del ciclo de reloj como los registros OCRnx son actualizados con el valor en doble buffer (TOPE). La bandera de Interrupción puede ser usada para generar una interrupción cada vez que el contador alcance el TOPE o el valor 0x0000. Cuando se encuentra cargando el valor TOPE el programa asegura si el alto o igual el valor de todos los registros de comparación. En el valor TOPE es el mas bajo de los registros de comparación, el punto de comparación nunca ocurre entre el TCNTn y el OCRnx. Note que cuando se usan los valores de los arreglos en el TOPE, El no uso de los bits son mascaras de cero cuando cualquiera de los registros OCRnx son escritos. Como en el tercer periodo ilustrado en la figura, cargando activamente el TOPE mientras el Timer/counter esta corriendo en modo de fase correcta puede resultar en una salida antisimétrica. La razón para que esto pueda ser encontrado a la vez que es actualizado el registro OCRnx. Desde que la actualización OCRnx ocurre en el TOPE, el periodo PWM comienza y termina al final del valor TOPE. Esto implica que la longitud de la pendiente negativa es determinada por el previo valor TOPE, mientras la longitud de la pendiente positiva es determinada por el nuevo valor TOPE. Cuando estos dos valores difieren de las dos pendientes del periodo diferirán en longitud. La diferencia en longitud da un resultado antisimétrico a la salida. Esto es recomendable al usar el modo de fase y frecuencia correcta en comparación del modo de fase correcta cuando se carga el valor TOPE mientras el Timer/Counter esta corriendo. Cuando usamos un valor constante el valor TOPE prácticamente no hay diferencias entre los dos modos de operación. En modo de fase correcta PWM, la comparación permite la generación de formas de onda PWM en los pines OCnx. Configurando los bits COMnx1:0 a dos se produciría una salida invertida de PWM y una no invertida PWM puede ser generada por la configuración de COMnx1:0 a tres. El valor actual de OCnx solo seria visible en el pin del pórtico si la dirección del dato para el pin del pórtico es uno como la salida (DDR_OCnx). La forma de onda PWM generada por configuración (o limpiando) el registro OCnx en el punto de comparación entre OCRnx y TCNTn cuando el contador incrementa, y limpiando (o poniendo en uno) el registro OCnx al punto de comparación entre OCRnx y TCNTn cuando el contador decrementa. La frecuencia PWM para la salida cuando se usa frecuencia correcta PWM puede ser calcula por la siguiente ecuación:

La variable N representa el prescalador dividido (1, 8, 64, 256, o 1024). El valor extremo para el registro OCRnx representa casos especiales cuando se genera una forma de onda PWM a la salida en el modo de fase correcta. Si el OCRnx es igual a uno en 0x0000 la salida será continuamente bajo y si es igual a uno a 0x0000 la salida será continuamente alta para modo PWM no invertido. Para invertir la salida PWM tendrá un valor opuesto lógico. Si OCR1A es

Page 82: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

usada para definir el valor TOPE (WGM13:0 = 11) y COM1A1:0 = 1, la salida OC1A invertirá con 50% al ciclo en alto. 15.11 Descripción de Registros 15.11.1 TCCR1A – Registro de Control A Timer/Contador1

• Bit 7:6 – COMnA1:0: Modo de Comparación de Salida para Canal A Bit 5:4 – COMnB1:0: Modo de Comparación de Salida para Canal B El COMnA1:0 y COMnB1:0 controlan los pines para la comparación de salida (OCnA y OCnB respectivamente). Si uno o ambos bits de COMnA1:0 son escritos con uno, la salida OCnA es conectada al desbordamiento normal en el pin del pórtico de E/S. Si uno o ambos bits del COMnB1:0 están escritas con uno, la salida OCnB es conectada al desbordamiento normal en el pin del pórtico de E/S. Sin embargo la dirección del registro de datos (DDR) corresponde al pin OCnA o OCnB debe ponerse para habilitar la salida del controlador. Cuando el OCnA o OCnB es conectada al pin, la función del los bits COMnx1:0 es dependiente de los bits programados del WGMn3:0. Modo de Comparación de Salida, no PWM

COMnA1/COMnB1 COMnA0/COMnB0 Descripción

0 0 Modo de operación Normal, OCnA/OCnB desconectado

0 1 Inversión OCnA/OCnB en el Punto de comparación

1 0 Pone en cero OCnA/OCnB en el Punto de comparación (Pone en uno la salida en nivel bajo)

1 1 Pone en uno OCnA/OCnB en el Punto de comparación (Pone en uno la salida en nivel alto)

Modo de Comparación de Salida, Rápida PWM

COMnA1/COMnB1 COMnA0/COMnB0 Descripción

0 0 Modo de operación Normal, OCnA/OCnB desconectado

0 1 WGMn3:0=14 o 15: Inversión OC1A en Modo comparación, OC1B desconectado (Modo de operación Normal) Para todas las configuraciones WGM1, Modo de operación Normal, OC1A/OC1B

1 0 Pone en cero OCnA/OCnB en el Punto de comparación, pone en uno OCnA/OCnB en la dirección baja 0X00 (Modo no Invertido)

1 1 Pone en uno OCnA/OCnB en el Punto de comparación, pone en cero OCnA/OCnB en la dirección baja 0X00 (Modo Invertido)

Modo de Comparación de Salida, Fase correcta, fase, y Correcta frecuencia PWM

COMnA1/COMnB1 COMnA0/COMnB0 Descripción

0 0 Modo de operación Normal, OCnA/OCnB

Page 83: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

desconectado

0 1 WGMn3:0=9 o 11: Inversión OCnA en Modo comparación, OCnB desconectado (Modo de operación Normal) Para todas las configuraciones WGM1, Modo de operación Normal, OC1A/OC1B desconectados.

1 0 Pone en cero OCnA/OCnB en el Punto de comparación cuando cuenta ascendentemente, pone en uno OCnA/OCnB en modo comparación cuando cuanta descendentemente.

1 1 Pone en uno OCnA/OCnB en el Punto de comparación cuando cuenta ascendentemente, pone en cero OCnA/OCnB en Punto de comparación cuando cuanta descendentemente.

• Bit 1:0 – WGMn1:0: Modo Generador de Forma de Onda (Cuadrada) Combinado con los bits WGMn3:2 encontrados en el registro TCCRnB, estos bits controlan la secuencia de conteo del contador, La fuente para el máximo valor del contador (TOP), y que tipo de generación de forma de onda va hacer usada. Los Modos de operación soportador por el Timer/Contador unitario son: Modo Normal (Contador), Modo de Seteo del timer en el punto de comparación (CTC) y tres tipos de modos de modulador de ancho de Pulso (PWM). Descripción de bits en Modo Generador de Forma de Onda

Modo

WGMn3

WGMn2

(CTCn)

WGMn1 (PWMn

1)

WGMn0 (PWMn

0)

Modo de Operación

Timer/Contador

TOP Actualización

OCRnX

Encender

bandera TOVn

0 0 0 0 0 Normal 0xFFFF

Inmediato 0xFF

1 0 0 0 1 PWM, Fase Correcta, 8 bits

0x00FF

TOP 0X00

2 0 0 1 0 PWM, Fase Correcta, 9 bits

0x01FF

TOP 0X00

3 0 0 1 1 PWM, Fase Correcta, 10 bits

0x03FF

TOP 0X00

4 0 1 0 0 CTC OCRnA

Inmediato 0xFF

5 0 1 0 1 Rápida PWM, 8 bits

0x00FF

0X00 TOP

6 0 1 1 0 Rápida PWM, 9 bits

0x01FF

0X00 TOP

7 0 1 1 1 Rápida PWM, 10 bits

0x03FF

0X00 TOP

8 1 0 0 0 PWM, Fase y ICRn 0X00 0X00

Page 84: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Frecuencia Correcta

9 1 0 0 1 PWM, Fase y Frecuencia Correcta

OCRnA

0X00 0X00

10 1 0 1 0 PWM, Fase y Correcta

ICRn TOP 0X00

11 1 0 1 1 PWM, Fase y Correcta

OCRnA

TOP 0x00

12 1 1 0 0 CTC ICRn Inmediato 0xFF

13 1 1 0 1 (Reservado) - - -

14 1 1 1 0 Rápida PWM ICRn 0x00 TOP

15 1 1 1 1 Rápida PWM OCRnA

0x00 TOP

TOP: Punto máximo de comparación 15.11.2 TCCR1B –Registro d Control B Timer/Contador1

• Bit 7 – ICNCn: Salida con Captura y Cancelación del Ruido Colocando estos bits en uno se activa el Modo de Salida con captura y cancelación del ruido. Cuando la cancelación del ruido es activado, la entrada desde el pin de Captura de entrada (ICPn) se encarga de filtrar. El funcionamiento del filtro requiere de cuatro valores iguales sucesivos en el pin ICPn para efectuar cambios a la salida. La Captura a la entrada tiene una demora de cuatro ciclos del oscilador cuando es habilitada la cancelación de ruido. • Bit 6 – ICESn: Selector de Flanco de captura a la entrada Este bit selecciona el flanco en el pin de Captura de entrada (ICPn), que suele disparar el evento de captura. Cuando el bit ICESn esta escrito a cero, el flanco negativo es usado como disparo, y cuando el bit ICESn esta escrito a uno, el flanco positivo disparara la captura. Cuando la captura es disparada de acuerdo a la programación del ICESn, el valor del contador es copiado en el registro de Captura a la entrada (ICEn). El evento también pone en uno la bandera de captura a la entrada (ICFn), y esto puede causar la interrupción de captura a la entrada, si esta interrupción es habilitada. Cuando el ICRn es usado como valor TOPE (ver la descripción de los bits WGMn3:0 localizados en los registros TCCRnA y el TCCRnB), el ICOn es desconectado y consecuentemente la función de la entrada como captura es deshabilitada. • Bit 5 – Bits Reservados Este bit es reservado para usos futuros. Para asegurar la compatibilidad con futuros dispositivos, este bit puede ser escrito en cero cuando TCCRnB es escrito. • Bit 4:3 – WGMn3:2: Modo Generador de Forma de Onda (Cuadrada) Ver la descripción del registro TCCRnA

Page 85: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 2:0 – CSn2:0: Selección del Reloj Tres fuentes de selección de bits para el reloj pueden ser usadas por el Timer/Contador Descripción de Bits para selección del Reloj

CSn2 CSn1 CSn0 Descripción

0 0 0 Sin fuente de Reloj(Timer/Contador parados)

0 0 1 Clk E/S (Sin prescalador)

0 1 0 Clk E/S /8(Prescalador)

0 1 1 Clk E/S /64(Prescalador)

1 0 0 Clk E/S /256(Prescalador)

1 0 1 Clk E/S /1024(Prescalador)

1 1 0 Fuente de Reloj Externo pin Tn. Reloj con flanco de bajada

1 1 1 Fuente de Reloj Externo pin Tn. Reloj con flanco de subida

Si los modos externos la pin son usados por el Timer/Contador, las transiciones en el pin Tn serán contadas por el contador incluso si el pin es configurado como una salida. 15.11.3 TCCR1C – Registro de Control C Timer/Contador1

• Bit 7 – FOCnA: Comparación Forzada a la Salida para el Canal A • Bit 6 – FOCnB: Comparación Forzada a la Salida para el Canal B Los bits FOCnA/FOCnB son únicamente activados cuando los bits WGMn3:0 están especificados en el Modo no PWM. Sin embargo para asegurar la futura compatibilidad con dispositivos, estos bits deben pasar de uno a cero cuando TCCRnA es escrito cuando se encuentra operando en modo PWM. Cuando se escribe uno lógico en el bit FOCnA/FOCnB, e inmediatamente la comparación en el punto es forzada en la generación unitaria de forma de onda. Los bits FOCnA/FOCnB son implementados como habilitadores. Por consiguiente esto es el valor del bit COMnx1:0 que determina el efecto de la comparación forzada. La habilitación del FOCnA/FOCnB no genera ninguna interrupción ni limpia el timer en el modo punto de comparación (CTC) usando OCRnA como valor tope. Los bits FOCnA/FOCnB son siempre leídos como cero. 15.11.4 TCNT1H y TCNT1L –Timer/Counter1

Page 86: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Las dos localidades Timer/Contadores E/S (TCNTnH y TCNTnL, combinando TCNTn)) brindan acceso directo, ambos para leer y escribir operaciones, para el Timer/Contador uno 16-bits. Asegúrese que en ambos los bytes en alto y bajo sean leído y escritos simultáneamente cuando se accede a los registros del CPU, el acceso es realizado usando temporalmente 8-bits en alto del registro (TEMP). Este registro temporal es compartido por todos los otros 16-bits Registrados. Modificando el contador (TCNTn) mientras la cuenta esta corriendo introduce el riesgo de perder la comparación entre TCNTn y uno de los registros OCRnx. Escribiendo en los registros (TCNTn) el punto de comparación en el siguiente ciclo de máquina para todas las comparaciones unitarias. 15.11.5 OCR1AH y OCR1AL – Registros de Comparación de Salida 1 A

15.11.6 OCR1BH y OCR1BL – Registros de Comparación de Salida 1 B

Los registros de comparación de salida contienen 16-bits cuyo valor es continuamente comparado con el valor del contador (TCNTn). A match puede ser usado para generar una interrupción por comparación a la salida, o generar una forma de onda a la salida en el pin OCnx. Los registros de comparación de salida son de tamaño 16-bits. Para asegurar que en ambos los bytes altos y bajos son escritos simultáneamente con la escritura del los registros en el CPU, el acceso es realizado usando 8 bits temporales en alto (TEMP). Estos registros temporales son compartidos por otros registros de 16 bits. 15.11.7 ICR1H y ICR1L – Registro de Captura de Entrada 1

La Captura de entrada es actualizada con el valor del contador (TCNTn) cada vez que un evento ocurre en el pin ICP (opcionalmente para la salida del Comparador para el Timer/Contador1). La captura a la entrada puede ser usada para definir el valor tope de l contador. El registro de Captura a la entrada es de 16 bits. Para asegurar que ambos bytes en alto y en bajo sean leídos simultáneamente cuando se accede a los registros del CPU, el acceso es continuamente usado con un registro en alto de un byte (TEMP). Estos registros temporales son compartidos por todos los otros registros de 16-bits. 15.11.8 TIMSK1 – Registro Mascara de Interrupción Timer/Counter1

• Bit 7:6 – Res: Bits Reservados

Page 87: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Estos bits no son usados en el ATmega164P/324P/644P, y siempre están escritos como cero. • Bit 5 – ICIE1: Habilitación de Interrupción a la entrada Timer/Counter1 Cuando este bit es escrito con uno, y la bandera I en el registro de Estado es uno (Interrupciones Globales habilitadas), la interrupción de captura a la salida Timer/Contador1 es habilitada. El correspondiente vector de interrupción es ejecutado cuando la bandera ICF1, localizada en TIFR1, es uno. • Bit 4:3 – Res: Bits Reservados Estos bits no son usados en el ATmega164P/324P/644P, y siempre están escritos como cero. • Bit 2 – OCIE1B: Salida de Comparación B, habilitación del punto de interrupción Timer/Counter1 Cuando este bit es escrito con uno, y la bandera-I en el registro de Estado es uno (Interrupciones globales habilitadas). La Salida de Comparación B, y el punto de interrupción Timer/Counter1 es habilitado. El correspondiente vector de interrupción es ejecutado cuando la bandera OCF1B, localizada en TIRF1, es uno. • Bit 1 – OCIE1A: Salida de Comparación A, habilitación del punto de interrupción Timer/Counter1 Cuando este bit es escrito con uno, y la bandera-I en el registro de Estado es uno (Interrupciones globales habilitadas). La Salida de Comparación A, y el punto de interrupción Timer/Counter1 es habilitado. El correspondiente vector de interrupción es ejecutado cuando la bandera OCF1A, localizada en TIRF1, es uno. • Bit 0 – TOIE1: Habilitación de la Interrupción por Desbordamiento Timer/Counter1 Cuando este bit es escrito con uno, y la bandera-I en el registro de Estado es uno (Interrupciones globales habilitadas). La Interrupción por desbordamiento Timer/Counter1 es habilitado. El correspondiente vector de interrupción es ejecutado cuando la bandera TOV1, localizada en TIRF1, es uno. 15.11.9 TIFR1 – Registro de Banderas de Interrupción Timer/Counter1

• Bit 7:6 – Res: Bits Reservados Estos bits no son usados en el ATmega164P/324P/644P, y siempre están escritos como cero. • Bit 5 – ICF1: Bandera de Captura a la Entrada Timer/Counter1 Esta bandera es uno cuando ocurre un evento de captura en el pin ICP1: Cuando el registro de captura de entrada (ICR1) es uno por el WGMn3:0 puede ser usada como el valor tope, la bandera ICF1 es uno cuando el contador alcanza el valor tope. ICF1 es automáticamente limpiado cuando le vector de interrupción de captura a la entrada es ejecutado. Alternativamente, ICF1 puede ser limpiado por escritura de uno lógico en la localidad del bit. • Bit 4:3 – Res: Bits Reservados Estos bits no son usados en el ATmega164P/324P/644P, y siempre están escritos como cero. • Bit 2 – OCF1B: Bandera de Comparación a la salida B Timer/Counter1 Esta bandera es uno en el tiempo de ciclo de maquina después del valor del contador (TCNT1) del registro de comparación de salida B (OCR1B). Note que una Comparación forzada a la salida (FOC1B) no habilitara la bandera OCF1A. OCF1A es automáticamente limpiada cuando es ejecutado el vector de interrupción por comparación a la salida B. Alternativamente, OCF1B puede ser limpiada escribiendo uno lógico en la localidad de este bit.

Page 88: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 1 – OCF1A: Timer/Counter1, Output Compare A Match Flag Esta bandera es uno en el tiempo de ciclo de maquina después del valor del contador (TCNT1) del registro de comparación de salida A (OCR1A). Note que una Comparación forzada a la salida (FOC1A) no habilitara la bandera OCF1A. OCF1A es automáticamente limpiada cuando es ejecutado el vector de interrupción por comparación a la salida A. Alternativamente, OCFA puede ser limpiada escribiendo uno lógico en la localidad de este bit. • Bit 0 – TOV1: Timer/Counter1, Overflow Flag La programación de esta bandera es dependiente del bit WGMn3:0. En Modo normal y CTC, la bandera TOV1 es uno cuando el timer se desborda. TOV1 es automáticamente limpiado cuando el vector de Interrupción por desbordamiento del Timer/Contador1 es ejecutado. Alternativamente, TOV1 puede ser limpiado por escritura de uno lógico en la localidad de este bit. 16. TIMER/COUNTER2 CON PWM Y OPERACIÓN ASINCRÓNICA A 8-BITS • Simple Canal Contador • Recarga Automática en los modos Clear Timer y Punto de Comparación (Compare Match). • Modulador de Ancho de Pulso en Fase Correcta (PWM) • Generador de frecuencias • Prescalador del reloj a 10bits • Fuente de Comparación de Interrupciones y desbordamiento (TOV2, OCF2A y OCF2B) • Permite trabajar con un Cristal externo de 32 KHz independientemente de la señal de reloj interna. VISIÓN GENERAL

El Timer/Counter2 es un módulo de propósito general, de un solo canal y es de 8 bits. A Continuación se muestra el diagrama en bloque del Timer/Counter2 de 8 bits.

16.7 Modos de Operación

Page 89: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El modo de Operación por ejemplo el comportamiento de los pines del Timer/Counter y de la Salida de comparación (Output Compare), están definidos por la combinación del Modo de generación de Formas de Onda (WGM22:0) y el Modo de Comparación de Salida COM2x1:0. Los bits del Modo de Comparación de Salida no afectan la secuencia de conteo, mientas se ejecuta el modo de Generación de Formas de Onda. Los bits COM2x1:0 controlan si la salida generada del PWM está invertida o no. Para el modo de no PWW los bits COM2x1:0 controlan si la salida debe ser puesta en uno, limpiada, o invertida en el punto de comparación. 16.7.1 Modo Normal El modo más simple de operación es el Modo Normal (WGM22:0 = 0). En este modo la dirección del contador siempre se encuentra incrementando, y el contador no se pone en cero. El contador simplemente deja de contar con un valor máximo a 8 bits (TOP=0xFF) y luego inicia desde tope bajo (0x00). En operación normal la Bandera de desbordamiento del Timer/Contador serán uno al mismo tiempo que el ciclo de máquina como el TCNT2 llegan a ser cero. La bandera TOV2 en este caso se comporta como un noveno bit, excepto que esté solo en uno. Sin embargo, combinado con la interrupción de desbordamiento del timer que automáticamente limpia la bandera TOV2, la resolución del timer puede incrementarse por software. No hay casos especiales a considerar en el Modo Normal, el valor del nuevo contador puede ser escrito a cualquier instante. La salida de comparación unitaria puede ser usada para generar interrupciones en algún tiempo dado. Usar la salida de comparación para generar Formas de Onda en modo Normal no es recomendada, ya que ocupa mucho tiempo en el CPU. 16.7.2 Modo Clear Timer y Punto de Comparación (CTC) En el modo Clear Time y Punto de Comparación o CTC (WGM22:0 = 2), el registro OCR2A es usado para manipular la resolución del contador. En el modo CTC el contador es puesto en cero cuando el valor del contador (TCNT2) se combina con el OCR2A. El OCR2A define el valor máximo del contador, por lo tanto también su resolución. Este modo permite un control más grande de la frecuencia de salida en el punto de comparación. Estos también simplifica la operación de contador de eventos externos. El diagrama de tiempos para el CTC se muestra a continuación. El valor de contador (TCNT2) incrementa mientras ocurre una comparación entre TCNT2 y OCR2A, y el contador (TCNT2) es limpiado.

Una interrupción puede ser generada cada vez que el valor del contador llega al máximo valor usando la bandera del OCF2A. Si la interrupción es habilitada, la rutina de interrupción puede ser

Page 90: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

usada para actualizar el valor máximo. Sin embargo, cambia de valor máximo a la dirección 0x00 cuando el contador está corriendo sin ningún prescalador o con valores bajos de prescalador, el valor debe ser tomado con cuidado ya que el modo de CTC no tiene una característica de doble buffer. Si el nuevo valor escrito en el OCR2A es más bajo que el valor corriente del TCNT2, el contador perderá el punto de comparación. El contador entonces contará hasta su máximo valor (0xFF) y vuelve a empezar desde la dirección 0x00 antes de que ocurra un punto de comparación. Para generar formas de ondas cuadradas a la salida en el Modo CTC, la salida del OC2A puede estar en uno o invertido su valor lógico en cada punto de comparación por los bits del Modo Comparador de Salida (COM2A1:0 = 1). El valor del OC2A no debe ser visible en los pines del pórtico a menos que la dirección del dato del pin de salida esté en uno. La forma de Onda cuadrada generada tendrá una frecuencia máxima de fOC2A = fclk_I/O/2 cuando OCR2A es puesto en la dirección (0x00). La frecuencia de la forma de onda está definida por la siguiente ecuación:

La variable N representa el factor del prescalador (1, 8, 32, 64, 128, 256, o 1024). En cuanto al modo Normal de operación, la bandera del TOV2 es seteada en el mismo ciclo del reloj del timer cuando el contador cuenta del máximo valor a la dirección 0x00. 16.7.3 Modo de Rápida PWM El modo de Rápida PWM (WGM02:0=3 o7) proporciona una opción de generación de forma de onda PWM a alta frecuencia. La rápida PWM difiere de otra opción de PWM por la simple pendiente de operación (diente de sierra). El contador cuenta desde el 0x00 hasta el Tope luego inicia desde 0x00. El tope es definido como 0xFF cuando WGM2:0 = 3, y OCR0A cuando WGM2:0 = 7. En Modo de comparación de salida no invertido, la salida de comparación (OCOx) es limpiada en el punto de comparación entre TCNT0 y OCR0x, y pone en uno a la dirección 0x00. En Modo de Comparación de salida Invertida, la salida es puesta en uno en el punto de comparación y es limpiada en la dirección 0x00, en simple pendiente de operación, la frecuencia de operación en modo rápida PWM puede estar dos veces en alto como en el modo de fase correcta PWM que usa doble pendiente de operación (onda triangular). Esta alta frecuencia hace que el modo Rápida PWM pueda ser usada para reguladores de voltaje, rectificadores, y aplicaciones DAC. Para alta frecuencia se tiene físicamente pequeños tamaños de componentes externos (capacitores), y reduce el costo total del sistema. Diagrama de Tiempos en Modo Rápida PWM

Page 91: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La bandera de desbordamiento (TOV2) del Timer/Contador es puesta en uno cada vez que la cuenta llega al Tope. Si la interrupción es habilitada, la rutina de interrupción puede ser usada para actualizar el valor de comparación. En modo de Rápida PWM, la comparación unitaria permite la generación de formas de onda PWM en el pin OC2x. Configurando los bits del COM2x1:0 a dos producirán una PWM no invertida y una PWM invertida de salida q puedes ser generada por configuración del COM2x1:0 con tres: Configurando los bits COM2A1:0 con uno permitiendo la inversión del pin OC0A en el punto de comparación si el bit WGM22 es uno. Esta opción no es valida para el pin OC2B. El valor actual OC2x solo será visible en el pin del pórtico si la dirección del dato para el pin del pórtico es uno como salida. La forma de onda PWM es generada por la configuración del registro OC2x al tiempo que el contador del ciclo de máquina es limpiado (cambio desde el Tope hasta 0x00). La frecuencia para la salida de la PWM puede ser calculada por la siguiente ecuación:

256

/

N

ff

oIclk

OCnxPWM

La variable N representa el factor prescalador (1,8, 64, 256 o1024). El valor extremo para el OCR0A es igual a uno en 0X00, la salida será un pico estrecho para cada MAX+1 del ciclo de máquina del reloj. Configurando el OCR2A igual al MAX (0xFF)) resulta una constante en alto o bajo de la salida (dependiendo de la polaridad de la salida será uno por los bits COM2A1:0). A frecuencia (50 %) salida de la forma de onda en Modo de Rápida PWM puede archivado por la configuración del OC2x para invertir esto con un nivel lógico en cada punto de comparación (COM2x1:0 = 1). La generación de la forma de onda tendrá una máxima frecuencia de = fclk_I/O/2 cuando OCR2A va de uno a cero. Esta característica es similar al del OC2A invertido en modo CTC, excepto a la característica del doble buffer de la comparación a la salida el uno es el habilitador del modo de Rápida PWM 16.7.4 Modo de Fase Correcta del PWM El Modo de Fase Correcta de PWM (WGM22:0 = 1 o 5) provee una alta resolución en la opción para la Generación de Formas de Ona de fase correcta. El Modo de operación de fase correcta está basado en la operación dual-slope (onda triangular). El contador cuenta repetidamente desde el valor mínimo 0x00 hasta el valor máximo y desde el valor máximo al valor mínimo. El valor máximo está definido como 0x00 cuando WGM22:0=1 y cuando MGM22:0=5. En Modo de comparación no invertida, la comparación de salida (OC2x) es limpiada en el punto de comparación entre TCNT2 y OCR2x mientras cuenta ascendentemente y

Page 92: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

pone uno mientras el punto de comparación cuanta hacia abajo. En el Modo de comparación invertida, la operación es invertida. La operación dual-slope tiene una frecuencia de operación más baja que la máxima en simple operación slope. Sin embargo, debido a los modos de simetría de la pendiente doble de PWM, estos modos son preferidos para aplicaciones de control de motor. En fase correcta de PWM el contador es incrementado mientras el valor del contador llega a su valor máximo. Cuando el contador alcanza su valor máximo, este contador cambia de dirección. El valor del TCNT2 será igual al valor máximo para un ciclo de máquina del Timer. En la figura siguiente se muestra el diagrama de tiempos para el modo de operación Correcta PWM para ilustrar la operación dual slope (doble pendiente). El diagrama incluye las salidas invertidas y no invertidas del PWM. La línea pequeña horizontal marcada en el TCNT2 representa comparación entre OCR2x y TCNT2.

La bandera de desbordamiento del Timer/Counter (TOV2) es puesta en uno cada vez que el contador llega a su valor mínimo (0x00). La bandera de interrupción puede ser usada para generar un tiempo de interrupción cada vez que contador llega al valor mínimo. En Modo de Fase Correcta, la unidad de comparación permite generar formas de onda cuadrada de PWM en el pin OC2x. Configurando los dos bits COM2x1:0 como dos en binario producirá una PWM no invertida. Una salida de PWM invertida puede ser generada configurando los dos bits COM2x1:0 como tres en binario. El valor máximo es definido como 0xFF cuando WGM2:0=3, y cuando MGM2:0=7. El valor actual del OC2x no debe ser visible en los pines del pórtico a menos que la dirección del dato del pin de salida esté en uno. La forma de Onda cuadrada por el registro OC2x en el punto de comparación entre OCR2x y TCNT2 cuando ocurren incrementos. La frecuencia de la PWM en Modo de Fase Correcta puede ser calculada por la siguiente ecuación:

Page 93: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La variable N representa el factor del prescalador (1, 8, 32, 64, 128, 256, o 1024). Los valores extremos para el Registro OCR2A representa casos especiales cuando genera una forma de onda cuadrada de salida PWM cuando está en modo de fase correcta. Si el pin OCR2A es igual que el valor mínimo, la salida estará continuamente en bajo y si es igual al valor máximo la salida permanecerá en alto para Modo no invertido de la PWM. Para la salida de la PWM invertida se tendrá valores de niveles lógicos opuestos. En el inicio del segundo periodo de la figura anterior en OCnx se tiene una transición de alto a bajo siempre y cuando no este en Punto de Comparación. El punto de esta transición es para garantizar simetría cerca del valor mínimo. Existen dos casos para dar una transición sin Punto De Comparación. Cuando el OCR2A cambia su valor máximo como en la figura anterior. Cuando el valor del OCR2A es el máximo, el valor del pin OCn es igual como resultado de la cuenta descendente en el Punto de Comparación. Para asegurar la simetría en la parte inferior el valor del OCn debe corresponder al resultado de la cuenta ascendente en el punto de Comparación. El timer empieza a contar desde un valor mas alto que el uno en el OCR2A, y por esta razón se pierde el Punto de Comparación y por lo tanto el ONc cambia si hubiese contado ascendentemente. 16.11 DESCRIPCION DE REGISTROS TCCR2A – Timer/Counter Control Register A

• Bits 7:6 – COM2A1:0: Modo A Comparación de Salida Estos bits controlan el comportamiento del pin (OC2A) de comparación. Si uno o ambos bits COM2A1:0 son uno, las salidas del OC2A se ponen en modo de funcionamiento normal haciendo que se conecten los pines de entrada y salida. Sin embargo, note que el bit OC2A que corresponde al registro de dirección de datos (DDR) debe estar en uno para habilitar el controlador de salida. Cuando OCA2 es conectado al pin, la función de los bits COM2A1:0 dependen de la configuración de los bits WGM22:0. La siguiente tabla muestra la funcionalidad de los bits COM2A1:0 cuando los bits WGM22:0 están en uno para un modo normal o CTC (no PWM). Tabla: Modo de Comparación de Salida (no PWM)

COM2A1 COM2A0 Descripción

0 0 Modo de Operación Normal, OC0A desconectado

0 1 Inversión del OC2 en Punto de Comparación (Compare Match)

1 0 Pone cero el OC2 en Punto de Comparación (Compare Match)

1 1 Pone uno el OC2 en Punto de Comparación (Compare Match)

La siguiente tabla muestra la funcionalidad de los bits COM2A1:0 cuando el WGM21:0 están en uno para un Modo Rápido de PWM. Tabla: Modo de Comparación de Salida (Modo de Rápida PWM)

Page 94: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

COM2A1 COM2A0 Descripción

0 0 Modo de Operación Normal, OC2A desconectado

0 1 WGM22=0: Modo de operación Normal, OC0A desconectado WGM22=1: Inversión del OC2A en Punto de Comparación (Compare Match).

1 0 Pone cero el OC2A en Punto de Comparación (Compare Match). Pone uno la parte inferior de OC2A.

1 1 Pone uno el OC2A en Punto de Comparación (Compare Match). Pone cero la parte inferior de OC2A

La siguiente tabla muestra la funcionalidad de los bits COM2A1:0 cuando el WGM22:0 están en uno para un Modo en Fase correcta del PWM. Tabla: Modo de Comparación de Salida (Modo en Fase Correcta PWM)

COM2A1 COM2A0 Descripción

0 0 Modo de Operación Normal, OC2A desconectado

0 1 WGM22=0: Modo de operación Normal, OC2A desconectado WGM22=1: Inversión del OC2A en Punto de Comparación Compare Match

1 0 Pone cero el OC2A en Compare Match, Pone uno la parte inferior de OC2A en cuenta descendente

1 1 Pone uno el OC2A en Compare Match, Pone cero la parte inferior de OC2A en cuenta descendente

• Bits 5:4 – COM2B1:0: Modo B Comparación de Salida Estos bits controlan el comportamiento del pin (OC2B) de comparación. Si uno o ambos bits COM2B1:0 son uno, las salidas del OC2B se ponen en modo de funcionamiento normal haciendo que se conecten los pines de entrada y salida. Sin embargo, note que el bit OC2B que corresponde al registro de dirección de datos (DDR) debe estar en uno para habilitar el controlador de salida. Cuando OC2B es conectado al pin, la función de los bits COM2B1:0 dependen de la configuración de los bits WGM22:0. La siguiente tabla muestra la funcionalidad de los bits COM2B1:0 cunado los bits WGM22:0 están en uno para un modo normal o CTC (no PWM). Tabla: Modo de Comparación de Salida (no PWM)

COM2B1 COM2B0 Descripción

0 0 Modo de Operación Normal, OC0B desconectado

0 1 Inversión del OC2B en Punto de Comparación (Compare Match).

1 0 Pone cero el OC2B en Punto de Comparación (Compare Match).

1 1 Pone uno el OC2B en Punto de Comparación (Compare Match).

La siguiente tabla muestra la funcionalidad de los bits COM2B1:0 cuando el WGM21:0 están en uno para un Modo Rápido de PWM. Tabla: Modo de Comparación de Salida (Modo de Rápida PWM)

COM2B1 COM2B0 Descripción

0 0 Modo de Operación Normal, OC2B desconectado

0 1 WGM22=0: Modo de operación Normal, OC0B desconectado WGM22=1: Inversión del OC2B en Punto de Comparación (Compare Match).

1 0 Pone cero el OC2B en Punto de Comparación (Compare Match), Pone uno la parte inferior de OC2B.

1 1 Pone uno el OC2B en Punto de Comparación (Compare Match), Pone cero la parte inferior de OC2B.

Page 95: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

La siguiente tabla muestra la funcionalidad de los bits COM2B1:0 cuando el WGM22:0 están en uno para un Modo en Fase correcta del PWM. Tabla: Modo de Comparación de Salida (Modo en Fase Correcta PWM)

COM2B1 COM2B0 Descripción

0 0 Puerto de Operación Normal, OC2B desconectado

0 1 WGM22=0: Puerto de operación Normal, OC2B desconectado WGM22=1: Inversión del OC2B en Compare Match

1 0 Pone cero el OC2B en Compare Match, Pone uno la parte inferior de OC2B en cuenta descendente

1 1 Pone uno el OC2B en Compare Match, Pone cero la parte inferior de OC2B en cuenta descendente

• Bits 3:2 – RES: Bits Reservados Estos bits son bits reservados en el ATmega164P/324P/644P y siempre se leerán como cero. • Bits 1:0 – WGM21:0: Modo de Generación de Formas de Onda Cuadrada. Conjuntamente con el bit WGM22 que se encuentra en el registro TCCR2B, estos bits controlan la secuencia del contador, la fuente para un valor de contador máximo (TOP) y el tipo de forma de onda generada para ser usada ver en la tabla siguiente: Modo de descripción del bit Generador De Formas de Onda Cuadrada

Modo WGM2 WGM1 WGM0 Modo de Operación Timer/Counter

Valor Máximo (TOP)

Actualización Del OCRx

TOV Encender bandera (1)(2)

0 0 0 0 Normal 0XFF Inmediato MAX

1 0 0 1 Modo Fase Correcta (PWM)

0XFF TOP

2 0 1 0 CTC OCRA Inmediato MAX

3 0 1 1 Rápida PWM 0XFF BOTTON MAX

4 1 0 0 Reservado - - -

5 1 0 1 Modo Fase Correcta (PWM)

OCRA TOP BOTTON

6 1 1 0 Reservado - - -

7 1 1 1 Rápida PWM OCRA BOTTON TOP

Notas: 1. MAX=0XFF (Valor máximo) 2.BOTTON=0x00 (Valor mínimo) Los Modos de operación que soporta la unidad Timer/Counter son: Modo normal (Counter), Modo Clear Time y Punto de Comparación (Compare Match (CTC)), y dos modos para la Modulación de Ancho de Pulso (PWM). 16.11.2 TCCR2B – Timer/Counter Control Register B

• Bit 7 – FOC2A: Comparación Forzada de Salida A

Page 96: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El bit FOC2A es activado solo cuando los bits del WGM especifican un modo no PWM. Sin embargo, para asegurar la compatibilidad con el dispositivo futuro, este bit debe cambiar de uno a cero cuando TCCR2B es escrito cuando la operación está en Modo PWM. Cuando se escribe un uno lógico en el bit FOC2A, una comparación inmediata es forzada en la unidad de Generación de Formas de Onda Cuadradas. La salida del OC2A es cambiada de acuerdo a la configuración de los bits del COM2A1:0. Note que el bit FOC2A es implementado como un habilitador. Por lo tanto este es el valor presente en los bits COM2A1:0 que determinan los efectos de la comparación forzada. Una habilitación del FOC2A no genera cualquier interrupción, no limpiará el Timer en el modo CTC usando el OCR2A como valor mínimo. El bit FOC2A siempre se lee como cero. • Bit 6 – FOC2B: Comparación Forzada de Salida B El bit FOC2B esta activo solo cuando los bits del WGM están especificados en modo de no PWM. Sin embargo, para asegurar la compatibilidad con el dispositivo futuro, este bit debe cambiar de uno a cero cuando TCCR2B es escrito cuando la operación está en Modo PWM. Cuando se escribe un uno lógico en el bit FOC2B, una comparación inmediata es forzada en la unidad de Generación de Formas de Onda. La salida del OC2B es cambiada de acuerdo a la configuración de los bits del COM2B1:0. Note que el bit FOC2B es implementado como un habilitador. Por lo tanto este es el valor presente en los bits COM2B1:0 que determinan los efectos de la comparación forzada. Una habilitación del FOC2B no genera cualquier interrupción, no limpiará el Timer en el modo CTC usando el OCR2B como valor mínimo. El bit FOC2B siempre se lee como cero. • Bits 5:4 – Res: Bits Reservados Estos bits son bits reservados en el ATmega164P/324P/644P y siempre se leerán como cero. • Bit 3 – WGM22: Modo de generación de Formas de Onda Ver la descripción en el Registro A Timer/Counter. • Bit 2:0 – CS22:0: Selección Del Reloj Los tres bits para la selección del reloj, seleccionan la fuente del reloj para ser usado por el Timer/Counter. Descripción de los bits selectores para el Reloj

CS22 CS21 CS20 Descripción

0 0 0 Sin Fuente del reloj (Timer/Counter detenido)

0 0 1 ClkT2S/(Sin Prescalador)

0 1 0 ClkT2S/8 (Del Prescalador)

0 1 1 ClkT2S/32 (Del Prescalador)

1 0 0 ClkT2S/64 (Del Prescalador)

1 0 1 ClkT2S/128 (Del Prescalador)

1 1 0 ClkT2S/256 (Del Prescalador)

1 1 1 ClkT2S/1024 (Del Prescalador)

Page 97: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Si los pines en modo externo son usados para el Timer/Counter, las transiciones en el pin T0 del reloj contarán siempre y cuando el pin sea configurado como una salida. Este elemento permite controlar por software el contador. 16.11.3 TCNT2 – Registro Timer/Counter

El registro Timer/Counter brinda un acceso directo, ambos para operación de lectura y escritura para la unidad de 8 bits del Timer/Counter. Al escribir en el Registro TCNT2 remueve el punto de comparación al siguiente tiempo del reloj. Al modificar el contador TCNT2 cuando está activado (corriendo), introduce el riesgo de perder la comparación entre los registros TCNT2 y el OCR2x. 16.11.4 OCR2A – Registro de Comparación de Salida A

El registro de comparación de salida A contiene un valor de 8 bits que están continuamente comparándose con el valor del contador (TCNT2). Este modo puede ser usado para generar una Comparación de Interrupción a la salida o para generar formas de onda cuadrada a la salida del pin OC2A. 16.11.5 OCR2B – Registro de Comparación de Salida B

El registro de comparación de salida B contiene un valor de 8 bits que están continuamente comparándose con el valor del contador (TCNT2). Este modo puede ser usado para generar una Comparación de Interrupción a la salida o para generar formas de onda cuadrada a la salida del pin OC2B. 16.11.6 ASSR – Registro de Estado Asincrónico

• Bit 6 – EXCLK: Habilitación de la Entrada de Reloj Cuando el bit EXCLK es puesto a uno y el reloj asincrónico es seleccionado, el buffer en la entrada del reloj externo es habilitada y por el pin de Reloj Oscilador 1 (Timer Oscilador TOSC1) puede ser ingresado un reloj externo en ver de un cristal de 32Khz.

Page 98: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El bit EXCLK debería ser escrito antes de que una operación asincrónica es seleccionada. Note Que el cristal del Oscilador solo correrá cuando este bit es cero. • Bit 5 – AS2: Timer/Counter2 Asincrónico Cuando el bit AS2 es puesto en cero, el Timer / Counter2 es registrado desde el reloj de E/S, clk I/O. Cuando el bit AS2 es puesto en uno, el Timer / Counter2 es registrado desde el Oscilador del Cristal conectado al pin de Reloj Oscilador 1 (Timer Oscilador TOSC1). Cuando el valor del AS2 es cambiado, el contenido del TCNT2, OCR2A,OCR2B, TCCR2A y TCCR2B puede ser modificado. • Bit 4 – TCN2UB: Actualización de Espera del Timer/Counter2 Cuando se encuentra en operación asincrónica el Timer/Counter2 y es escrito el TCNT2, este bit llega a ser uno. Cuando el TCNT2 ha sido actualizado desde el registro de almacenamiento temporal, este bit es limpiado por hardware. Un cero lógico en este bit indica que el TCNT2 está listo para ser actualizado con un nuevo valor. • Bit 3 – OCR2AUB: Registro Comparador de Actualización de Espera de Salida 2 Cuando se encuentra en operación asincrónica el Timer/Counter2 y es escrito el OCR2A, este bit llega a ser uno. Cuando el OCR2A ha sido actualizado desde el registro de almacenamiento temporal, este bit es limpiado por hardware. Un cero lógico en este bit indica que el OCR2A está listo para ser actualizado con un nuevo valor. • Bit 2 – OCR2BUB: Registro Comparador de Actualización de Espera de Salida 2 Cuando se encuentra en operación asincrónica el Timer/Counter2 y es escrito el OCR2B, este bit llega a ser uno. Cuando el OCR2B ha sido actualizado desde el registro de almacenamiento temporal, este bit es limpiado por hardware. Un cero lógico en este bit indica que el OCR2B está listo para ser actualizado con un nuevo valor. • Bit 1 – TCR2AUB: Registro de Control de Actualización de Espera del Timer/Counter2 Cuando se encuentra en operación asincrónica el Timer/Counter2 y es escrito el TCCR2A, este bit llega a ser uno. Cuando el TCCR2A ha sido actualizado desde el registro de almacenamiento temporal, este bit es limpiado por hardware. Un cero lógico en este bit indica que el TCCR2A está listo para ser actualizado con un nuevo valor. • Bit 0 – TCR2BUB: Registro de Control de Actualización de Espera del Timer/Counter2 Cuando se encuentra en operación asincrónica el Timer/Counter2 y es escrito el TCCR2B, este bit llega a ser uno. Cuando el TCCR2B ha sido actualizado desde el registro de almacenamiento temporal, este bit es limpiado por hardware. Un cero lógico en este bit indica que el TCCR2B está listo para ser actualizado con un nuevo valor. Si una escritura es llevada a cabo en cualquiera de los 5 registros del Timer/Counter2 mientras la bandera de actualización de espera está en uno, el valor de la actualización puede ser modificado y puede causar que una interrupción involuntaria ocurra.

Page 99: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Los mecanismos de lectura del OCR2A, OCR2B, TCCR2A y TCCR2B son diferentes. Cuando se lee el TCNT2, el valor actual del Timer es leído. Cuando se lee el valor del OCR2A, OCR2B, TCCR2A y TCCR2B el valor en el registro temporal de almacenamiento es leído. 16.11.7 TIMSK2 – Registro Máscara de Interrupción del Timer/Counter2

• Bit 2 – OCIE2B: Habilitación de Interrupciones del Punto de Comparación B del Timer/Counter2 Cuando el bit OCIE2B es escrito a uno y el bit I en el registro de estado está en uno, la interrupción del Punto de comparación del Timer/Counter2 es habilitada. La interrupción independiente es ejecutada si ocurre una comparación en el Timer/Counter2 por ejemplo cuando los bits del OCF2B están en uno en el Registro de las Banderas de Interrupción del Timer/Counter2 (TIFR2). • Bit 1 – OCIE2A: Habilitación de Interrupciones del Punto de Comparación A del Timer/Counter2 Cuando el bit OCIE2A es escrito a uno y el bit I en el registro de estado está en uno, la interrupción del Punto de comparación del Timer/Counter2 es habilitada. La interrupción independiente es ejecutada si ocurre una comparación en el Timer/Counter2 por ejemplo cuando los bits del OCF2A están en uno en el Registro de las Banderas de Interrupción del Timer/Counter2 (TIFR2). • Bit 0 – TOIE2: Habilitación de Interrupciones para el Desbordamiento del Timer/Counter2 Cuando el bit TOIE2 es puesto en uno y el bit I del Registro de estado está en uno, la interrupción para el desbordamiento del Timer/Counter2 es habilitada. La interrupción correspondiente es ejecutada si un desbordamiento en el Timer/Counter2 ocurre, por ejemplo cuando el bit TOV2 está es uno en el Registro de las Banderas de Interrupción del Timer/Counter2 (TIFR2) 16.11.8 TIFR2 – Registro de Bandera de Interrupción del Timer/Counter2

• Bit 2 – OCF2B: Bandera Comparación de salida 2 B El bit OCF2B es puesto en uno cuando ocurre una comparación entre el Timer/Counter2 y el dato en el Registro Comparador de Salida OCF2B. El bit OCF2B es limpiado por hardware cuando se ejecuta el correspondiente vector de interrupción. Alternativamente, OCF2B es limpiado al escribir un uno lógico en la bandera. Cuando el bit I en el SREG, el OCIE2B (Habilitación de Interrupción del Timer/Counter2) y el OCRB2B están en uno, se ejecuta la Interrupción del Timer/Counter2. • Bit 1 – OCF2A: Bandera de Comparación de Salida 2 A El bit OCF2A es puesto en uno cuando ocurre una comparación entre el Timer/Counter2 y el dato en el Registro Comparador de Salida OCF2A. El bit OCF2A es limpiado por hardware cuando se ejecuta el correspondiente vector de interrupción. Alternativamente, OCF2A es limpiado al escribir un uno lógico en la bandera. Cuando el bit I en el SREG, el OCIE2A (Habilitación de Interrupción del Timer/Counter2) y el OCRB2A están en uno, se ejecuta la Interrupción del Timer/Counter2.

Page 100: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 0 – TOV2: Bandera de Desbordamiento del Timer/Counter2 El bit TOV2 se pone a uno cuando ocurre un desbordamiento en el Timer/Counter2. El bit TOV2 es limpiado por hardware cuando se ejecuta la interrupción del vector correspondiente. Alternativamente, el TOV2 es limpiado escribiendo un uno lógico en la bandera. Cuando el bit I del SREG, el TOIE2A (Habilitación de Interrupción por desbordamiento del Timer/Counter2) y el TOV2 están en uno, las Interrupciones por desbordamiento del Timer/Counter2 son ejecutadas. En Modo PWM, este bit es puesto en uno cuando cuenta cambios el Timer/Counter2 cuenta los cambios en la localidad 0x00. 16.11.9 GTCCR – Registro General de Control del Timer/Counter

• Bit 7 - TSM: Modo de Sincronización del Timer/Counter Escribiendo un uno en el TSM, se activa el modo de sincronización del Timer/Counter. En este modo, el valor que es escrito en los bits PSRASY y PSRSYNC son guardados, por lo tanto guarda el prescalador correspondiente. Esto asegura que el Timer/Counter correspondiente son interrumpidos y pueden ser configurados para el mismo valor sin el riesgo de que uno de ellos avance durante la configuración. Cuando el bit TSM es puesto a cero, los bits PCRASY y PSRSYNC son limpiados por hardware, y el Timer/Counter comienza a contar simultáneamente. • Bit 1 – PSRASY: Reseteo del Prescaler del Timer/Counter2 Cuando este bit está en uno, el prescalador del Timer/Counter será reseteado. Este bit es inmediatamente limpiado por hardware. Si el bit es escrito cuando el Timer/Counter se encuentra operando en modo asincrónico, este bit permanecerá en uno hasta que el prescalador sea reseteado. Este bit no será limpiado por hardware si el bit TSM es uno. • Bit 0 - PSRSYNC: Reseteo del Prescaler Cuando este bit está en uno, el prescalador del Timer/Counter1 y el Timer/Counter0 será reseteado. Este bit es inmediatamente limpiado por hardware excepto si el bit TSM está en uno. Note que el Timer/Counter1 y el Timer/Counter0 accionan el mismo prescalador y el reseteo de este prescalador no afecta a ambos timers. 17. SPI – Periféricos de Interfase Serial 17.1 Especificaciones: • Transferencia de Datos sincrona tres-cables, bidireccional • Operación Maestro-Esclavo • Transferencia de Datos LSB o MSB • Siete velocidades programables en los bits • Finalización de transmisión por Bandera de Interrupción • Write Collision Flag Protection • Despertar desde Modo Idle • Doble velocidad (CK/2) Modo Maestro SPI Descripción General

Page 101: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Los periféricos de Interfase serial (SPI) permiten una transferencia de datos sincrona de alta velocidad en el ATmega164P/324P/644P, periféricos de dispositivos o entre varios dispositivos AVR. USART puede ser usado en modo Maestro SPI. Diagrama de Bloques SPI

17.5 Descripción de Registros 17.5.1 SPCR –Registros de Control SPI

• Bit 7 – SPIE: Habilitación de Interrupciones SPI Estos bits causan la interrupción del SPI al ser ejecutados si el bit SPIF en el registro SPSR es uno y si las Interrupciones Globales son habilitadas con uno en el bit del SREG. • Bit 6 – SPE: Habilitación SPI Cuando el bit SPE es puesto en uno. El SPI es habilitado. Este bit seria uno para habilitar cualquier operación SPI. • Bit 5 – DORD: Orden de Datos

Page 102: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Cuando el bit DORD es escrito con uno, el LBS de la palabra de datos es transmitida primero. Cuando el DORD es escrito con cero, el MSB de la palabra de datos es transmitido primero. • Bit 4 – MSTR: Selector Maestro/Esclavo La selección del bit en el modo Maestro SPI cuando se escribe uno, y el modo esclavo SPI esta escrito con cero lógico. Si SS es configurado como una entrada y es controlada en bajo mientras MSTR es uno, MSTR será limpiada, y SPIF en SPSR llegara a ser uno. El uso tendrá uno MSTR al re-habilitar el modo Maestro SPI. . • Bit 3 – CPOL: Polaridad del reloj Cuando este bit es escrito con uno, SCK esta en alto. Cuando CPOL es escrito con cero, SCK esta en bajo. La funcionalidad CPOL esta descrita a continuación:

• Bit 2 – CPHA: Fase del Reloj The settings of the Clock Phase bit (CPHA) determine if data is sampled on the leading (first) or trailing (last) edge of SCK. Refer to Figure 17-3 and Figure 17-4 for an example. The CPOL functionality is summarized below: La configuración del bit Fase de RELOJ (CPHA) determina si el dato es tomado en el primer pulso del flanco de subida o bajada del SCK. La funcionalidad del CPOL es mostrada a continuación:

• Bits 1:0 – SPR1, SPR0: Selección de velocidad del Reloj Estos dos bits de controlan la velocidad del SCK del dispositivo configurado como Maestro. SPR1 y SPR0 no tienen efecto en el esclavo. La relación entre el SCK y la frecuencia del oscilador del reloj fosc es mostrada en la siguiente tabla: Relación entre SCK en la Frecuencia del Oscilador

SPI2X SPR1 SPR0 Frecuencia SCK

0 0 0 fosc/4

0 0 1 fosc/16

0 1 0 fosc/64

0 1 1 fosc/128

1 0 0 fosc/2

1 0 1 fosc/8

1 1 0 fosc/32

1 1 1 fosc/64

17.5.2 SPSR – Registro de Estado SPI

Page 103: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 7 – SPIF: Bandera de Interrupción SPI Cuando la transferencia serial es completada, la bandera SPIF es uno. Una interrupción es generada si SPIE en SPCR es uno y las Interrupciones Globales son Habilitadas. Si SS es una entrada y es controlada en bajo cuando esta en Modo maestro SPI. Esto también pone en uno la bandera SPIF. SPIF es limpiada por hardware cuando esta ejecutando el correspondiente vector de interrupción. Alternativamente, el bit e SPIF es limpiado primero leyendo el registro de estado SPI con SPIF en uno, luego accediendo al Registro de Datos del SPI (SPDR). • Bit 6 – WCOL: Escritura de la Bandera de Colisión El bit WCOL es uno si el Registro de Datos del SPI (SPDR) es escrito durante la transferencia. El bit WCOL (y el bit SPIF) son limpiados primero en la lectura del registro de estado del SPI con WCOL en uno, y luego accediendo el registro de datos del SPI. • Bit 5:1 – Res: Bits Reservados Estos bits son reservados en el ATmega164P/324P/644P y siempre serán leídos como cero. • Bit 0 – SPI2X: Bit para Doble velocidad SPI Cuando este bit es escrito con uno lógico la velocidad del SPI (Frecuencia SCK) será duplicada cuando el SPI este en Modo Maestro. Esto significa que el periodo mínimo del SCK seria de dos periodos de reloj de la CPU. Cuando el SPI es configurado como esclavo, el SPI esta solo garantizado para trabajar con fosc/4. La interfase SPI en el ATmega164P/324P/644P es también usada para memoria programable y carga o descarga de la EEPROM. 17.5.3 SPDR – Registro de Datos SPI

El Registro de Datos SPI leído/escrito es usado para transferencia de datos entre el Registro Archivo y el Registro de Cambio del SPI. Escribiendo en el registro inicializa la transmisión de datos. Leyendo el registro causa cambios al registro al recibir la lectura. 18. USART 18.1 Descripción • Operación simultánea bidireccional (Independiente Recepción Serial y Registros de Transmisión. • Operación Asíncrona o Síncrona • Reloj Maestro o Esclavo Operación Síncrona. • Generador Proporcional Alta Resolución en Baudios • Supports Serial Frames with 5, 6, 7, 8, or 9 Data Bits and 1 or 2 Stop Bits • Odd or Even Parity Generation and Parity Check Supported by Hardware • Data OverRun Detection • Framing Error Detection • Noise Filtering Includes False Start Bit Detection and Digital Low Pass Filter

Page 104: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Three Separate Interrupts on TX Complete, TX Data Register Empty and RX Complete • Modo de Comunicación Multi-Proceso • Modo de Doble Velocidad Asíncrona de Comunicación 18.2 USART1 y USART0 El ATmega164P/324P/644P tiene dos USART’s, USART0 y USART1. La funcionalidad para todos los USART’s es descrito a continuación, la mayoría de registros y bits de referencia en esta sección son escritas en forma general. La letra minúscula “n” reemplaza el número USART. Diagrama de Bloques USART

18.4 Generación del Reloj La Generación lógica de reloj genera la base de reloj para la Transmisión y Recepción. El USARTn soporta cuatro modos de operación de reloj: Asincrónico Normal, Doble velocidad Asincrónica, Maestro Sincrónico y Modo esclavo Sincrónico. El bit UMSELn en USART Control de Registro de Estado C (UCSRnC) selecciona entre operación Asincrónica y Sincrónica. Doble velocidad (solo modo asíncrono) es controlada por el U2Xn encontrado en el registro UCSRnA. Cuando se usa modo síncrono (UMSELn = 1), el Registro de Dirección de Datos para el pin XCKn (DDR_XCKn) controlan si la fuente de reloj es interna (modo Maestro) o externa (modo esclavo). El pin XCKn es solo activado cuando se usa modo Síncrono. Diagrama de Bloques, Generación Lógica de Reloj

Page 105: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Descripción de la Señal: txclk Reloj de Transmisión (Señal Interna). rxclk Reloj Receptor (Señal Interna). xcki Entrada desde el pin XCK (Señal Interna). Usada para operación Esclavo sincrónica. xcko Salida desde el pin XCK (Señal Interna). Usada para operación Maestro sincrónica. fOSC Frecuencia del pin XTAL (Sistema de Reloj). 18.4.1 Generación del Reloj Interno- Generador de Velocidad de transmisión en Baudios Generación Interna de Reloj es usada por los modos de operación Maestro síncrono. La USART Registro de Velocidad de Baudios (UBRRn) y el contador-Bajo conectados a esta función como prescalador programable del registro de velocidad de Baudios. El contador-bajo, corriendo como sistema de reloj (fosc), es cargado con el valor UBRRn cada vez que el contador ha contado descendente hasta cero o cuando el Registro UBRRln es escrito. El reloj es generado cada vez que el contador se hace cero. Este reloj es el generador de velocidad de transmisión en Baudios a la salida (= fosc/(UBRRn+1)). La transmisión divide el generador de velocidad de transmisión en Baudios a la salida por 2, 8 o 16 dependiendo del modo. El generador de velocidad de transmisión en Baudios a la salida es usada directamente por el reloj receptor y las unidades de recuperación de datos. Sin embargo, la recuperación unitaria usa la (state machine) que usa 2, 8 o 16 dependiendo del modo uno por la condición del los bits UMSELn, U2Xn yDDR_XCKn. Ecuaciones para calcular la velocidad en baudios

Page 106: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

18.4.2 Doble Velocidad de Operación (U2Xn) La proporción transferida puede ser duplicada por la configuración del bit U2Xn en UCSRnA. Configurando solo este bit tiene efecto para la operación asíncrona. Poner este bit a cero cuando se usa una operación síncrona. Configurando este bit reduciría la división de la proporción de baudios dividida para 16 a 8, efectivamente doblando la proporción de transferencia para comunicación asíncrona. Note sin embargo que al Receptar en este caso solo se usa la mitad de números de ejemplo (Reducido desde 16 a 8 ) para datos de ejemplo y tiempo de recuperación, y además a mas exactas proporciones en baudios y sistemas de reloj son requeridas cuando este modo es usado. Para la Transmisión no hay downsides. 18.4.3 Reloj externo El reloj externo es usado para el modo de operación Esclavo síncrono. La entrada de Reloj Externo desde el pin CCKn es mostrada por la sincronización del registro para minimizar la oportunidad de una mayor estabilidad. La salida desde el la sincronización del registro es minimizada al perder la oportunidad. La salida desde el registro sincronizado pasa luego a través del detector de flanco antes que pueda ser usada para la Transmisión y Recepción. Este proceso introduce dos periodos de reloj del CPU demorados y por consiguiente la máxima frecuencia de reloj externo XCKn es limitada por la siguiente ecuación:

Page 107: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Note que la fosc depende de la estabilidad de la fuente del sistema de reloj. Esto es recomendado al agregar más flancos para evitar posibles pérdidas de datos en las variaciones de frecuencia. 18.4.4 Operación de Reloj Síncrona Cuando el modo síncrono es usado (UMSELn = 1), el pin XCKn seria usado como entrada de reloj (Esclavo) o Salida de reloj (Maestro). La dependencia entre el flanco del reloj y los datos muestreados o datos cambiados es lo mismo. El principio básico es que la entrada de datos (en RxDn) es muestreada a la oposición del flanco del reloj XCKn del flanco de la salida (TxDn) es oportuno.

El bit UCPOLn en UCRSC selecciona cual flanco de reloj XCKn es usada para probar los datos y para cambiar los datos. Cuando UCPOLn es cero los datos serán cambiados al flanco de subida XCKn y probados en el flanco de bajada XCKn y probados en el flanco de subida XCKn. 18.5 Formato de Trama La Trama serial es definida para ser una característica de bits de datos con sincronización de bits (Bits que enmiendan y terminan), y opcionalmente la paridad del bit para chequear errores. USART acepta en total 30 combinaciones de los siguientes formatos de trama: • 1bit empieza • 5, 6, 7, 8 o 9 bits de datos • bit de paridad impar • 1 o 2 bits de parade La trama comienza con el bit de comienzo, seguido por el bit de dato menos significativo. Luego el siguiente bit de dato, sube a un total de nueve, teniendo éxito, finalizando con el bit más significante. Si es habilitado, la paridad del bit es insertada después de los bits de datos, antes de los bits de parada. Cuando una trama es completada es transferida, esta puede ser direccionada seguida por la nueva trama, o la línea de comunicación puede ser un estado en alto. Formatos de Tramas

Page 108: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El formato de la trama usado por la USART es uno por el USCZn2:0, UPMn1:0 y los bits USBSn en UCSRnB y UCSRnC. La Recepción y transmisión usa la misma configuración. Note que cambiando la configuración de cualquiera de estos bits puede dañar la comunicación tanto de recepción como de Transmisión. El tamaño de los caracteres de los bits de USART (UCSZn2:0) seleccionan el número de bits de datos en la trama. Los bits del modo paridad de la USART (UPMn1:0) habilita y pone el tipo de paridad del bit. La selección entre uno o dos bits de parada es hecha por el bit de paro de la USART seleccionando el bit (USBSn). La Recepción ignora la segunda parada del bit. FE (Error de trama) será solo detectada en los casos cuando el primer bit de parada es cero. 18.5.1 Cálculo del bit de Paridad El bit de paridad es calculado utilizando una or-exclusiva en todos los bits de datos. Si la paridad impar es usada, el resultado de la or exclusiva es invertido. La relación entre el bit de paridad y los bits de datos es el siguiente:

Peven Bit de paridad usando el nivel de paridad Podd Bit de paridad usando paridad impar Dn bit de datos en el carácter n Si son usados, el bit de paridad es localizado entre el último bit de datos y el primer bit de parada de la trama serial. 18.6 Inicialización del USART La USART tiene que ser inicializada antes de que cualquier comunicación pueda tener lugar. El proceso de inicialización normalmente consiste de configuraciones del tiempo en baudios, el formato de configuración de la trama y habilitación de la Transmisición o la Recepción dependende del uso. Para manejar la operación de interrupción USART, la Bandera de Interrupciones Globales debería ser puesta en cero y las interrupciones USART deberían ser deshabilitadas. Antes de hacer la re inicialización con el tiempo en baudios cambiado o el formato de trama, seria seguro que no hay transmisión durante el periodo en el que los registros son cambiados. La Bandera TXCn puede ser usada para chequear que transmisión ha sido completada en todas las

Page 109: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

transferencias, y la bandera RXc puedan ser usadas para chequear que no hay lectura de datos en la recepción del buffer. Note que la bandera TXCn puede ser puesta en cero antes de cada transmisión (antes que UDRN es escrito) si esto es usado para este propósito. La siguiente USART inicializa con un código simple mostrado en asembler y en C que son equivalentes en funcionamiento. Los ejemplos asumen una operación asíncrona sin la habilitación de interrupciones y arreglando el formato de trama. La velocidad en baudios es dada como parámetro de función. Para el código asembler, el parámetro de velocidad en baudios es asumido para ser guardado en los registros r17:r16. 18.7 Transmisión de Datos – La transmisión USART La transmisión del USART es habilitada por la configuración de habilitación del bit de transmisión (TXEN) usada en el registro UCSRnB. Cuando la transmisión es habilitada, la normal operación del pórtico del pin TxDn es sobrepuesto por el USART y dada la función como la Transmisión de salida serial. La velocidad en Baudios, modo de operación y formato de trama seria instalada una vez ante de cualquier transmisión. Si la operación síncrona es usada, el reloj en el pin XCKn seria sobrepuesto y usado como reloj de transmisión. 18.7.1 Enviando Tramas con 5 hasta 10 Bits de datos La transmisión de datos es inicializada por la carga del buffer de transmisión con el dato a ser transferido. La CPU puede cargar el buffer de transmisión por la escritura en la localidad de E/S UDRn. El buffer de datos en la transmisión seria movido al Register cuando es leído y enviado una nueva trama. El registro movido es cargado con el nuevo dato si este no envía la transmisión o inmediatamente después del último bit de parada de la trama previa es transmitida. Cuando el registro movido, es cargado con un nuevo dato, esto transferiría una trama completa a la velocidad dada por el registro de baudios, bit U2Xn o XCKn dependiendo del modo de operación. 18.7.2 Envió de Tramas con 9 bits de datos Si son usados 9-bits (UCSZn = 7), el noveno bit seria escrito en el bit TXB8 en UCSRnB antes de que el byte en bajo del carácter es escrito a UDRn. El siguiente código muestra la función de transmisión a 9 bits. Para el código asembler, el dato a ser enviado es asumido al ser guardado en los registros R17:R16. El noveno bit puede ser usado para indicar la dirección de la trama usando un multi procesador en modo de comunicación o por otro protocolo del manual como para el ejemplo de sincronización. 18.7.3 Banderas de Transmisión e Interrupciones. La transmisión USART tiene dos banderas que indican estos estados: USART Registro de Datos vacío (UDREn) y Transmisión completa (TXCn) Ambas banderas pueden ser usadas para la generación de interrupciones. La bandera del Registro de Datos Vacío (UDREn) indica si la transmisión del buffer ha leído o recibido un nuevo dato. Este bit es uno cuando la transmisión del dato es vacía, y cero cuando la transmisión del buffer contiene datos a ser transmitidos que todavía no han sido movidos en el registro Shift. Para compatibilidad con futuros dispositivos, siempre escribir este bit con cero cuando escribimos en el registro UCSRnA. Cuando en el Registro de Interrupción de Datos Vacío es habilitado en el bit (UDRIEn) en UCSRnB con uno, el USART Registro de Interrupción de Datos Vacío seria ejecutado como UDREn con uno (las interrupciones globales tienen que ser habilitadas). UDREn es limpiada por la escritura UDRn. Cuando en el dato de interrupción es manejada la transmisión es usada, la rutina del registro de datos de Interrupción vacío seria escrito con un nuevo dato a UDRn

Page 110: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

solamente al limpiar UDREn o deshabilitar el registro de datos de interrupción vacía, por consiguiente la nueva interrupción ocurriría una vez que la rutina de interrupción ha terminado. El bit de la bandera de transmisión completa (TXCn) es uno cuando la trama entera en la transmisión del registro Shift ha sido movida fuera y no hay un nuevo dato actualmente presente en el buffer de transmisión. El bit de la bandera TXCn es automáticamente limpiada cuando se completa la transmisión y la interrupción es ejecutada, o puede ser limpiado escribiendo uno en este bit. La bandera TXCn es usada en la interfase de comunicación half-duplex (RS-485 estándar), donde en una aplicación entrando en el modo de recepción y libre el bus de comunicación inmediatamente después de completar la transmisión. Cuando la transmisión es completada la interrupción es usada, la rutina de interrupción del manual no debe tener cero en la bandera TXCn, esto es hecho automáticamente cuando la interrupción es ejecutada. 18.7.4 Generador de Paridad El generador de paridad calcula el bit de paridad para la trama de datos seriales. Cuando el bit de paridad es habilitado (UPMn1 = 1), el control lógico de transmisión inserta el bit de paridad entre el último bit de dato y el primer bit de paro de la trama que es enviada. 18.7.5 Deshabilitando la Transmisión La desabilitación de la transmisión (configurando el TXEN cero) no llegará hacer efectivo hasta que las transmisiones pendientes sean completadas, cuando la transmisión del Registro de Desplazamiento y la transmisión del Buffer Register no contenga los datos ha ser transmitidos. Cuando deshabilitamos, la transmisión no es excedida en el pin TxDn. 18.8 Recepción de Datos – El receptor USART El receptor USART es habilitado por la escritura en e el bit de habilitación de recepción (RXENn) y el registro UCSRnB a uno. Cuando la Recepción es habilitada, la normal operación del pin del RxDn es sobrepasada por el USART y dada la función como entrada serial de Recepción. La velocidad en baudios, modo de operación y formato de trama seria instalada una vez antes de cualquier recepción serial que pueda haber sido hecha. Si la operación sincrona es usada, el reloj en el pin XCKn seria usado como reloj de transferencia. 18.8.1 Recibiendo Tramas de 5 a 8 bits de datos La recepción de datos comienza cuando esto detecta un bit valido de inicio. Cada bit que sigue el bit de inicio será probado a la velocidad en baudios o reloj XCKn, y mostrado dentro de la recepción del Registro de Deslazamiento hasta que el primer bit de parada de la trama es recibido. Un segundo bit de parada será ignorado por la recepción. Cuando el primer bit de parada es recibido, una trama seria completa es presentada en la Recepción del Registro de Desplazamiento, el contenido de estos registros del Registro de Desplazamiento será movida en el buffer de recepción. El buffer de recepción puede luego ser leído por la lectura de la localidad del UDRn E/S. 18.8.2 Recibiendo Tramas con 9 bits de datos Si los 9-bits son usados (UCSZn=7) el noveno bit seria leído desde el bit RXB8n en UCSRnB antes leyendo el bit en bajo desde el UDRn. Esta regla aplica muy bien a las banderas de estado FEn, DORn y UPEn. Leer el estado desde UCSRnA, luego el dato desde UDRn. Leyendo las localidades de E/S de UDRn cambiará el estado del buffer de recepción FIFO y consecuentemente los bits TXB8n, FEn, DORn y UPEn, con lo cual son almacenados en el FIFO, para futuros cambios.

Page 111: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

18.8.3 Bandera de Recepción Completa e Interrupción La recepción del USART tiene una bandera que indica el estado de Recepción. La Bandera de Recepción Completa (RXCn) indica si hay una lectura de datos presente en el buffer de transmisión. Esta bandera es uno cuando el dato leído existe en la recepción del buffer, y cero cuando la recepción del buffer seria vaciado y consecuentemente el bit RXCn llegaría hacer cero. Cuando la recepción completa habilita la interrupción (RXCIEn) en UCSRnB es uno, el USART recepta la interrupción completa sería ejecutada al tiempo que la bandera RXCn es uno (Las interrupciones globales son habilitadas). Cuando el manejo de la interrupción de datos habilitada es usado, la rutina de completa recepción leería el dato receptado desde UDRn a medida que pone en cero la bandera RXCn, por otra parte una nueva interrupción ocurriría una vez que la rutina de interrupción termina. 18.8.4 Recepción de Banderas de Error La recepción USART tiene tres bandera de error: Error de Trama (FEn), desbordamiento de datos (DORn) y error de paridad (UPEn). Todas pueden ser accesibles por la lectura del UCSRnA. Comúnmente para la bandera de error es que hay localidades en el buffer de recepción junto con la trama para cualquiera de ellos indica el estado de error. Debido al buffer de la bandera de error, el UCSRnA seria leído antes que el buffer de recepción (UDRn), desde la lectura de las localidades de E/S UDRn cambia la localización de la lectura del buffer. Otra igualdad para el error de bandera es que ellos no serian alterados por software haciendo una escritura en la localidad de la bandera. Sin embargo, todas las banderas serian puestas a cero cuando la UCSRnA es escrita hacia arriba para compatibilidad de futuras implementaciones USART. Ninguna de las banderas de error puede generar interrupciones. La Bandera de Trama de Error (FEn) indica el estado del primer bit de parada de la siguiente lectura de la trama almacenada en el buffer de recepción. La bandera FEn es cero cuando el bit de parada fue incorrecto (cero). Esta bandera puede ser usada para detectar condiciones de falta de sincronización, detectando condiciones de ruptura y protocolos del manual. La Bandera FEn no es afectada por la configuración del bit USBSn en UCSRnC desde la recepción ignora todo, excepto para el primer, bit de parada. Para compatibilidad con futuros dispositivos, siempre poner este bit a cero cuando escribimos a UCSRnA. La bandera de desbordamiento de datos (DORn) indica la perdida de datos debida a la condición de buffer lleno. El desbordamiento de datos ocurre cuando la recepción del buffer esta llena (dos caracteres), esto es un nuevo carácter esperando la recepción del Registro de Desplazamiento, y un nuevo bit de comienzo es detectado. Si la Bandera DORn es puesta fue uno o mas tramas seriales pérdidas entre la ultima trama leída desde UDRn, y la siguiente trama leída desde UDRn. Para compatibilidad con futuros dispositivos, siempre escribir este bit a cero cuando la lectura cuando se escribe en el UCSRnA. La bandera (UPEn) indica que la siguiente trama en el buffer de recepción fue exitosamente movida des de el Registro de Desplazamiento en el buffer de recepción. La bandera de Error de Paridad indica que la siguiente trama en el buffer de recepción tiene un error de paridad cuando recepta. Si el chequeo de paridad no es habilitado el bit UPEn siempre será leído cero. Para compatibilidad con futuros dispositivos, siempre poner este bit a cero cuando se escribe a UCSRnA. 18.8.5 Comprobador de Paridad El comprobador de paridad es activado cuando el bit de modo de paridad en alto USART es uno. El comprobador de tipo de paridad a ser realizado (impar) es seleccionado por el bit UPMn0.

Page 112: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Cuando habilitamos, el comprobador de paridad calculamos la paridad de los bits de datos en tramas entrantes y compara el resultado con el bit de paridad desde la trama serial. El resultado de la comprobación es almacenado en el buffer de recepción ambos con la recepción de datos y bits de parada. La bandera de error de paridad puede luego ser leída por software para comprobar si la trama tiene un error de paridad. El bit UPEn es puesto si el siguiente caracter que puede ser leído desde el buffer de recepción tendiendo un error de paridad cuando recepta y el comprobador de paridad fue habilitado en el punto (UPMn1 = 1). Este bit es válido hasta que el buffer de recepción (UDRn) es leído 18.8.6 Deshabilitando el Receptor En contraste al transmisor, la desabilitación del Receptor seria inmediata. . Los Datos desde la recepción serian perdidos. Cuando de deshabilita (el RXENn es puesto a cero) la recepción en un desbordamiento no tan largo la función normal del pórtico del pin RxDn. El buffer de Recepción FIFO seria vaciado la recepción es deshabilitada. Permaneciendo el Dato en el buffer sería perdido. 18.8.7 Vaciando el Buffer Receptor El buffer de recepción FIFO seria vaciado cuando la Recepción es deshabilitada, el buffer seria vaciado de este contenido. El dato no leído sería perdido. Si el buffer tiene que ser vaciado durante la operación normal. Debido a un instante o condición de error, leer la localidad de E/S UDRn hasta que la Bandera RXCn sea limpiada. 18.9 Recepción de Datos Asincrónica El USART incluye un reloj de recuperación y una unidad recuperadora de datos para el manual recepción de datos asincrónico. El reloj de recuperación lógico es usado para sincronizar la velocidad interna en baudios del reloj en la trama asincrónica entrante al pin RxDn. La recuperación de datos lógica muestra y un filtro pasa bajos cada vez que entra un bit, mejorando la inmunidad al ruido por el receptor. En la recepción asíncrona el rango de operación depende de la exactitud del reloj interno de la velocidad de transmisión en baudios, la proporción de los flancos entrantes, y el flanco se clasifican según el tamaño del número de bits. 18.9.1 Recuperación del Reloj Asíncrona La recuperación lógica del reloj sincroniza el reloj interno en el interior de la trama serial. La velocidad muestra 16 veces la velocidad de transmisión en baudios para el modo Normal, y ocho veces la velocidad de transmisión en baudios para el modo de doble Velocidad. Las flechas horizontales ilustran la variación de la sincronización debido al proceso mostrado. Note que la variación de tiempo es más larga cuando se utiliza el modo de doble velocidad (U2Xn = 1) de operación.

Cuando la recuperación lógica del reloj detecta un alto (idle) o un bajo (Start) la transición en la línea RxDn, el bit de comienzo detecta que una secuencia es inicializada. La recuperación lógica del reloj luego usa muestras de 8, 9, y 19 para modo Normal, y muestras de 4, 5, y 6 para modo de doble velocidad (indicando como muestras los números dentro del cuadro de la figura), para decidir si un bit de de comienzo es receptado. Si dos o más de estas tres muestras tienen un alto

Page 113: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

nivel lógico (la mayoría gana), el bit de inicio es válido como pico de ruido y la búsqueda para el inicio de la recepción para siguiente transición en alto o en bajo. Sin embargo, el bit de inicio válido es detectado, la recuperación lógica de reloj es sincronizada y la recuperación del dato puede comenzar. El proceso de sincronización es repetido para cada bit de inicio. 18.9.2 Recuperación de datos Asincrónica Cuando el reloj de recepción es sincronizado al bit de inicio, la recuperación del dato puede comenzar. La unidad recuperadora de datos usa estados de máquina para cada bit en modo Normal y ocho estados para cada bit en Modo de Doble Velocidad. Cada una de las muestras es dada un número que es igual al estado de la unidad de recuperación.

La decisión del nivel lógico de la recepción de bits es tomada haciendo una votación mayoritaria de los valores lógicos de las tres muestras en el centro de bits recibidos. Las muestras centrales son enfatizadas en la figura teniendo el número de muestras en el cuadro. La mayoría de proceso votados es hecha como sigue: Si dos o todos lo ejemplos tienen niveles bajos, el bit de recepción es registrado con 0 lógico. Esto la mayoría de procesos como filtros pasa bajos completa la trama y es receptada. Incluyendo el primer bit de parada. Note que la recepción solo usa el primer bit de parada de la trama. Muestra del bit de parada y el siguiente bit muestreado

El mismo voto mayoritario es hecho al bit de de parada para el otro bit en la trama. Si el bit de parada es registrado para tener un valor lógico de 0, la bandera de error de trama (FEn) seria puesta. La nueva transición en alto o bajo indican el bit de inicio de la nueva trama puede llegar a la derecha después del último de los bits usados por la mayoría. Para el modo Normal de velocidad, el primer nivel bajo mostrado puede ser el punto de comparación A. Para modo de doble velocidad el primer nivel bajo seria deliberado a las marcas (B, (C) al bit de parada de amplia longitud. La detección temprana del bit de inicio influencia el rango de operación de la Recepción. 18.9.3 Rango de Operación Asincrónica El rango de operación asincrónica de la Recepción es dependiente en la desigualdad entre la velocidad del bit de recepción y la generación de la velocidad interna en baudios. Si la transmisión esta enviando tramas a velocidades rápidas o lentas, o la generación interna de velocidad en baudios del receptor no tiene una base de frecuencia similar, la recepción no estaría de acuerdo a la trama de sincronización del bit de inicio.

Page 114: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Las siguientes ecuaciones pueden ser usadas para calcular el radio de la velocidad de entrada de datos y la velocidad de recepción interna.

D Suma de tamaño de caracteres y tamaño de paridad (D = 5 a 10 bit) S Muestras por bit. S = 16 para modo de operación normal y S = 8 para modo de doble velocidad SF Primera numero de muestras usado para majority voting de. SF = 8 para velocidad normal y SF = 4 para modo de Doble velocidad. SM Mitad del número de muestras usadas para majority voting . SM = 9 para velocidad normal SM = 5 para modo de Doble velocidad. Rslow es el radio de la entrada de datos más lenta que puede ser aceptada en relación a la velocidad de baudios receptada. Rfast es el radio de la entrada de datos más rápida que puede ser aceptada en relación a la velocidad de baudios receptada. Recommended Maximum Receiver Baud Rate Error for Normal Speed Mode (U2Xn = 0)

Recommended Maximum Receiver Baud Rate Error for Double Speed Mode (U2Xn = 1)

La recomendación de la máxima recepción del error de velocidad en baudios fue hecha debajo de la asunción que la recepción y la transmisión igualmente divide el error máximo total. Hay dos fuentes de posibilidad para la recepción del error de velocidad en baudios. El sistema de reloj de recepción (XTAL) siempre tiene menor estabilidad que el rango de la fuente de suministro y el rango de temperatura- Cuando se usa un cristal para general el sistema de reloj, esto raramente es un problema, pero para el resonador el sistema de reloj puede diferir más que el 2% dependiendo

Page 115: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

de la tolerancia del resonador. La segunda fuente para el error es más controlable. La velocidad generada en baudios no puede siempre hacerse con una división exacta del sistema de frecuencia para obtener la velocidad en baudios deseada. En este caso el valor de UBRR en un error aceptable y puede usarse si es posible. 18.10 Modo de Comunicación Multi-Proceso Configurando el Modo de Comunicación de Multi-proceso el bit (MPCMn) en UCSRnA habilita la función filtro de trama de entrada receptada por el USART. La trama que hace no contiene información de direcciones que serían ignoradas y no puestas dentro del buffer de recepción. Esto efectivamente reduce el número de tramas de entrada que están en el manual por el CPU, en un sistema con múltiples MCUs que comunican vía el mismo bus serial. La transmisión no es afectada por la configuración por la configuración MPCMn, pero tiene que ser usada diferentemente, pero tiene que ser usada diferentemente cuando esto es una parte del sistema utilizando el modo de comunicación Multi-proceso. Si el receptor es preparado para la recepción de tramas que contiene de 5 a8 bits de datos, luego el primer bit de parada indica si la trama contiene información de datos o direcciones. Si el registro es puesto por tramas con nueve bits de datos, luego el noveno bit (RXB8n) es usado para identificar direcciones y tramas de datos. Cuando el tipo de bit de trama (la primera parada o el noveno bit) es uno, la trama contiene una dirección. Cuando bit de tipo de trama es cero la trama es de datos. El modo de comunicación multi-proceso habilita varios esclavos MCUs a receptar datos desde el MCU maestro. Esto es hecho primero decodificando una trama de dirección para encontrar la salida con la cual MCU ha sido diseccionado. Si particularmente el esclavo MCU ha sido diseccionado, este receptará la siguiente trama de datos como normal, mientras el otro esclavo MCUs ignorará la trama recibida hasta que otra trama de dirección es recibida. 18.11 Descripción de registros 18.11.1 UDRn – Registro de n Datos USART E/S

El USART Registro de transmisión de buffer de datos y USART Registro de recepción de buffer de datos proporcionan las mismas direcciones de E/S referidas como USART Registro de Datos o UDRn. El registro de transmisión de buffer de datos (TXB) seria el destino para escritura de datos situados en el registro UDRn. Leyendo la localidad del registro UDRn retornaría el contenido del registro de recepción de buffer de datos (RXB). Para 5, 6, 8 7 bits de caracteres los bits superiores no usados serian ignorados por la Transmisión y puestos en cero por la Recepción. El buffer de transmisión puede solo ser leído cuando la bandera UDREn en el registro UCSRnA es puesta. Los Datos escritos a UDRn cuando la bandera UDREn no es puesta seria ignorada por el USART cuando está transmitiendo. Cuando el dato es escrito al buffer de transmisión, y la Transmisión es habilitada, se cargaría el dato dentro del buffer de transmisión, y la transmisión es habilitada, la transmisión cargaría el dato en la transmisión del Shift Register cuando esta vacío. Luego el dato será transmitido serialmente a través del pin TXDn. El buffer de recepción consiste de dos niveles FIFO. El FIFO. Cambiara su estado sin importar si el buffer de recepción es accedido. Debido a su comportamiento el buffer recibido, no usa las instrucciones modificables de lectura- escritura de instrucciones (SBI y CBI) en esta localidad.

Page 116: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Tenga cuidado cuando con el uso de estos bits (SBIC y SBIS), hasta que esto también cambie el estado del FIFO. 18.11.2 UCSRnA – Registro de Control y Estado A del USART

• Bit 7 – RXCn: Recepción Completa del USART Este bit de bandera es habilitado cuando no hay lectura de datos en el buffer de recepción y es limpiado cuando el buffer de recepción esta vació (por ejemplo, no contiene cualquier dato que no ha sido leído). Si la recepción es deshabilitada, el buffer de recepción será vaciado y consecuentente el bit RXCn llegará a ser cero. La bandera RXCn pude ser usada para generar una interrupción completa de interrupción (ver la descripción del bit RXCIEn) • Bit 6 – TXCn: Transmisión Completa del USART Este bit de bandera es habilitado cuando los bits de la trama en el registro de desplazamiento de transmisión han sido desplazados y no hay concurrencia de nuevos datos en el buffer transmisor (UDRn). El bit de la bandera TXCn es automáticamente limpiado cuando una interrupción en una transmisión completa es ejecutada., o esto puede ser limpiado por la escritura de uno en la localidad de este bit. La bandera TXCn puede generar una interrupción en una transmisión completa. • Bit 5 – UDREn: Vaciado del Registro de datos del USART La bandera UDREn indica si el buffer transmisor (UDRn) esta listo para recibir un nuevo dato. Si el bit UDREn es uno, el buffer esta vació y además listo para ser escrito. La bandera UDREn puede generar una interrupción de vacío en el registro de datos. El UDREn es habilitado después de indicar que la transmisión esta lista. • Bit 4 – FEn: Error en la Trama Este bit es habilitado si el caracter siguiente en el buffer de recepción tiene un error en la trama cuando esta receptando. Por ejemplo, cuando el bit de parada del carácter siguiente en el buffer de recepción es cero. Este bit es válido hasta que el buffer de recepción es leído. El bit FEn es cero cuando el bit de parada del dato de recepción es uno. Siempre habilitar este bit a cero cuando se escribe en UCSRnA. • Bit 3 – DORn: Desbordamiento de Datos Este bit es habilitado si una condición de desbordamiento es detectada. Un desbordamiento de datos ocurre cuando el buffer de recepción esta lleno (dos caracteres), esto es un nuevo carácter esperando en el registro de despeamiento en la recepción, y un nuevo bit de inicio es detectado. Este bit es valido hasta que el buffer de recepción es leído. Siempre habilitar este bit a cero cuando se escribe en UCSRnA. • Bit 2 – UPEn: Error de paridad en el USART Este bit es habilitado si el caracter siguiente en el buffer de recepción tiene un error de paridad cuando recibe y el chequeo de paridad fue habilitado en ese punto (UPMn1=1). Este bit es valido hasta que el buffer de recepción es leído. Siempre habilitar este bit a cero cuando se escribe en UCSRnA

Page 117: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 1 – U2Xn: Doble Velocidad de Transmisión del USART Este bit solo tiene efecto para una operación asincrónica. Escribir este bit a cero cuando usa operación asincrónica. Escribiendo uno en este bit la velocidad en baudios es dividida desde 16 a 8 efectivamente duplicando la velocidad de transferencia para comunicación asincrónica. • Bit 0 – MPCMn: Modo de comunicación Multi-proceso Este bit habilita el bit de modo de comunicación multi-proceso. Cuando el bit MPCMn es escrito a uno, todas las tramas son recibidas en el USART que no contiene información de la dirección a ser ignorada. La transmisión no es afectada por la configuración del MPCMn. 18.11.3 UCSRnB – Registro de Control y Estado n B del USART

• Bit 7 – RXCIEn: Habilitación de la Interrupción de la Recepción completa Escribiendo este bit a uno habilita la interrupción en la bandera RXCn. La interrupción cuando se completa la recepción sería generada solo si el bit TXCIEN es escrito con uno, La Bandera Global de Interrupciones en SREG es escrita a uno y el bit RXCn en UCSRnA es habilitada. • Bit 6 – TXCIEn: TX Complete Interrupt Enable n Escribiendo este bit a uno habilita la interrupción en la bandera TXCn. La interrupción en el USART al completar la transmisión seria generada solo si el bit TXCIEn es escrito con uno, la Bandera de Interrupciones Globales en SREG es escrita a uno y el bit TXCn en UCSRnA es habilitada. • Bit 5 – UDRIEn: Vaciado del Registro de Datos en el USART en la Habilitación de la n Interrupción Escribiendo este bit a uno habilita la interrupción en la bandera UDREn. El vaciado de del registro de Datos a la interrupción sería generado solo si el bit UDRIEn es escrito a uno, la bandera de Interrupciones Globales en SREG es escrita a uno y el bit UDREn en UCSRnA es habilitada. • Bit 4 – RXENn: Habilitación de la Recepción n Escribiendo los bits a uno se habilita la recepción del USART. La recepción afectaría la operación normal del pórtico para el pin RxDn cuando es habilitada. Deshabilitando la recepción vaciaría el buffer de recepción invalidando las banderas FEn, DORn y UPEn. • Bit 3 – TXENn: Habilitación de la Transmisión n Escribiendo este bit a uno se habilita la transmisión del USART. El transmisor afectaría la operación normal del pin TxDn cuando es habilitado. La desabilitación de la Transmisión (escribiendo TXENn a cero) no llegaría hacer efectiva hasta continuar y las transmisiones pendientes son completadas, por ejemplo, cuando la transmisión del registro de desplazamiento y el registro de transmisión del buffer no contienen datos a ser transmitidos. Cuando es deshabilitada, la Transmisión no afectaría el pórtico TXDn. • Bit 2 – UCSZn2: Tamaño de n Caracteres

Page 118: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Los bits UCSZn2 son combinados con los bits UCSZn1:0 en el UCSRnC habilitando el número de bits de datos en la trama usando Transmision y Recepción. • Bit 1 – RXB8n: Receptor de n Datos en 8 bits RXB8 es el noveno bit de datos de los caracteres recibidos cuando se opera con tramas seriales con el noveno bit de datos. Sería leído antes de la lectura de los bits en bajo desde el UDRn. • Bit 0 – TXB8n: Transmit Data Bit 8 n TXB8 es el noveno bit de datos en los caracteres a ser transmitidos cuando esta operando con tramas seriales con el noveno bit de datos. Debería escribirse antes de escribir un bit en bajo en UDRn. 18.11.4 UCSRnC – Registro de Control y Estado n C del USART

• Bits 7:6 – UMSELn1:0 Selección del modo USART Este bit d selección del modo de operación del USART se muestra en la siguiente tabla:

• Bits 5:4 – UPMn1:0: Modo de Paridad Estos bits habilitan y ponen el tipo de generación de paridad y chequeo. Si es habilitado, la Transmision automáticamente generan y envían la paridad de la transmisión bits de datos dentro de cada trama. La Recepción generaría un valor de paridad para los datos internos y comparan esto en la habilitación del UPMn. Si un error es detectado, la bandera UPMn en UCSRnA seria habilitada. Configuración de bits del UPMn

• Bit 3 – USBSn: Selección del bit de parada Estos bits seleccionan el número de bits de parada a ser insertados por la Transmisión. La Recepción ignora esta configuración. Configuración de bits del USBS

Page 119: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 2:1 – UCSZn1:0: Tamaño de Caracteres Los bits UCSZn1:0 combinados con el bit UCSRnB pondrán el número de bits de datos en la trama usando la Recepción y Transmisión. Configuración de bits del UCSZn

• Bit 0 – UCPOLn: Polaridad de Reloj Este bit es usado solo para modo síncrono. Escribir este bit a cero cuando el modo asíncrono es usado. Los bits UCPOLn habilitan la relación entre los datos de salida modificados y los datos de entrada muestreados y el reloj síncrono (XCKn).

18.11.5 UBRRnL y UBRRnH – Registro de Velocidad en Baudios del USART

• Bit 15:12 – Bits Reservados Estos bits son reservados para usos futuros. Para compatibilidad con futuros dispositivos, estos bits serían escritos a cero cuando UBRRH es escrito. • Bit 11:0 – UBRR11:0: Registro de velocidad en Baudios del USART Este es el bit-12 del registro el cual contiene la velocidad en baudios del USART. El UBRRH contiene los cuatro bits más significativos, y el UBRRL contiene el octavo bit menos significativo del la

Page 120: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

velocidad en Baudios del USART. Constantemente transmitiendo por el Transmisor y Receptor seria interrumpido si la velocidad en baudios es cambiada. Escribiendo UBRRL activaría inmediatamente la actualización del prescalador de la velocidad en baudios. 18.12 Ejemplos de la configuración de la Velocidad en Baudios Para cristales estándar y frecuencias resonantes la más velocidad en baudios comúnmente usada para operación asíncrona puede ser generada usando la configuración del UBRR. Los valores del UBRR con el cual el rendimiento actual de la velocidad en baudios difiere menos que el 0.5 % desde el la velocidad en baudios en blanco, están con negrilla en la tabla. Altos errores de velocidad son aceptables, pero el Receptor tendrá menos resistencia al ruido cuando el error de velocidad es alto, especificando para tramas seriales largas. Los valores de los errores son calculados usando la siguiente ecuación.

Page 121: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO
Page 122: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

19. USART en Modo SPI 19.1 ESPECIFICACIONES • Full Duplex, Tres hilos (Three-wire) para transferencia de datos Sincrónica. • Operación Maestro • Soporta cuatro modos de operación SPI (Modo 0, 1, 2, y 3) • Transferencia de datos LSB o MSB (Orden de Configuración de Datos) • Operación en cola (Doble Buffer) • Alta resolución del generador de velocidad en Baudios • Alta velocidad de operación (fXCKmax = fCK/2) • Generador de Interrupciones Flexible 19.2 Revisión General El Receptor y Transmisor serial universal sincrónico y asincrónico (USART) puede ser puesto como maestro SPI en modo dócil de operación. Configurando ambos bits a uno del UMSELn1:0 y

Page 123: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

habilitando el USART en MSPIM. En este modo de operación el control del SPI maestro toma el mando directo por encima de los recursos del USART. Estos recursos incluyen la transmisión y recepción del registro de desplazamiento y buffers, y el generador de velocidad en baudios. El generador de paridad y chequeo, el dato y la recuperación lógica del reloj, y el control lógico RX y TX son deshabilitados. El control lógico RX y TX del USART es remplazado comúnmente por el control lógico de transferencia del SPI. Sin embargo, el control lógico del pin y el generador lógico de interrupción es idéntico en ambos modos de operación. Las localidades de los registros de E/S son los mismos en ambos modos. Sin embargo, algunas de las funcionalidades del registro de control cambian cuando usan MSPIM. 19.3 Generación de Reloj Generación lógica del Reloj produce una base de reloj para la transmisión y Recepción. Para el USART modo de operación MSPIM solo la generación interna del reloj es soportada (por ejemplo operación maestro). La Dirección del Registro de Datos para el pin XCKn (DDR_XCKn) por consiguiente seria puesta a uno (como en la salida) para el USART en MSPIM a operación correcta. Preferiblemente el DDR_XCKn debería ser puesta antes de que el USART en MSPIN sea habilitado (bits TXENn y RXENn puestos en uno). La generación del reloj interno es usada en modo MSPIM esto es idéntico para el USART en modo asincrónico maestro. La velocidad en baudios configurada en UBRRn puede ser calculada usando las mismas ecuaciones:

BAUD Velocidad en baudios (en bits por segundo, bps) fOSC Frecuencia de reloj del sistema UBRRn Contenido de los registros UBRRnH y UBRRnL, (0-4095) 19.4 Modo de Datos y Tiempos SPI Existen cuatro combinaciones de XCKn (SCK) fase y polaridad con respecto a los datos seriales, los cuales son determinados por los bits de control y UCPOLn. Los diagramas de transferencia de datos son mostrados en la Figura 19-1- Los bits de Datos son desplazados y Habilitados en blancos opuestos de la señal del XCKn, asegurando el tiempo suficiente para que se estabilice la señal de datos. La funcionalidad de UCPOLn y UCPHAn se muestra en la tabla 19-2. Note que los cambio de la configuraciones en cualquiera de estos bits interrumpen la comunicación para ambos tanto Receptor como Transmisor.

Page 124: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

19.5 Formatos de Trama La trama serial para el MSPIM es definida para ser de o bits de Caracteres de datos. EL USART en modo MSPIM tiene dos formatos de tramas válidas: • 8-bits de datos con MSB primero. • 8-bit de datos con LSB primero. La trama comienza con el dato del bit más o menos significante. Luego los bits del siguiente dato, suben a un total de ocho, esto sucede, enviando con el bit más o menos significante. Cuando una trama completa es transmitida, una nueva trama puede directamente seguir, o la línea a de comunicación puede ser puesta en alto (idle). El bit UDORDn en UCSRnC pone el formato de trama usada por la USART en modo MSPIM. La recepción y Transmisión usa la misma configuración. Note que el cambio de configuración de cualquiera de estos bits interrumpiría la comunicación para ambos tanto Recepción como Transmisión. La transferencia de 16-bits puede ser almacenada escribiendo dos bits de datos a UDRn. El UART transmite completamente las interrupciones luego de que el valor en 16-bits ha sido desplazado. 19.5.1 Inicialización USART MSPIM El USART en modo MSPIM tiene que ser inicializado antes que cualquier comunicación pueda tener lugar. El proceso de inicialización normalmente consiste en la configuración de la velocidad en baudios, configurando en modo maestro de operación (Poniendo DDR_XCKn a uno), configurando el formato de trama y habilitando el Transmisor y Receptor. Solo el transmisor puede operar independientemente. Para manejo de interrupciones USART, la Bandera Global de Interrupción debería ser limpiada (y así deshabilitar las interrupciones globales) cuando se ha hecho la inicialización.

Page 125: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Nota: para asegurarse que la inmediata inicialización del XCKn del registro de salida de la velocidad en baudios (UBRRn) seria cero al tiempo que la transmisión es habilitada. Contrariamente al modo normal del USART operando el UBRRn luego de ser escrito el valor deseado después que la transmisión es habilitada, pero antes de que la primera transmisión es iniciada. Configurando UBRRn a cero antes habilitando la transmisión no es necesaria si la inicialización es hecha inmediatamente después del reset desde que UBRRn es reseteada a cero. Antes de hacer la re-inicialización con el cambio de velocidad en baudios, modo de datos, o formato de trama, seria seguro que no habría transmisiones durante el periodo en el que los registros son cambiados. La bandera TXCn puede ser usada para chequear que transmisión ha sido completada, y la bandera RXCn puede ser usada para chequear que no hay lecturas de datos en buffer de recepción. Note que la bandera TXCn seria limpiada antes de cada transmisión (antes de que UDRn es escrita) si esto es usado para este propósito. 19.6 Transferencia de Datos Usando el USART en modo MSPI requiere que la transmisión sea habilitada, por ejemplo el pin TXENn en el registro UCSRnB es puesta a uno. Cuando el Transmisor es habilitado, la operación normal del pórtico en el pin TxDn obtiene la función como la transmisión de salida serial. Habilitando el Receptor es opcional y es hecho por la configuración del bit RXENn en el registro UCSRnB a uno. Cuando la Recepción es habilitada, la normal operación del pin RxDn obtiene la función como entrada de recepción serial. El XCKn en ambos casos seria usada como el reloj de transferencia. Después de que la inicialización del USART esta lista para hacer la transferencia de datos. La transferencia de datos es inicializada por la escritura en UDRn E/S. En este caso para ambos enviando y recibiendo datos desde el Transmisor se controla el reloj de transferencia. El dato escrito a UDRn es movido para el buffer de transmisión del registro de desplazamiento cuando este registro es leído al enviar una nueva trama. 19.6.1 Banderas del Transmisor y Receptor e Interrupciones Las banderas RXCn, TXCn y UDREn y las correspondientes interrupciones en el USART en el modo MSPIM son idénticas en funciones en operación normal del USART. Sin embargo, el estado de las banderas de error de recepción (FE, DOR, y PE) no son usadas y siempre son leídas como cero. 19.6.2 Deshabilitando el Transmisor o Receptor La desabilitación de la transmisión o recepción en el USART en modo MSPIM es idéntica en la función el la operación normal del USART. 19.7 AVR USART MSPIM vs. AVR SPI El USART en modo MSPIM es totalmente compatible con el AVR SPI con respecto a: • Diagrama de tiempos en modo maestro. • La funcionalidad del bit UCPOLn es idéntica en el bit SPI CPOL. • La funcionalidad del bit UCPHAn es idéntica en el bit SPI CPHA • La funcionalidad del bit UDORDn es idéntica en el bit SPI DORD. Sin embargo, desde el USART en modo MSPIM rehúsa los recursos del USART, el uso del USART en modo MSPIM es algo diferente comparado con el SPI. Adicionalmente a diferencia del los bits del registro de control, y que solamente la operación en modo maestro es soportada por el USART en el modo MSPIM, lo siguiente muestra la diferencia entre los dos módulos: • El USART en modo MSPIM incluye (doble) buffer de transmisión. El SPI no tiene buffer. • El USART en modo receptor MSPIM incluye un buffer adicional de nivel. • El bit SPI WCOL no esta incluido en el USART en el modo.

Page 126: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• El SPI en modo de doble velocidad (SPI2X) bit no esta incluida. Sin embargo, lo mismo afecta al almacenamiento por la configuración del UBRRn acordada. • El tiempo de Interrupción no es compatible. • El Pin de control difiere del maestro solo en la operación del USART en modo MSPIM.

19.8 Descripción de Registros La siguiente sección describe los registros usados para la operación SPI usando el USART. 19.8.1 UDRn – USART MSPIM I/O Registro de Datos La función y la descripción del bit del USART registro de datos (UDRn) en modo MSPI es idéntica la operación normal del USART. 19.8.2 UCSRnA – USART MSPIM Registro de Control y Estado n A

• Bit 7 - RXCn: Recepción Completa del USART El bit de esta bandera es puesto cuando no hay lectura de datos en el buffer de recepción y será limpiado cuando el buffer de recepción esta vacío. Si el Receptor es deshabilitado, el buffer de recepción será vaciado y consecuentemente el bit RXCn llegara hacer cero. LA bandera RXCn puede ser usada para generar una interrupción cuando se completa la recepción. • Bit 6 - TXCn: Transmisión Completa del USART Esta bandera es puesta cuando una trama entera en el registro de transmisión y desplazamiento ha sido desplazado y no hay un nuevo dato presente en el buffer de transmisión (UDRn). El bit de la bandera TXCn automáticamente es limpiada cuando la transmisión completa por interrupción es ejecutada, o esto puede ser limpiada por la escritura de uno es la localidad de estos bits. La bandera TXCn puede generar una transmisión completa con interrupción. • Bit 5 - UDREn: Registro de Datos cuando el USART esta vacío La bandera UDREn indica si el buffer de transmisión (UDRn) es leído para la recepción de un nuevo dato. Si UDREn es uno, el buffer esta vacío, y estaría listo para ser escrito. La bandera UDREn puede generar una interrupción en el registro de datos cuando se vacía. UDREn es puesta después de resetear o indicar que el transmisor esta listo. • Bit 4:0 – Bits Reservados en modo MSPI Cuando esta en modo MSPI, estos bits son reservados para usos futuros. Para compatibilidad con futuros dispositivos, estos bits serian escritos a cero cuando UCSRnA es escrito. 19.8.3 UCSRnB –Registro de Control y estado USART MSPIM n B

Page 127: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 7 - RXCIEn: Habilitación de Interrupciones cuando la Recepción es completada Escribiendo este bit a uno se habilita la bandera de interrupción en RXCn. El USART habilita la interrupción cuando la recepción es completada si el bit RXCIE es escrita con uno, la Bandera de Interrupciones Globales es el SREG es escruta a uno y el bit RXCN en UCSRnA es habilitado. • Bit 6 - TXCIEn: Habilitación de Interrupciones cuando la Transmisión es completada Escribiendo este bit a uno se habilita la bandera de interrupción en TXCn. El USART habilita la interrupción cuando la recepción es completada si el bit TXCIE es escrita con uno, la Bandera de Interrupciones Globales es el SREG es escruta a uno y el bit en UCSRnA es habilitado. • Bit 5 - UDRIE: Habilitación de Interrupciones cuando el Registro de datos es vaciado en el USART Escribiendo este bit a uno se habilitan las interrupciones en la bandera UDREn. La interrupción cuando el registro de datos esta vacío será generada solo si el bit UDRIE es escrito con uno, La bandera de Interrupciones Globales en el SREG es escrita a uno y el bit UDRE en UCSRnA es habilitada. • Bit 4 - RXENn: Habilitación de Recepción Escribiendo este bit a uno habilita la recepción en el USART en el modo MSPIM. La Recepción afectaría la operación normal del pórtico para el pin RxDn cuando es habilitado. Deshabilitando la Recepción se vaciaría el buffer de recepción. Solo habilitando la recepción en el modo SPI (configurando RXENn=1 y TXENn=0) no tiene importancia desde esta transmisión que controla el reloj de transferencia y solo el modo maestro es soportado. • Bit 3 - TXENn: Habilitación de la Transmisión. Escribiendo uno en este bit se habilita la Transmisión de l USART. El Transmisor afectara la normal operación del pórtico cuando el pin TxDn es habilitado. La desabilitación del transmisor no llegara hacer efectiva hasta que se complete una transmisión, por ejemplo cuando el registro de desplazamiento y el buffer de transmisión del registro no contienen datos para ser transmitidos. Cuando se deshabilita, la transmisión no afectara al pórtico en el que se encuentra el TxDn. • Bit 2:0 – Bits reservados en el modo MSPI Cuando esta en el modo MSPI, estos bits son reservados par usos futuros. Para compatibilidad con dispositivos futuros, estos bits deben ser escritos a cero cuando el UCSEnB es escrito. 19.8.4 UCSRnC – Registro de Estado y Control n C USART MSPIM

• Bit 7:6 - UMSELn1:0: Selección de Modo del USART Estos bits selección el modo de operación del USART como se muestra en la tabla 19-4. Ver en la pag. 191 del datasheet. El MSPIM es habilitado cuando ambos bits del UMSEL son puestos en uno.

Page 128: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

UDORDn, UCPHAn, y UCPOLn pueden ser habilitados al mismo tiempo de la operación de escritura cuando el MSPIM es habilitado.

• Bit 5:3 – Bits Reservados en modo MSPI Cuando esta en modo MSPI, estos bits son reservados para uso futuro. Para compatibilidad con dispositivos futuros, estos bits deben ser escritos con cero cuando UCSRnC es escrito. • Bit 2 - UDORDn: Orden de Datos Cuando se pone en uno el LSB la palabra de datos es transferida primero. Cuando se pone en cero el MSB la palabra de datos es transferida primero. • Bit 1 - UCPHAn: Fase del Reloj La configuración del bit UCPHAn determina si el dato es muestreado en el flanco de subida o en el flanco de bajada del XCKn. • Bit 0 - UCPOLn: Polaridad del Reloj La configuración del bit UCPOLn pone la polaridad del reloj XCKn. La combinación de la configuración de los bits UCPOLn y UCPHAn determinan el tiempo de la transferencia de datos. 20. Interfase Serial 2 Hilos (2-wire) 20.1 Descripción • Interfase de comunicación flexible, solo necesita dos líneas del bus. • Soportan la operación de Maestro y Esclavo • Los Dispositivos pueden operar como Transmisor o Receptor • 7- bits de dirección permiten a 128 diferentes direcciones de esclavo. • Soporte arbitrario multi-maestro • Velocidad de transferencia de datos superior a 400 KHz. • Slew-rate Limited Output Drivers • Circuitería de supresión de ruido y picos en las líneas del bus. • Dirección del Esclavo Totalmente Programable con el Apoyo de Llamada de General • Reconocimiento de la dirección al despertar el AVR del modo Sleep. 20.2 Definición del Bus de Interfase serial (2-wire) La interfase seria de 2-hilos (TWI) es idealmente satisfecha para aplicaciones típicas de los microcontroladores. El protocolo TWI permite el diseño del sistema a interconectar a 128 dispositivos diferentes usando solo dos líneas del bus bi-direccionable, una para reloj (SCL) y otra para datos (SDA). Solo el hardware externo necesita que la implementación del bus sea simplemente una resistencia pull u para cada una de las líneas de los buses TWI. Todos los dispositivos conectados al bus tienen direcciones individuales, y mecanismos para resolver la disputa del bus sin inherentes en el protocolo TWI.

Page 129: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

20.2.1 Terminología TWI Las siguientes definiciones son frecuentemente encontradas en esta sección.

20.2.2 Interconexión Eléctrica Ambas líneas del bus con conectadas a la fuente de voltaje positiva a través de las resistencias pull up. Los controladores del bus de todos los dispositivos TWI son de colector-abierto. Esto implementa una función AND con la cual es esencial la operación de la interfase. Un bajo nivel en la línea del bus TWI es generada cuando uno o más dispositivos de salida TWI son cero. Un alto nivel es salida cuando todos los dispositivos TWI están en buen estado a sus salidas, permitiendo a la resistencias pull up una línea en alto. Note que todos los dispositivos AVR conectados al bus TWI serían encendidos a medida que permita cualquier operación del bus. El número de dispositivos que pueden ser conectados es solo limitado por el límite de capacitancia de 400 pF y el 7-bit del espacio de dirección del esclavo. Dos diferentes especificaciones están presentes aquí: una relevante para la velocidad del bus 100 Khz., y una valida para una velocidad del bus superior a 400 KHz. 20.3 Transferencia de Datos y Formato de Trama 20.3.1 Transfiriendo Bits Cada bit de datos es transferido en el bus de TWI es acompañado por un pulso en la línea del reloj. El nivel de la línea de datos seria estable cuando la línea del reloj esta en alto. La única excepción de esta regla es para generar condiciones de comienzo y finalización.

Page 130: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

20.3.2 Condiciones de Inicio y Parada El Maestro inicia y termina la transmisión de datos. La transmisión es inicializada cuando el Maestro emite la condición de Inicio en el bus, y esto es terminada cuando el Maestro emite la condición de Parada. Entre la condición de Inicio y Final, el bus lo considera como basura, y otro maestro no debería intentarlo. Un caso especial ocurre cuando una nueva condición de Inicio es emitida entre la condición de Inicio y Finalización. Esto es referido como una condición de Inicio Repetitiva, y es usada cuando el maestro desea inicializar una nueva transmisión sin abandonar el control del bus. Después del Inicio Repetitivo, el bus es considera basura hasta la siguiente parada. Esta conducta es idéntica al Inicio, y por consiguiente el Inicio es usado para describir ambos Inicio e Inicio Repetitivo para la el resto de este manual. Las condiciones de Inicio y Fin son señaladas por la carga del nivel de la línea SDA cuando la línea SCL esta en alto.

20.3.3 Formato del Paquete de Dirección Todos los paquetes de direcciones transmitidas en el bus TWI son de una longitud de 9-bits, consisten de 7 bits de direcciones, un bit de control de lectura/escritura y un bit desconocido. Si el bit de lectura/escritura es habilitado, la operación de lectura seria realizado, por otra parte la operación de escritura sería realizada. Cuando el esclavo reconoce que esta siendo direccionada, esto debería ser desconocido por pulling SDA low en el noveno ciclo del SCL (ACK). Si la dirección del esclavo es basura, o po r algunas otras razones puede no servir la respuesta del Maestro, la línea SDA debería ser salida en alto en el ciclo de reloj ACK. El Maestro puede luego transmitir la condición de parada, o condiciones de inicio repetitivo al iniciar la nueva transmisión. El paquete de dirección consiste de direcciones esclavo y los bits de Lectura o Escritura son llamados SLA+R o SLA+W respectivamente. El MSB del byte de dirección es transmitido primero. Las direcciones esclavas pueden libremente ser localizadas por el diseñador, perola dirección 0000 000 es reservada para llamadas generales.

Page 131: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Cuando un llamada general es emitida, todos los esclavos deberían responder por by pulling the SDA line en el ciclo del ACK. Una llamada general es usada cuando el Maestro desea transmitir el mismo mensaje a varios esclavos en el sistema. Cuando la dirección de la llamada general seguida por el bit de escritura en el bus, todos los esclavos desconocen la llamada general pull the SDA line low in the ack cycle Los siguientes paquetes de datos luego de ser recibidos por todos los esclavos que desconocen la llamada general. Note que transmitiendo la llamada general a las siguientes direcciones por el bit de lectura no tiene sentido, si varios esclavos comienzan transmitiendo diferentes datos. Todas la direcciones con formato 1111 XXX deberían ser reservadas para propósitos futuros.

20.3.4 Formato del Paquete de Datos Todos los paquetes de datos transmitidos en el bus del TWI son de nueve bits de longitud, consistiendo de un byte de datos y unos bits desconocidos. Durante la transferencia, el Maestro genera el reloj y el USART y condiciones de Parada, mientras la recepción es responsable por desconocidas recepciones. Una desconocida (ACK) es señalada por la recepción pulling the SDA line low durante el noveno ciclo SCL. Si la recepción llega ha ser la línea de alto SDA, el NACK es señalada. Cuando el receptor tiene receptado el ultimo byte, o por algunas razones no puede receptar mas bytes, esto debería informar la transmisión enviando al NACK después del byte final. EL MSB del byte de datos es transmitido primero.

20.3.5 Combinando Direcciones y Paquetes de Datos dentro de la Transmisión La transmisión básica consiste de condiciones de INICIO, SLA+R/W, una o mas paquetes de datos y condiciones de PARADA. Un mensaje vació, que consiste de un INICIO seguido por la condición de PARADA, es ilegal. Note que el Wired-ANDing de la línea SCL puede ser usado para implementar hadshaking entre el Maestro y el Esclavo. El esclavo puede extender el periodo en bajo del SCL por pulling the SCL line low. Esto es útil si la velocidad del reloj puesta por el Maestro es también rápida para el Esclavo, o el Esclavo necesita tiempo extra para procesamiento entre la transmisión de datos. El Esclavo entendiendo el periodo en bajo del SCL no afectaría el periodo en alto del SCL, con lo cual es

Page 132: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

determinado por el Maestro. Como consecuencia el Esclavo puede reducir la transferencia de datos del TWI por prolongamiento del SCL duty cycle.

20.4 Sistemas de Buses Multi-maestro, Sincronización y Arbitración El protocolo TWI permite sistemas de bus con varios maestros. Se han tomado precauciones especiales para asegurar que las transmisiones sean procesadas normalmente, incluso si dos o más maestros inician la transmisión al mismo tiempo. Dos problemas suceden en sistemas multi-maestros: • Un algoritmo seria implementado permitiendo solo uno de los maestros para completar la transmisión. Todos los otros maestros deberían cesar la transmisión cuando ellos descubren que tienen perdido el proceso seleccionado. Este proceso seleccionado es un llamado arbitrario. Cuando el maestro descubre que ha perdido el proceso arbitrario, debería inmediatamente cambiar a modo esclavo para chequear si ha sido direccionado por la ganancia del maestro. De hecho que múltiples maestros tienen comienzo de transmisión al mismo tiempo que no deberían detectar esclavos, por ejemplo, los datos siendo transferidos en el bus no deberían ser interrumpidos. • Diferentes maestros pueden usar diferentes frecuencias SCL. Se utilizaría un esquema para sincronización de relojes seriales para todos los maestros, a medida que se permitiría la transmisión procesada en el lockstep fashion. Esto facilitaría los procesos arbitrarios. The wired-ANDing de las líneas del bus es usado para solucionar ambos problemas. Los relojes seriales desde todos los maestros serian wired-ANDed, rindiendo un reloj combinado con altos periodos igual a uno desde el Maestro con el periodo más corto. El periodo en bajo del reloj combinado es igual al periodo en bajo del Maestro con el periodo más largo. Note que todos los maestros escuchan la línea del SCL, efectivamente comenzando a contar su SCL en alto y en bajo en periodos fuera de tiempo cuando la combinación de líneas SCL van en alto o en bajo, respectivamente.

Page 133: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El arbitraje se lleva a cabo por todos los maestros que continuamente monitorean la línea SDA Después de la salida de datos. Si el valor leído desde la línea SDA no coincide con la salida que tiene el Maestro, tiene perdido el arbitraje. Note que el Maestro solo puede perder el arbitraje cuando las salidas tienen un valor en alto SDA mientras las salidas de otro maestro tiene un valor bajo. La pérdida del Maestro debería inmediatamente ir al modo esclavo, chequeando si esto esta siendo direccionado por el maestro. La línea SDA debería ser dejada en alto, pero la pérdida del maestro permite generar una señal de reloj hasta el fin del dato actual o paquete de direcciones. Arbitrariamente continuaría hasta solo uno del resto de Maestros, y esto puede tomar muchos bits. Si varios maestros están probando la dirección al mismo esclavo, arbitrariamente continuaría en el paquete de datos.

Este es el uso del software responsable para asegurar que estas condiciones arbitrarias ilegales nunca ocurrirán. Esto implica que en los sistemas multi-maestros, todos los datos contendrán la misma composición del SLA+R/W y paquetes de datos. 20.5 Revision del modulo TWI

Page 134: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

20.5.1 Pines SCL y SDA Estos son los pines de interfase del AVR TWI con el resto de sistemas MCU. La salida de los controladores contienen slew-rate limitados a medida que conforman las especificaciones TWI. Las fases de entrada contienen picos de supresión unitaria removiendo picos menores que 50 ns. Note que las pull-up internas en el AVR pueden ser habilitadas por la configuración de los bits del PORT correspondientes a los pines SCL y SDA, como se explicó en la sección de Pórticos de E/S. Las pull-up internas pueden en algunos sistemas eliminar la necesidad de unas externas. 20.5.2 Bit Unidad Generador de velocidad Esta unidad controla el periodo del SCL cuando esta operando en modo Maestro. El periodo SCL es controlado por la configuración en el bit TWI del registro de velocidad (TWBR) y los bits del prescalador en el Registro de Estado del TWI (TWSR). La operación esclavo no depende del bit de velocidad o de la configuración del prescalador, pero la frecuencia de reloj del CPU en el esclavo seria menor a 16 veces superior que la frecuencia del SCL. Note que los esclavos pueden prolongar el periodo en bajo del SCL, por eso reduciendo el promedio el periodo del bus del reloj del TWI. La frecuencia del SCL es generada de acuerdo a la siguiente ecuación:

20.5.3 Unidad de Interfase del Bus Esta unidad contiene el Dato y la Dirección del Registro de Desplazamiento (TWDR), el controlador del Inicio/Final la detección del hardware arbitraria. El TWDR contiene la dirección o los bytes de datos a ser transmitidos, o la dirección o los bytes recibidos. Adicionalmente a los 8-bits TWDR, la unidad del bus de interfase también contiene el bit (N) ACK a ser transmitido o recibido. Este registro (N) ACK no es directamente accesible por el software aplicado. Sin embargo, cuando recibe, esto puede ser puesto en uno o en cero por la manipulación del registro de control del TWI

Page 135: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

(TWCR). Cuando en el modo de transmisión, el valor del bit de recepción (N)ACK puede ser determinado por el valor en el TWSR. El controlador de Inicio/Parada es responsable para la generación y detección de la condiciones de Inicio, Inicio repetitivo, y Parada. El controlador de Inicio /Parada es capaz de detectar las condiciones de inicio y Parada cuando el AVR MCU esta en uno el modo sleep, habilitando el MCU para que se despierte si esta direccionada por el maestro. Si el TWI tiene iniciada la transmisión como Maestro, la detección arbitraria por hardware continuamente monitorea la transmisión probando y determinando sui la arbitración es procesada. Si el TWI tiene perdida una arbitración, la unidad de control es informada. Una correcta acción puede ser puesta y apropiadamente generar códigos de estado. 20.5.4 Unidad de Dirección La unidad de dirección chequea si la dirección de los bytes recibidos del 7-bit en el registro de dirección en TWI (TWAR). Si el TWI reconoce una llamada general habilita el bit (TWGCE) en el TWAR con uno, todos los bits de direcciones entrantes también serian comparadas nuevamente las direcciones de las llamadas generales. La unidad de control es informada, permitiendo una acción correcta para ser tomada. El TWI puede o no reconocer estas direcciones, dependiendo de la configuración del TWCR. La unidad de dirección es capaz de comparar direcciones cuando el AVR MCU esta en modo sleep, habilitando el MCU para despertarlo si esta direccionado por el Maestro. Si otra interrupción ocurre durante TWI power-down despierta el CPU, el TWI aborta la operación y retorna al estado idle. Si esto causa algunos problemas, seguramente que la dirección del TWI solamente habilita la interrupción cuando se produce un Power-down. 20.5.5 Unidad de Control La unidad de control monitorea el bus TWI y genera respuestas correspondientemente alas configuraciones en el registro de control del TWI (TWCR). Cuando un evento requiere la atención de las aplicaciones ocurridas en el bus del TWI, la bandera del Interrupción del TWI (TWINT) es confirmada. En el siguiente ciclo de reloj, el Registro de estado del TWI (TWSR) es actualizado como código de estado identificando el evento. El TWSR solo contiene información de estado relevante cuando la bandera de interrupción es confirmada. Para todos los otros tiempos, el TWSR contiene un código de estado especial indicando que la información de estado relevante no esta disponible. Si la bandera permanece en uno en el TWINT. La línea del SCL es sostenida en bajo. Esto permite la aplicación de software para completar estas tareas antes permitiendo que la transmisión TWI continúe. La bandera TWINT es habilitada en las siguientes situaciones: • Después que el TWI ha transmitido en condición Inicio/Inicio repetitivo. • Después que el TWI ha transmitido SLA+R/W. • Después que el TWI ha transmitido en la dirección del byte. • Después que el TWI ha perdido arbitrariamente. • Después que el TWI ha sido direccionada por su propia dirección esclavo o llamada general. • Después que el TWI ha recibido el byte de datos. • Después de Parar o Comenzar repetitivamente ha sido recibida mientras todavía se direcciona como esclavo. • Cuando un error en el bus ha ocurrido en una condición ilegal del Inicio y Parada. 20.6 Usando el TWI

Page 136: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

El AVR TWI es un byte-orientado basado en una interrupción. Las interrupciones son emitidas después de todos los eventos del bus, similar a la recepción del byte o transmisión de condiciones de INICIO. Porque el TWI es una base de interrupción, el software de aplicaron es libre al carry en otras operaciones durante el byte transferido en el TWI. Note que el bit de habilitación de la interrupción del TWI (TWIE) en TWCR junto el bit de la Habilitación de Interrupciones Globales en el SREG permitiendo la aplicación a decidir si no hay aserción de la bandera TWINT debería generar una respuesta de interrupción. Si el bit TWIE es limpiado, la aplicación de la bandera TWINT solamente detectaría acciones en el bus del TWI. Cuando la bandera TWINT es afirmada, el TWI ha finalizado una operación y espera la respuesta aplicada. En este caso, el Registro de estado TWI (TWSR) contiene el valor indicando el estado actual del bus TWI. El software de aplicación puede luego decidir como el TWI debería comportarse en el siguiente ciclo del bus del TWI por manipulación de los registros TWCR y TWDR. La Figura 20-10 es un simple ejemplo de cómo la aplicación puede ser una interfase al hardware del TWI. En esencia, mayores detalles serán explicados en esta sección.

1. El primer paso en la transmisión TWI es transmitir una condición de INICIO. Esto es hecho escribiendo un valor especifico en TWCR, instruyendo el hardware TWI a transmitir en la condición de INICIO. Con lo cual el valor a escribir es descrito luego. Sin embargo, es importante que el bit TWINT sea puesto en el valor escrito. Escribiendo uno en TWINT las banderas son limpiadas. El TWI no empezará ninguna operación mientras el bit TWINT en TWCR es uno. Inmediatamente después la aplicación ha sido limpiada TWINT, el TWI iniciaría la transmisión de la condición de INICIO. 2. Cuando la condición de INICIO ha sido transmitida, la bandera TWINT en TWCR es uno, y TWSR es actualizada con códigos de estado indicando que la condición de INICIO ha sido enviada satisfactoriamente. 3. El software de aplicación debería ahora examinar el valor de TWSR, para asegurarse que la condición de INICIO fue transmitida satisfactoriamente. Si TWSR indica por otra parte, el software de aplicación podría tomar una acción en especial, llamando una rutina de error. Asumiendo que el código de estado es esperado, la aplicación cargaría SLA+W dentro de TWDR. Recordando que TWDR es usado ambos para direccionar el dato. Después TWDR ha sido cargado con el SLA+W deseado, un valor especifico seria escrito a TWCR, instruyendo el TWI hardware a transmisión del SLA+W presente en TWDR. Cuyo valor a escribirse es descrito después. Sin embargo, es importante que el bit TWINT sea puesto en el valor escrito. Escribiendo uno en TWINT se limpian las banderas. El TWI no empezaría ninguna operación mientras el bit de TWINT en TWCR sea uno. Inmediatamente después que la aplicación ha sido limpiada TWINT, el TWI iniciaría la transmisión del paquete de direcciones.

Page 137: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

4. Cuando el paquete de direcciones ha sido transmitido, la bandera TWINT en TWCR es uno, y TWSR es actualizada con el código de estado indicando que el paquete de direcciones ha sido enviada satisfactoriamente. El código de estado también refleja si el esclavo desconoce o no el paquete. 5. El software de aplicación debería examinar ahora el valor de TWSR, para estar seguros que el paquete de dirección fue transmitido satisfactoriamente, y que el valor del bit ACK fue Esperado. Si TWSR indica por otra parte, el software de aplicación tomara algunas acciones especiales, como llamar una rutina de error. Asumiendo que el código de estado es esperado, la aplicación cargará un paquete de datos dentro del TWDR. Subsecuentemente, un valor específico sería escrito a TWCR, instruyendo el hardware TWI a transmitir el paquete de datos presente en TWDR. Con el cual el valor escrito es descrito después. Sin embargo, es importante que el bit TWINT sea puesto en el valor escrito. Escribiendo uno a TWINT las banderas son limpiadas. El TWI no iniciará ninguna operación mientras el bit TWINT en TWCR sea uno. Inmediatamente después la aplicación es limpiada en TWINT, el TWI iniciará la transmisión del paquete de datos. 6. Cuando el paquete de datos ha sido transmitido, la bandera TWINT en TWCR será uno, y TWSR es actualizado con el código de estado indicando que el paquete de datos ha sido enviado satisfactoriamente. El código de estado también reflejara si el esclavo desconoce el paquete. 7. El software de aplicación debería ahora examinar el valor de TWSR, para asegurarse que el paquete de datos fue transmitido satisfactoriamente, y que el valor del bit ACK fue esperado. Si TWSR indica por otra parte, el software de aplicación tomara algunas acciones especiales, como llamar una rutina de error. Asumiendo que el código de estado es esperado, la aplicación escribiría el valor específico a TWCR, instruyendo el hardware TWI a condición de transmisión de parada. El valor escrito es descrito mas adelante. Sin embargo, es importante que el bit TWINT sea puesto en el valor escrito. Escribiendo uno en TWINT las banderas son limpiadas. El TWI no empezará ninguna operación mientras el bit TWINT en TWCR sea uno. Inmediatamente después la aplicación es limpiada en TWINT, el TWI inicia la transmisión de parada. Note que TWINT no es habilitada después de una condición de PARADA ha sido enviada. • Cuando el TWI ha finalizado una operación y espera una respuesta a la aplicación, la bandera TWINT es uno. La línea SCL es pulled low hasta que TWINT es limpiada. • Cuando la bandera TWINT es uno, el usuario actualizaría todos los registros TWI con el valor relevante para el siguiente ciclo del bus TWI. Como un ejemplo, TWDR sería cargado con el valor a ser transmitido en el siguiente ciclo del bus. • Después todos los Registros TWI actualizan y otras tareas del software de aplicación han sido completadas, TWCR es escrito. Cuando se escribe en TWCR, el bit TWINT debería ser habilitado. Escribiendo uno en TWINT las banderas son limpiadas. El TWI luego comenzaría a ejecutar operaciones que fueron especificadas por la configuración del TWCR. 20.7 Modos de Transmisión El TWI puede operar en uno de los cuatros modos. Estos son nombrados Transmisores Maestros (MT), Receptores maestros (MR), Transmisores Esclavos (ST) y Receptores Esclavos. Varios de estos modos pueden ser usados en las mismas aplicaciones. Como ejemplo, el TWI puede usarse

Page 138: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

en modo MT para escribir datos en TWI EEPROM, el modo MR para lectura de datos de respaldo desde la EEPROM. Si otros maestros están presentes en el sistema, algunos de estos transmitirían los datos del TWI, y luego el modo SR seria usado. Este es el software de aplicación que decide cuales modos son legales. La siguiente sección describe cada de estos modos. Estas figuras contienen las siguientes abreviaciones: S: condición INICIO Rs: condición de INICIO REPETITIVO R: Lectura de bits (alto nivel en SDA) W: escritura de bits (bajo nivel en SDA) A: bit desconocido (bajo nivel en SDA) A: Bit desconocido (alto nivel en SDA) Data: 8-bit de datos byte P: condición de PARADA SLA: Dirección del esclavo 20.7.1 Modo Transmisor Maestro En el modo Transmisor maestro, el número de bytes de datos son transmitidos al Receptor Esclavo (Ver figura 20-11).Al entrar en modo Maestro, la condición de INICIO seria transmitida. El formato de los siguientes paquetes de direcciones determinan si el modo de Transmisor Maestro o el Receptor Maestro esta enterado. Todos los códigos de estado mencionados en esta sección asumen que los bits del prescalador son cero y son mascaras a cero.

La condición de INICIO es enviada por escritura con el siguiente valor en TWCR:

TWEN seria uno al ser habilitado la interfaz serial 2-hilos (2-wire), TWSTA seria escrita a uno al transmitir la condición de INICIO y TWINT seria escrita a uno para limpiar las banderas del TWINT. El TWI luego probaría el bus serial 2-hilos y generar una condición de INICIO tan pronto el bus llega a estar libre. Después que la condición de INICIO ha sido transmitida, la bandera TWINT es puesta por hardware, y el código de estado en TWSR sería 0x08. Al entrar en el modo MT, SLA+W sería transmitido. Esto es hecho escribiendo SLA+W a TWDR. Luego el bit TWINT debería ser limpiado (por la escritura de uno) y continuar la transferencia. Esto es completado por la escritura de los siguientes valores en TWCR:

Page 139: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Cuando SLA+W ha sido transmitido y un bit desconocido ha sido recibido. TWINT es puesto en uno nuevamente y el número de códigos de estados en TWSR son posibles. Los códigos de estado posibles en modo Maestro son 0X18, 0x20, o 0x38. Las acciones apropiadas a ser tomadas para cada de estos códigos de estado están detalladas en el Tabla 20-2. Cuando SLA+W ha sido trasmitida satisfactoriamente, el paquete de datos seria trasmitido. Esto es hecho escribiendo el byte de datos a TWDR. TWDR solo sería escrito cuando TWINT esta en alto. Por lo tanto, el acceso sería descargado, y la escritura del bit de colisión (TWWC) sería uno en el registro TWCR. Después actualizando TWDR, el bit TWINT seria limpiado (por la escritura de uno) y continuaría la transferencia. Esto es completado por la escritura de los siguientes valores a TWCR:

Este esquema es repetido hasta que el último byte ha sido enviado y la transferencia es finalizada generando una condición de PARADA o repitiendo la condición de INICIO. La condición de PARADA es generada escribiendo los siguientes valores a TWCR:

La condición de COMIENZO REPETITIVO es generada escribiendo el valor siguiente a TWCR:

Después de repetir la condición de INICIO (estado 0x10) la interfaz serial 2-hilos puede acceder al mismo tiempo a Esclavo nuevamente, o el nuevo esclavo sin la condición de la transmisión de PARADA. Habilitando repetitivamente el INICIO el Maestro cambie entre los modos de Esclavo, Transmisor Maestro y Receptor maestro sin perder el control del bus.

Page 140: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

20.7.2 Modo Maestro Receptor En el modo Transmisor maestro, el número de bytes de datos son receptados desde Transmisor Esclavo (Ver figura 20-13).Al entrar en modo Maestro, la condición de INICIO seria transmitida. El formato de los siguientes paquetes de direcciones determinan si el modo de Transmisor Maestro o el Receptor Maestro esta enterado. Si SLA+W es transmitido, el modo MT es enterado, si SLA+R es transmitido, el modo MR es enterado. Todos los códigos de estado mencionados en esta sección asumen que los bits del prescalador son cero y son mascaras a cero.

La condición de INICIO es enviada por escritura con el siguiente valor en TWCR:

TWEN seria uno al ser habilitado la interfaz serial 2-hilos (2-wire), TWSTA seria escrita a uno al transmitir la condición de INICIO y TWINT seria escrita a uno para limpiar las banderas del TWINT. El TWI luego probaría el bus serial 2-hilos y generar una condición de INICIO tan pronto el bus

Page 141: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

llega a estar libre. Después que la condición de INICIO ha sido transmitida, la bandera TWINT es puesta por hardware, y el código de estado en TWSR sería 0x08. Al entrar en el modo MT, SLA+R sería transmitido. Esto es hecho escribiendo SLA+R a TWDR. Luego el bit TWINT debería ser limpiado (por la escritura de uno) y continuar la transferencia. Esto es completado por la escritura de los siguientes valores en TWCR:

Cuando SLA+R ha sido transmitido y un bit desconocido ha sido recibido. TWINT es puesto en uno nuevamente y el número de códigos de estados en TWSR son posibles. Los códigos de estado posibles en modo Maestro son 0X38, 0x40, o 0x48. Las acciones apropiadas a ser tomadas para cada de estos códigos de estado están detalladas en el Tabla 20-3. Recibiendo datos puede ser leído desde el registro TWDR cuando la bandera TWINT es puesta en alto por hardware. Este esquema es repetido hasta el último byte que ha sido recibido. Después que el último byte ha sido recibido, el MR debería informar al ST enviando a NZCK después del último byte de datos recibido. La transferencia es generada escribiendo el valor siguiente a TWCR:

La condición de COMIENZO REPETITIVO es generada escribiendo el valor siguiente a TWCR:

Después de repetir la condición de INICIO (estado 0x10) la interfaz serial 2-hilos puede acceder al mismo tiempo a Esclavo nuevamente, o el nuevo esclavo sin la condición de la transmisión de PARADA. Habilitando repetitivamente el INICIO el Maestro cambie entre los modos de Esclavo, Transmisor Maestro y Receptor maestro sin perder el control del bus.

Page 142: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

20.7.3 Modo Receptor Esclavo En el modo de Receptor Esclavo, el número de bytes de datos son receptados desde el transmisor Maestro (ver Figura 20-15). Todos los códigos de estado mencionados en esta sección asumen que los bits del prescalador son cero o mascaras a cero.

Para iniciar el modo Receptor esclavo, TWAR y TWCR serían inicializadas como lo siguiente:

Los 7 bits superior son direccionados para cambiar a la interfaz Serial 2-hilos responderán cuando sea direccionado por el maestro. Si el LSB es uno, el TWI responderá a la dirección de llamada general (0x00) caso contrario esto ignorará la llamada de direccionamiento general.

TWEN sería escrito a uno al habilitar el TWI. El bit TWEA seria escrito a uno al habilitar el reconocimiento de los propios dispositivos direccionado como esclavos o direcciones de llamada general. TWSTA y TWSTO serían escritos a cero. Cuando TWAR y TWCR han sido inicializadas, el TWI espera hasta este direccionamiento por sus propios direcciones de esclavo (o si están habilitadas las direcciones de llamadas generales) seguido por el bit de dirección de datos. Si el bit de dirección es “0”, el TWI operará en modo SR. Después la propia dirección del esclavo y el bit de escritura ha sido recibida, la bandera TWINT es uno y el código de estado válido puede ser leído

Page 143: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

desde TWSR. El código de estado es usado para determinar la acción de software adecuado. La acción apropiada puede ser tomada para cada código de estado en la Tabla 20-4- El modo de receptor Esclavo puede también ser entera si arbitrariamente es perdida mientras el TWI esta en el modo Maestro (ver los estados 0x68 y 0x78) Si el bit TWEA es reset durante la transferencia, el TWI retornaría a “No reconocido (1) a SDA después del siguiente byte de datos recibido. Esto puede ser usado para indicar que el esclavo no es capaz de recibir más bytes. Mientras TWEA es cero, el TWI no reconoce su propia dirección de esclavo. Sin embargo, el bus Serial 2-hilos esta todavía monitoreado y resumiendo direcciones puede resumir a cualquier tiempo por la configuración TWEA. Esto implica que el bit TWEA puede ser usado temporalmente aislando el TWI del Bus Serial de 2-hilos. En modo sleep o modos Idle, el sistema de reloj del TWI es apagado y el bit TWEA es uno, la interfase puede todavía reconocer su propia dirección de esclavo o la dirección de llamada general usando el bus de reloj serial de 2-hilos como fuente de reloj. La parte luego despierta desde el modo sleep y el TWI sostendría el reloj en bajo del SCL durante el despertado y después la bandera TWINT es limpiada (por la escritura de uno). Mas allá de la recepción de datos seria cargada como normal, con el reloj del AVR corriendo como normal. Observe que si el AVR esta configurado con un prolongado tiempo de inicio, la línea SCL puede ser sostenido en bajo para un periodo largo, bloqueando otras transmisiones de datos. Note que el registro de datos para interfase seria de 2-hilos – TWDR no reflejaría el ultimo byte presente en el bus cuando despierta des de el modo sleep.

Page 144: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

20.7.4 Modo de Transmisor Esclavo En el modo de Transmisor Esclavo, el número de bytes de datos son transmitidos desde el receptor Maestro (ver Figura 20-15). Todos los códigos de estado mencionados en esta sección asumen que los bits del prescalador son cero o mascaras a cero.

Para iniciar el modo Transmisión esclavo, TWAR y TWCR serían inicializadas como lo siguiente:

Los 7 bits superior son direccionados para cambiar a la interfaz Serial 2-hilos responderán cuando sea direccionado por el maestro. Si el LSB es uno, el TWI responderá a la dirección de llamada general (0x00) caso contrario esto ignorará la llamada de direccionamiento general.

Page 145: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

TWEN sería escrito a uno al habilitar el TWI. El bit TWEA seria escrito a uno al habilitar el reconocimiento de los propios dispositivos direccionado como esclavos o direcciones de llamada general. TWSTA y TWSTO serían escritos a cero. Cuando TWAR y TWCR han sido inicializadas, el TWI espera hasta este direccionamiento por sus propios direcciones de esclavo (o si están habilitadas las direcciones de llamadas generales) seguido por el bit de dirección de datos. Si el bit de dirección es “1”, el TWI operará en modo ST. Después la propia dirección del esclavo y el bit de escritura ha sido recibida, la bandera TWINT es uno y el código de estado válido puede ser leído desde TWSR. El código de estado es usado para determinar la acción de software adecuado. La acción apropiada puede ser tomada para cada código de estado en la Tabla 20-5- El modo de transmisor Esclavo puede también ser entera si arbitrariamente es perdida mientras el TWI esta en el modo Maestro (ver los estados 0xB0). Si el bit TWEA es escrito a cero durante la transferencia, el TWI transmitiría el último byte de la transferencia. El estado 0xC0 o 0xC8 seria entero, dependiendo se el receptor maestro trasmite a NACK o ACK después del byte final. El TWI es cambiado al no direccionar en modo esclavo, e ignoraría el Maestro si esto continúa la transferencia. En verdad el Receptor Maestro recibe todos “1” como datos seriales. El estado 0xC8 es entero si el maestro demanda bytes de datos adicionales (por transmisión ACK), Aunque el Esclavo ha transmitido el ultimo byte (TWEA cero y esperando NACK desde el Maestro). Mientras TWEA es cero el TWI no responde a la dirección del propio Esclavo. Sin Embargo, el bus serial de 2-hilos es todavía monitoreado y el reconocimiento de dirección puede reasumir cuando quiera configurando el TWEA. Esto implica que el bit TWEA puede ser usado temporalmente aislando el TWI desde el bus serial de 2-hilos. En modo sleep o modos Idle, el sistema de reloj del TWI es apagado y el bit TWEA es uno, la interfase puede todavía reconocer su propia dirección de esclavo o la dirección de llamada general usando el bus de reloj serial de 2-hilos como fuente de reloj. La parte luego despierta desde el modo sleep y el TWI sostendría el reloj en bajo del SCL durante el despertado y después la bandera TWINT es limpiada (por la escritura de uno). Mas allá de la recepción de datos seria cargada como normal, con el reloj del AVR corriendo como normal. Observe que si el AVR esta configurado con un prolongado tiempo de inicio, la línea SCL puede ser sostenido en bajo para un periodo largo, bloqueando otras transmisiones de datos. Note que el registro de datos para interfase seria de 2-hilos – TWDR no reflejaría el ultimo byte presente en el bus cuando despierta des de el modo sleep.

Page 146: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

20.7.5 Miscellaneous States Existen dos códigos de estado que no corresponden a la definición del estado TWI, ver tabla 20-6. Los Estados 0xF8 indican que la información no relevante es disponible porque la bandera TWINT no esta habilitada. Esto ocurre entres otros estados, y cuando el TWI no esta involucrado en la transferencia serial. Los estados 0x00 indican que el error del bus ocurre durante transferencia en el bus serial de 2-hilos (2-wire). El error del bus ocurre cuando una condición de INICIO o PARADA ocurre en una posición ilegal en el formato de trama. Ejemplos de cómo las posiciones ilegales son durante la transferencia serial de los byte de dirección, byte de datos, o bits reconocidos. Cuando

Page 147: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

un error de bus ocurre, TWINT es habilitado. Para recuperar desde el error de bus, la bandera TWSTO seria habitada y TWINT seria limpiada por escritura de uno lógico. Esto causa que TWI no entre al modo de direccionamiento Esclavo y limpiar la bandera TWSTO (los otros bits en TWCR no son afectados). Las líneas SDA y SCL son soltadas, y las condiciones de PARADA son transmitidas.

20.7.6 Combinando varios Modos TWI En algunos casos, varios modos TWI serian combinados para completar la acción deseada. Considerar para los datos de los ejemplos leídos desde la EEPROM serial. Típicamente, una transferencia involucra los siguientes pasos: 1. La transferencia debe ser inicializada. 2. La EEPROM debe ser instruida que tipo de localidad debe ser leída. 3. La lectura debe ser realizada. 4. La transferencia debe ser finalizada. Note que el dato es transmitido para ambos desde el Maestro al Esclavo o viceversa. El maestro instruye al Esclavo para que sepa que localidad quiere que lea, requiriendo el uso del modo MT. Subsecuentemente, el dato seria leído desde el Esclavo, empleando el uso del modo MR. La dirección de transferencia seria cambiada. El Maestro guardaría el control del bus durante todos estos pasos, y los pasos deberían ser llevados a cabo como una operación automática. Si este principio es violado en un sistema multimaestro, otro Maestro puede alterar el puntero del dato en la EEPROM entre los pasos 2 y 3, y el Maestro leería la localidad del dato erróneo. Como el cambio en la dirección de transferencia es completado transmitiendo a INICIO REPETITIVO entre la transmisión del byte de direcciones y recepción de los datos. Después del INICIO REPETITIVO, el Maestro guarda sus propiedades del bus. La siguiente figura muestra el flujo en esta transferencia:

20.8 Sistemas Multimaestros y Arbitrarios Si múltiples maestros son conectados al mismo bus, las transmisiones pueden ser iniciadas simultáneamente por uno o más de ellos. El TWI estándar asegura estas situaciones en el manual como otra vía para que uno de los maestros pertita el proceso con la transferencia, y que los datos no sean perdidos en el proceso. Un ejemplo de una situación arbitraria es explicado debajo, cuando dos maestros son probados al transmitir datos al Receptor Esclavo.

Page 148: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Varios escenarios diferentes pueden levantarse durante la situación arbitraria, como se describe a continuación: • Dos o más maestros son realizados con comunicación idénticas con el mismo Esclavo. En este caso, ni el Esclavo ni ninguno de los Maestros conocerían acerca del bus de conexión. • Dos o más maestros son accesibles al mismo Esclavo con datos diferentes o bit de direcciones. En este caso, las situaciones arbitrarias sucederían, o en los bits de LECTURA/ESCRITURA o en los bits de datos. Los maestros prueban a la salida con uno en SDA mientras otras salidas del Maestro lo hacen con cero. Perdiendo maestros el cambio no direccionaría al modo Esclavo y esperaría hasta que el bus este libre y transmitir una nueva condición de INICIO. • Dos o más maestros son asignados a Esclavos diferentes. En este caso, ocurriría en los bits SLA. Los maestros prueban la salida con uno en SDA mientras otro salida del Maestro esta en cero perdería la arbitrariedad. Los Maestro pendiendo la arbitrariedad en SLA cambiarían al modo Esclavo y chequearían si ellos son direccionados con el Maestro ganador. Si direccionamos, ellos, cambiarían al modo SR o ST, dependiendo del valor del bit de LECTURA/ESCRITURA. Si ellos nos empiezan a direccionar, el cambio no direccionaría el modo maestro u esperaría hasta que el bus este libre y transmita una nueva condición, dependiendo de la acción del software de aplicación.

20.9 DESCRIPCION DE REGISTROS 20.9.1 TWBR – TWI Bit Rate Register

• Bits 7:0 – Velocidad del Bit del Registro TWI

Page 149: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

TWBR selecciona el factor de división para el bit generador de velocidad. Este bit es la frecuencia dividida con lo cual genera la frecuencia de reloj SCL en los modos Maestros. 20.9.2 TWCR – Registros de Control TWI

El TWCR es usado para el control de la operación del TWI. Esto es usado para habilitar el TWI, al iniciar el acceso al Maestro aplicando la condición de INICIO al bus, al generar el reconocimiento del Receptor, al generar una condición de parada, y al detener el control del bus mientras el dato es escroto al bus escribiendo al TWRD. Esto también indica la colisión de escritura al TWRD mientras el registro es inaccesible. • Bit 7 – TWINT: Bandera de Interrupción del TWI Este bit es habilitado por hardware cuando el TWI ha finalizado esto actualiza el trabajo y espera la respuesta de la aplicación por software. Si el bit-I en el SREG y TWIE en TWCR son habilitadas, el MCU saltaría al vector de interrupción del TWI. Mientras la bandera TWINT es habilitada, el periodo en bajo del SCL es estrecho. La bandera TWINT seria limpiada por software escribiendo uno lógico. Note que limpiando estas banderas comienza la operación del TWI, tan pronto todos los accesos al Registro de direcciones del TWI (TWAR), registro de estados del TWI (TWSR), y el Registro de Datos del TWI (TWDR) seria completados antes de limpiar estas banderas. • Bit 6 – TWEA: Habilitación del bit de Reconocimiento del TWI El bit TWEA controla la generación del pulso de reconocimiento. Si el bit TWEA es escrito a uno, el pulso del ACK es generado en el bus del TWI si las siguientes condiciones son conocidas: 1. El propio dispositivo Esclavo direccionado ha sido recibido. 2. Una llamada general ha sido recibida, mientras el bit TWGCE en TWAR es habilitado. 3. El byte de datos ha sido recibido en el Receptor Maestro o en el modo Receptor Esclavo. Escribiendo el bit de TWEA a cero, el dispositivo puede ser virtualmente desconectado temporalmente desde el bus serial de 2 hilos (2-wire), El reconocimiento de la dirección puede Lugo ser resumido escribiendo el bit de TWEA a uno nuevamente. • Bit 5 – TWSTA: Bit de Condición de INICIO del TWI La aplicación escribe el bit TWSTA a uno cuando desea llegar hacer Maestro en el bus Serial de 2 hilos (2-wire). El hardware del TWI chequea si el bus esta disponible, y genera una condición de INICIO en el bus si este está libre. Sin embargo, si el bus no está libre, el TWI espera hasta que una condición de PARADA sea detectada, y luego genera una nueva condición de INICIO a demanda del estado del bus Maestro. TWSTA sería limpiada por software cuando la condición de INICIO ha sido transmitida. • Bit 4 – TWSTO: Bit de Condición de PARADA del TWI Escribiendo uno al bit del TWSTO en el modo Maestro generaría una condición de PARADA en el bus serial de 2-hilos (2-wire). Cuando una condición de PARADA es ejecutada en el bus, el bit TWSTO es limpiado automáticamente. En modo esclavo, configurando el bit TWSTO puede ser usado para recuperar desde una condición de error. Esto no generaría una condición de PARADA, pero el TWI retornaría bien-definido reconociendo el modo Esclavo y colocando a las líneas SCL y SDA en estado de alta impedancia.

Page 150: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Bit 3 – TWWC: TWI Write Collision Flag El bit TWWC es habilitado cuando se intenta escribir al Registro de datos del TWI – TWDR cuando TWINT esta en bajo. Esta bandera es limpiada escribiendo el Registro TWDR cuando TWINT esta en alto. • Bit 2 – TWEN: Habilitación del Bit TWI El bit TWEN habilita la operación del TWI y activa la interfase del TWI. Cuando TWEN es escrito a uno, el TWI toma todo el control de los pines de E/S conectados al SCL t SDA, habilitando límites de baja-velocidad y picos filtrados. Si este bit es escrito a cero, el TWI cambia a apagado y todas las transmisiones del TWI son terminadas, indiferentemente de cualquier operación. • Bit 1 – Res: Bits Reservados Estos bits son reservados y siempre son escritos como cero. • Bit 0 – TWIE: Habilitación de Interrupciones del TWI Cuando este bit es escrito a uno, y el bit-I en SREG es habilitado, la respuesta de interrupción del TWI seria activada mientras la bandera del TWINT este en alto. 20.9.3 TWSR – Registro de Estado del TWI

• Bits 7:3 – TWS: Estado del TWI Estos 5 bits reflejan el estado lógico del TWI y del Bus serial de 2-hilos (2-wire). Los diferentes códigos de estado son descritos después en esta sección. Note que el valor leído desde TWSR contiene ambos los valores del estado del 5-bit y el valor del prescalador del 2-bit. El diseño de aplicación seria enmascarar los bits del prescalador a cero cuando chequea los bits de Estado. Esto chequea indiferentemente de las configuraciones del prescalador. • Bit 2 – Res: Bits Reservados Estos bits son reservados y siempre son escritos como cero. • Bits 1:0 – TWPS: Bits del prescalador del TWI Estos bits pueden ser leídos, escritos, y controlados por el bit prescalador de velocidad.

20.9.4 TWDR – Registro de Datos del TWI

Page 151: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

En modo de Transmisión, TWDR contiene el siguiente byte a ser transmitido. En modo Receptor, el TWDR contiene el ultimo byte recibido. Esto es reescrito mientras el TWI no esta en el proceso de desplazamiento del byte. Esto ocurre cuando la Bandera de Interrupción del TWI (TWINT) es habilitada por hardware. Note que el Registro de Datos no puede ser inicializado por el usuario antes que la primera interrupción ocurra. El dato en TWDR permanece estable mientras TWINT esta en uno. Mientras el dato es desplazado fuera, en el bus el dato simultáneamente es desplazado adentro. TWDR siempre contiene el último byte presente en el bus, excepto después de despertar desde el modo sleep por la interrupción del TWI. En este caso, el contenido de TWDR es indefinido. En este caso de perdida arbitraria del bus, ningún dato es perdido en la transmisión desde el Maestro al Esclavo. Manejando los bits del ACK es automáticamente controlado por el TWI, el CPU no puede acceder al bit ACK directamente. • Bits 7:0 – TWD: Registro de Datos del TWI Estos ocho bits constituyen el siguiente byte de datos a ser transmitidos, o el último byte de datos recibidos en el Bus Serial de 2-hilos. 20.9.5 TWAR – Registro de Direcciones TWI (Esclavo)

El TWAR debería ser localizado con el 7-bit Esclavo direccionado (en el séptimo bit más significativo) con lo cual es TWI respondería cuando programamos como Transmisor Esclavo o Receptor, y no necesita los modos Maestros. En sistemas multimaestros, TWAR seria habilitado como Maestro con lo cual puede ser direccionado como Esclavo por otros Maestros. El LSB de TWAE es usado para habilitar el reconocimiento del llamado de direcciones general (0x00). Existen unas direcciones asociadas comparadoras que observan por la dirección del Esclavo (o direcciones de llamado general habilitadas) en la recepción serial de direcciones. . • Bits 7:1 – TWA: Registro de direcciones del TWI (Esclavo) Estos siete bits constituyen la dirección Esclavo de la unidad TWI. • Bit 0 – TWGCE: Bit de Habilitación del Llamado de Reconocimiento General del TWI Si esta puesto, esto habilita el llamado de reconocimiento general dado en el bus serial de 2-hilos. 20.9.6TWAMR – Registro de Mascara de Direcciones del TWI (Esclavo)

• Bits 7:1 – TWAM: Mascara de Direcciones del TWI El TWAMR puede ser cargado con el 7-bit Mascara de dirección Esclavo. Cada de estos bits en TWARM puede enmascarar (deshabilitar) el correspondiente bit de direcciones en el Registro de Direcciones del TWI (TWAR). Si el bit mascara es puesto en uno luego la dirección ignora la comparación entre las direcciones entrantes y los correspondientes bits en TWAR. La figura 20-22 muestra estos detalles.

Page 152: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Bit 0 – Res: Bit Reservado Este bit es reservado y siempre leído como cero.

21. Comparador Analógico –AC 21.1 Revisión General El Comparador Analógico comparara el valor de las entradas en el pin positivo AIN0 y pin negativo AIN1. Cuando el voltaje en el pin positivo AIN0 es más alto que el voltaje en el pin negativo AIN1, la salida del Comparador Analógico, ACO, es habilitada. La salida del comparador seria puesta para disparar el Timer/contador1 en función de captura de Entrada. Adicionalmente, el comparador puede disparar una interrupción separada, exclusiva al comparador Analógico. El usuario puede seleccionar el disparo de la interrupción en a la salida del comparador (subida, bajada, invertida). El diagrama de bloques del comparador es mostrado en la figura 21-1.

21.2 Comparador Analógico Multiplexado e Entrada Esto es posible al selecciona cualquiera de los pines del ADC7…0 al reemplazar la entrada negativa del Comparador Analógico. El ADC multiplexor es usado para seleccionar estas entradas, y consecuentemente, el ADC seria cambiado a apagado al utilizar esto. En el bit del comparador Analógico Multiplexado (ACME en ADCSRB) es habilitado y el ADC es cambiado a apagado (ADEN en ADCSRA es cero), MUX2…0 en ADMUX selecciona el pin de entrada a remplazar en la entrada negativa del Comparador Analógico. Si ACME es limpiado o ADEN es habilitado, AIN1 es aplicado a la entrada negativa del Comparador Analógico.

Page 153: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

21.3 Descripción de Registros 21.3.1 ADCSRB – Registro de Control y Estado B del ADC

• Bit 6 – ACME: Habilitación del Comparador Analógico Multiplexado Cuando este bit es escrito con uno lógico y el ADC es apagado (ADEN en ADCSRA es cero), el ADC multiplexor selecciona la entrada negativa del Comparador Analógico. Cuando este bit es escrito con cero lógico, AIN1 es aplicado a la entrada negativa del Comparador Analógico. 21.3.2 ACSR – Registro de Control y Estado del Comparador Analógico Digital

• Bit 7 – ACD: Desabilitación del Comparador Analógico Cuando este bit es escrito con uno lógico, la energía del Comparador Analógico es quitada. Este bit puede ser habilitado en cualquier momento y apagar el Comparador analógico. Esto reduce el consumo de emergía en los modos activo e Idle. Cuando se carga el bit de ADC, la Interrupción del Comparador Analógico seria deshabilitada por limpieza del bit ACIE en ACSR. Por otra parte una interrupción puede ocurrir cuando este bit es cambiado. • Bit 6 – ACBG: Selección del Comparador Analógico Bandgap Cuando este bit es puesto, un arreglo bandgap de referencia de voltaje remplaza la entrada positiva del Comparador Analógico. Cuando la referencia bandgap es usada como entrada del Comparador Analógico, esto tomara algún tiempo para que el voltaje se estabilice. Si no se estabiliza, la primera conversión tiene un valor incorrecto. • Bit 5 – ACO: Salida del Comparador Analógico La salida del Comparador Analógico es sincronizada y luego directamente conecta al ACO. La sincronización introduce un retardo de 1 – 2 ciclos de reloj. • Bit 4 – ACI: Bandera de Interrupción del Comparador Analógico

Page 154: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Este bit es habilitado por hardware cuando una salida de comparación dispara las interrupciones en modo definidos por ACIS1 y ACIS0. La rutina del Comparador Analógico es ejecutada si el bit ACIE es puesto y el bit-I en SREG es habilitado. ACI es limpiado por hardware cuando ejecuta el correspondiente vector de interrupción. Alternativamente, ACI es limpiado por la escritura de uno lógico a la bandera. • Bit 3 – ACIE: Habilitación de la Interrupción del Comparador Analógico Cuando el bit del ACIE es escrito con uno lógico y el bit-I en es Registro de Estado es habilitado, la Interrupción del Comparador Analógico es activada. Cuando se escribe con cero, la interrupción es deshabilitada. • Bit 2 – ACIC: Habilitación de la Entrada de Captura del Comparador Cuando se escribe uno lógico, estos bits habilitan la entrada en función de captura en el Timer/Contador1 a ser disparado por el Comparador Analógico. La salida del comparador es en este caso directamente conectada a la entrada de captura, haciendo la comparación utiliza el cancelador de ruido y selección del flanco del Timer/Contador1 Interrupción de Captura a la entrada. Cuando se escribe cero lógico, ninguna conexión entre el Comparador Analógico y la función de captura a la entrada existe. Para hacer la comparación disparar el Timer/contador1 a la salida de la interrupción de captura, el bit ICIE1 en el registro máscara de la Interrupción del Timer (TIMSK1) seria habilitada. • Bits 1:0 – ACIS1:ACIS0: Modo Selector de la Interrupción del Comparador Analógico. Estos bits determinan cual comparador eventualmente dispara la interrupción del Comparador Analógico. Las diferentes configuraciones son mostradas en la tabla 21-2.

Cuando cargando los bits ACIS1/ACIS0, la Interrupción del Comparador Analógico sería deshabilitada limpiando estos bits de habilitación de Interrupciones en el Registro ACSR. Por otra parte una interrupción puede ocurrir cuando los bits son cambiados. 21.3.3 DIDR1 – Desabilitación de los Registros de Entradas Digitales 1

• Bit 1:0 – AIN1D:AIN0D: AIN1: Desabilitación de la Entrada Digital AIN0 Cuando este bit es escrito con uno lógico, el buffer de entrada digital en el pin AIN1/0 es deshabilitada. El correspondiente bit del registro PIN siempre leería como cero cuando este bit es habilitado. Cuando la señal analógica es aplicada en el pin AIN/ la entrada digital desde este pin no es necesaria, este bit debería ser escrito con uno lógico para reducir el consumo de energía en el buffer de entrada digital. 22. ADC – CONVERSOR ANÁLOGO A DIGITAL 22.1 Especificaciones: • Resolución de 10-bits • Integrador no Lineal 0.5 LSB

Page 155: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

• Presición Absoluta ±2 LSB • Tiempo de Conversión 13 - 260μs • Máxima Resolución por encima de 15 KSPS • 8 Canales Multiplexados Simples de Salida • Modo Diferencial con Ganancia Seleccionable: X1, X10 o X200 • Ajuste opcional Izquierdo para lectura de salida del ADC • Rango de Voltaje de Entrada del ADC: 0 - VCC • Rango de Voltaje Diferencial del ADC: 2.7 - VCC • Voltaje de Referencia Seleccionable ADC: 2.5V o 1.1V • Modo de Simple Conversión (Free Running) • Inicio de Conversión ADC por Auto-disparo o Fuente de Interrupción • Activación de Interrupción al finalizar la Conversión ADC • En Modo Sleep se cancela el ruido Nota1. Los canales de entada diferencial no son probados para dispositivos de paquetes P DIP P. Este elemento esta garantizado para trabajar con dispositivos de paquetes TQFP y QFN/MLF. Bloque Esquemático del Conversor Analógico Digital

22.9 DESCRIPCIÓN DE REGISTROS 22.9.1 ADMUX –Selección de Registros Multiplexados del ADC

• Bit 7:6 – REFS1:0: Selección Bits de Referencia

Page 156: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Estos bits seleccionan el voltaje de referencia para el ADC, como se muestra en la siguiente tabla. Si estos bits son cambiados durante la conversión, el cambio no será efectuado hasta que la conversión sea completada (ADIF EN ADCSRA es uno). La opción del voltaje de referencia interno no debe ser usada si una referencia externa esta siendo aplicada en el pin AREF. Nota: Si la ganancia es seleccionada en x10 ox200, solo debería usarse 2.56V como voltaje de referencia interna. TABLA 1

REFS1 REFS0 SELECCIÓN DEL VOLTAJE DE REFERENCIA

0 0 AREF, Voltaje de referencia interno apagado

0 1 AVCC con capacitor externo en el pin AREF

1 0 Voltaje de referencia interno 1.1V con capacitor en el pin AREF

1 1 Voltaje de referencia interno 2.56V con capacitor en el pin AREF

• Bit 5 – ADLAR: Ajuste de resultado hacia la izquierda del ADC El bit ADLAR afecta la presentación del resultado de la conversión ADC en el registro de datos del ADC. Escriba uno en ADLAR para ajustar el resultado hacia la izquierda. De lo contrario, el resultado es ajustado a la derecha. Cambiando el bit ADLAR afectara inmediatamente el registro de datos del ADC. • Bits 4:0 – MUX4:0: Bits de selección para Canal Análogo y Ganancia El valor de estos bits seleccionan cual combinación de la entrada analógica son conectadas al ADC. Estos bits también seleccionan la ganancia para los canales diferenciales. Si estos bits son cambiados durante una conversión, el cambio no se vera afectado hasta que se complete la conversión (ADIF en ADCSRA es uno).

Page 157: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

22.9.2 ADCSRA – ADC Registro de Control y Estado A

• Bit 7 – ADEN: Habilitación ADC Cuando se pone uno en este bit se habilita el ADC, con cero el ADC es apagado. Si se apaga el ADC mientras la conversión esta en progreso, la conversión terminará. • Bit 6 – ADSC: Inicio de Conversión ADC En modo de Simple Conversión, cada vez que se ponga uno en este bit se inicia cada conversión. En modo de Simple Conversión (Free Running), al escribir uno en este bit inicia la conversión. La primera conversión ADSC ha sido escrita después de que el ADC ha sido habilitado o si ADSC es escrito al mismo tiempo q el ADC es habilitado, esto demora 25 ciclos de reloj ADC comparado con los 13 ciclos q demora normalmente. La primera conversión llega a inicializar el ADC. ADSC estará en uno durante la conversión en progreso. Cuando termina la conversión retorna a cero. • Bit 5 – ADATE: Habilitación Auto Disparador ADC

Page 158: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Cuando se escribe uno en este bit, el auto Disparador del ADC es habilitado. El ADC empezara la conversión con flanco positivo seleccionado con la señal del disparador. La fuente de disparo es seleccionado por la configuración de acuerdo a la selección de los bits ADC, ADTS en ADCSRB. • Bit 4 – ADIF: ADC Banderas de Interrupción Este bit es uno cuando se completa la conversión ADC y los Registros de Datos son actualizados. Cuando la conversión ADC es completada se ejecuta la interrupción si el bit ADIE y el bit I en SREG son uno. ADIF es cero por hardware cuando se ejecuta la correspondiente interrupción. Alternativamente ADIF es cero cuando la bandera se pone en uno. Tener precaución que si se esta haciendo una modificación de lectura-escritura en el ADCSRA, una interrupción pendiente puede ser deshabilitada. Estos también aplica si se utilizan las interrupciones SBI o CBI. • Bit 3 – ADIE: Habilitación de interrupciones del ADC Cuando este bit es uno y el bit I en SREG es uno, la conversión ADC es completada y es activada la interrupción. • Bits 2:0 – ADPS2:0: Bits de selección para el Prescalador Estos bits determinan el factor de división entre la frecuencia del cristal y la entrada del reloj del ADC.

ADPS2 ADPS1 ADPS0 Factor de División

0 0 0 2

0 0 1 2

0 1 0 4

0 1 1 8

1 0 0 16

1 0 1 32

1 1 0 64

1 1 1 128

22.9.3 EL REGISTRO DE DATOS DEL ADC – ADCL Y ADCH

Cuando una conversión del ADC es completada, el resultado es encontrado en estos dos registros. Si los canales diferenciales son usados el resultado es presentado en complemento a 2.

Page 159: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

Cuando el ADCL es leído, el registro de datos ADC no es actualizado hasta que el ADCH es leído. Consecuentemente si el resultado es ajustado a la izquierda y no se requiere una presición mayor a 8 bits es suficiente leer el ADCH. De otra forma se debe leer primero el ADCL y luego el ADCH. El bit ADLAR en el ADMUX y en los bits del MUXn en ADMUX afecta la forma del resultado cuando es leído de los registros. Si ADLAR es uno el resultado es ajustado a la izquierda. Si el ADLAR es cero el resultado es ajustado a la derecha. 22.9.4 ADCSRB – ADC Registro de Control y Estado B

• Bit 7, 5:3 – RES: Bits Reservados Estos bits son reservados para el uso futuro en el ATmega 164P/324P/644P. Para compatibilidad con dispositivos futuros, estos bits deben ser escritos en cero cunado el ADCSRB es escrito. • Bit 2:0 – ADTS2:0: Fuente de Auto disparo del ADC Si ADATE en ADCSRA es escrito en uno, el valor de estos bits seleccionados disparará la fuente de conversión del ADC. Si ADATE es cero, los bits del ADTS[2:0] no afectan. Una conversión será disparada por un flanco de subida de la selección de la bandera de interrupción.

ADTS2 ADTS1 ADTS0 Fuente de Disparo

0 0 0 Modo Simple Conversión (Free Running)

0 0 1 Comparador Analógico

0 1 0 Interrupción Externa

0 1 1 Timer/Contador 0 Punto de Comparación

1 0 0 Timer/ Contador 0 Desbordamiento

1 0 1 Timer/ Contador 1 Punto de Comparación B

1 1 0 Timer/ Contador 1 Desbordamiento

1 1 1 Timer/ Contador 1 Capture Event

24.3.3 Registro Reset El Registro Reset es un Registro de Datos de Prueba usado para restablecer la parte. Desde los pines del Pórtico de 3-estados cuando es reseteado, el Registro Reset puede también reemplazar la función de la opción no implementada de la instrucción HIGHZ en el JTAG. Un valor en alto del Registro Reset corresponde a pulling the external Reset low. La parte es reseteada con tal que exista un valor en alto presente en el Registro de Datos. Dependiendo de la configuración de los fusibles para las opciones de reloj, la parte permanecerá reseteada por el reset en periodo de tiempo fuera después de dejar el Registro Reset. La salidas desde el Registro de Datos no es habilitada, también el reset tomará lugar inmediatamente, como se muestra en la Figura 24-2.

Page 160: INFORMACIÓN SOBRE EL MULTIPLEXOR Y EL AVR UTILIZADO

24.3.4 Boundary-scan Chain The Boundary-scan Chain tiene la capacidad de controlar y observar los niveles lógicos en los pines digitales de E/S, así como el límite entre digital y lógico analógico para circuitos analógicos teniendo conexiones off-chip. Para una completa descripción ver la pagina 269. 24.4 Boundary-scan Specific JTAG Instructions El Registro de Instrucciones es de 4-bits, soporta 16 instrucciones. El listado de abajo son instrucciones del JTAG útiles para la operación Boundary-scan. Note que la instrucción opcional HIGHZ no esta implementada, pero todas las salidas con 3- estados de capacidad pueden ser puestos en estado de alta impedancia usando la instrucción AVR_RESET, desde el estado de inicio para todo los pines del pórtico es de 3-estados. Como definición de este datasheet, el LSB es desplazado primero hacia adentro y hacia afuera por todos Registros de Desplazamiento. El OPCODE para cada instrucción es mostrado detrás del nombre de la instrucción en el formato hex. El texto describe con cual Registro de Datos es seleccionado como camino entre TDI y TDO para cada instrucción.