Página 1
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.
Página 2
- 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.
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...
Página 4
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 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.
En el Modo de 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...
Página 7
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.
Página 8
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.
Página 9
4. Acerca de los Ejemplos de Código 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.
Página 10
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.
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).
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.
Página 13
• 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.
Página 14
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…...
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.
Página 16
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.
Página 17
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á...
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.
Figura. Mapa de la memoria de programa 7.3 Memoria De Datos SRAM figura abajo muestra como memoria SRAM 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.
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.
Página 21
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.
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.
• 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.
Página 24
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.
Página 25
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.
Página 26
El siguiente código muestra un ejemplo en assembler y otro en C para lectura de la EEPROM. Los ejemplos asumen que las interrupciones son controladas también que las interrupciones no ocurrirían durante la ejecución de estas funciones.
Página 27
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 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”...
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.
Página 30
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.
Página 31
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.
Página 32
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. 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”...
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 cristal, ESR sería tomado en consideración. Ambos valores son especificados por el fabricante.
Página 34
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.
Página 35
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.
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.
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 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.
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.
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.
Página 40
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:...
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.
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í...
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.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.
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á...
Página 46
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á...
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.
• 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. •...
Página 49
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.
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í...
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.
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.
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.
Página 54
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.
Página 55
Nota: Si el Watchdog es habilitado accidentalmente, por ejemplo por un puntero incontrolable o una condición de brown-out, el dispositivo será reseteado y el Watchdog Timer permanecerá habilitado. Si el código no es puesto para controlar el Watchdog, este podría permanecer en un lazo infinito.
Página 56
El siguiente código muestra un ejemplo uno en ensamblador y otro en C para cambiar el valor del time-out del Watchdog Timer. Nota: El Watchdog Timer debe ser reseteado antes de cualquier cambio de los bits WDP, ya que un cambio en los bits WDP puede resultar un time-out cuando cambia a un periodo mas corto del time-out.
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.
Página 58
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.
Página 59
• Bit 5, 2:0 - WDP3:0: Prescalador 3, 2 ,1 y 0 del 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.3 DESCRIPCION DE REGISTROS 11.3.1 MCUCR –Registro de control MCU • 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.
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...
Cualquier flanco de INTn genera un pedido de interrupción asincrónico El flanco de bajada de INTn genera un pedido de interrupción asincrónico El flanco de subida de INTn genera un pedido de interrupción asincrónico 12.2.2 EIMSK – Registro Mascara de Interrupción Externa •...
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.
Página 65
• 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.
Página 66
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.
Página 67
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...
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.
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.
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.
Página 71
Sincronización cuando el valor leído al Pin es asignado por software 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), 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”...
Página 73
Nombre Nombre Descripción de la Completo Señal PUOE Habilitación Pull- Si esta señal es uno, la habilitación pull up es up overriddes 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...
PVOE Habilitación del Si esta señal es uno y el manejo de la salida es valor del pórtico 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.
ADC2 (Entrada canal 2 ADC) PCINT2 (Cambio de pin Interrupción 2) ADC1 (Entrada canal 1 ADC) PCINT1 (Cambio de pin Interrupción 1) 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 SCK (SPI Bus de entrada reloj maestro) PCINT15 (Cambio de pin interrupción 15) MISO (SPI Bus Maestro Salida Entrada/ esclavo)
Página 76
• 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.
Página 77
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.
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 TOSC2 (Timer Oscilador Pin 2) PCINT23 (Cambio del pin de interrupción 23) TOSC1 (Timer Oscilador Pin 1) PCINT22 (Cambio del pin de interrupción 22) TDI (JTAG Entrada testeo de datos)
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. PCINT19, Cambio del pin de de fuente de interrupción 19: El pin PC3 puede servir como una fuente de interrupción externa.
Página 80
PCINT28 (Cambio de pin de interrupción28 ) INT1 (Entrada de Interrupción Externa 1) TXD1 (USART1 Pin de transmisión) PCINT27 (Cambio de pin de interrupción27 ) INT0 (Entrada de Interrupción Externa 1) RXD1 (USART1 Pin de recepción) PCINT26 (Cambio de pin de interrupción26 ) TXD0 (USART Pin de Transmisión) PCINT25 (Cambio de pin de interrupción25 ) RXD0 (USART Pin de Recepción)
Página 81
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.
• 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.
Página 83
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 –...
14. Timer/Contador0 con PWM 8-bits 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) •...
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).
Página 86
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.
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.
Página 88
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.
Página 89
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).
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á...
Página 91
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.
Página 92
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.
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...
Página 94
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.
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 lectura y escritura en el Timer/Contador uno, contador de 8-bits.
• 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 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...
• 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...
Página 99
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.
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 Comparador de Salida (COMnA1:0 = 1).
Página 101
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.
Página 102
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.
Página 103
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).
Página 104
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.
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).
Página 106
Punto de comparación, pone en uno OCnA/OCnB en la dirección baja 0X00 (Modo no Invertido) 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 COMnA1/COMnB1 COMnA0/COMnB0 Descripción Modo de operación Normal, OCnA/OCnB desconectado...
Página 107
Modo de Actualiza Encen Operación ción (CTC (PWM (PWM Timer/Con OCRnX bande tador TOVn Normal 0xFF Inmediat 0xFF PWM, Fase 0x00 0X00 Correcta, 8 bits PWM, Fase 0x01 0X00 Correcta, 9 bits PWM, Fase 0x03 0X00 Correcta, 10 bits Inmediat 0xFF Rápida 0x00...
Página 108
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.
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).
15.11.8 TIMSK1 – Registro Mascara 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 – 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.
Página 112
• 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.
• 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 vector Interrupción desbordamiento del Timer/Contador1 es ejecutado.
Página 114
16.7 Modos de Operación 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.
Página 115
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.
Página 116
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é...
Página 117
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.
Página 118
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 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.
Página 120
• 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.
Página 121
COM2A1 COM2A0 Descripción Modo de Operación Normal, OC2A desconectado WGM22=0: Modo operación Normal, OC2A desconectado WGM22=1: Inversión OC2A Punto Comparación Compare Match Pone cero el OC2A en Compare Match, Pone uno la parte inferior de OC2A en cuenta descendente Pone uno el OC2A en Compare Match, Pone cero la parte inferior de OC2A en cuenta descendente •...
Página 122
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 Puerto de Operación Normal, OC2B desconectado WGM22=0: Puerto operación...
Página 123
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 –...
Página 124
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.
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 –...
Página 126
• 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.
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.
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 –...
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.
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 •...
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.
Página 132
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.
fosc/128 fosc/2 fosc/8 fosc/32 fosc/64 17.5.2 SPSR – Registro de Estado SPI • 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.
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.
• 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”...
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.
Página 137
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 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).
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 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.
Página 140
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.
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.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.
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.
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 función simplemente espera por datos a ser presentados en el buffer de recepción por chequeo de la bandera RXCn. 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.
Página 146
El ejemplo de función de recepción lee todos lo registros e E/S dentro del Archivo del registro antes que cualquier calculo sea hecho. Esto dado en una óptima utilización del buffer de recepción desde la localización leída será libre de aceptar el nuevo dato tan pronto sea posible.
Página 147
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.
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.
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.
Página 150
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.
Página 151
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.
Página 152
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.
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.
Página 154
• 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á...
• 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 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. 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.
Página 157
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.
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. •...
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) •...
Página 162
BAUD Velocidad en baudios (en bits por segundo, bps) fOSC Frecuencia de reloj del sistema Contenido de los registros UBRRnH y UBRRnL, (0-4095) UBRRn 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.
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.
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.
Página 165
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.
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.
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.
Página 168
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.
Página 169
• 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.
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. •...
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.
Página 172
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.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.
Página 174
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.
Página 175
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.
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 20.5.1 Pines SCL y SDA Estos son los pines de interfase del AVR TWI con el resto de sistemas MCU.
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...
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.
Página 179
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.
Página 180
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.
banderas son limpiadas. El TWI luego comenzaría a ejecutar operaciones que fueron especificadas por la configuración del TWCR. En la siguiente implementación del código asembler y C. Note que el código asume que varias definiciones han sido hechas. 20.7 Modos de Transmisión El TWI puede operar en uno de los cuatros modos.
Página 182
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...
Página 183
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.
Página 185
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.
Página 186
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.
Página 187
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.
Página 188
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.
Página 190
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.
Página 191
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.
Página 192
reflejaría el ultimo byte presente en el bus cuando despierta des de el modo sleep.
Página 193
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.
Página 194
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.
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.
Página 196
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 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.
20.9.4 TWDR – Registro de Datos del TWI 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.
Página 199
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).
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.
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.
Página 202
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. •...
Página 203
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.
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 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á...
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á.
Página 207
• Bit 5 – ADATE: Habilitación Auto Disparador ADC 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.
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. Cuando el ADCL es leído, el registro de datos ADC no es actualizado hasta que el ADCH es leído.
Página 209
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.
Página 210
312 del datasheet y “IEEE 1149.1 (JTAG) Boundary scan” en la página 266 respectivamente. El On-chip Debug support es considerada siendo instrucciones privadas del JTAG y distribuidas dentro de ATMEL. La Figura 23-1 muestra el diagrama de bloques de la interfase JTAG y el On- chip Debug system.
Página 211
23.3 TAP – Test Access Port La interfase JTAG es accedida a través de cuatro pines del AVR. En la terminología JTAG, estos pines constituyen el Test Access Port-TAP. Estos pines son: • TMS: Test mode select. Este pin es usado para la navegación a través del estado de máquina del controlador TAP.
23.4 Controlador TAP El controlador TAP es un estado de maquina de 16 bits que controla la operación del circuito Boundaryscanm, circuito de programación del JTAG, o On-chip Debug system. Las transiciones de estado descritas en la Figura 23—2 dependen de la señal presente en TMS al tiempo que el flanco de subida en TCK.
Página 213
• Aplicar la secuencia TMS 1, 1,0 re-entrando al estado Run-Test/Idle. La instrucción es habilitada en la salida paralela desde el Registro de Desplazamiento en el Update-IR state. Los estados Exit-IR, Pause- IR, and Exit2-IR son solo usados para navegación en la maquina de estado. •...
Página 214
Circuit Emulator, or the built-in AVR Instruction Set Simulator. La fuente de soporte del AVR estudio ejecuta programas en nivel ensamblador con Atmel Corporation’s AVR Assembler and C programs compiled with third party vendors’ compilers. AVR estudio funciona con Microsoft® Windows® 95/98/2000 y Microsoft Windows NT®.
Página 215
23.7 On-chip Debug Specific JTAG Instructions The On-chip debug support is considered being private JTAG instructions, and distributed within ATMEL and to selected third party vendors only. Instruction opcodes are listed for reference. 23.7.1 PRIVATE0; 0x8 Private JTAG instruction for accessing On-chip debug system.
Página 216
instructions are given in the section ”Programming via the JTAG Interface” on page 312. 23.9 Bibliography For more information about general Boundary-scan, the following literature can be consulted: • IEEE: IEEE Std. 1149.1-1990. IEEE Standard Test Access Port and Boundary- scan Architecture, IEEE, 1993.
Página 217
24. IEEE 1149.1 (JTAG) Boundary-scan 24.1 Especificaciones • JTAG Interface (IEEE std. 1149.1 compliant) • Boundary-scan Capabilities According to the JTAG Standard • Full Scan of all Port Functions as well as Analog Circuitry having Off-chip Connections • Supports the Optional IDCODE Instruction •...
reset o pulling the external RESET pin low, o emitiendo la instrucción AVR_RESET con configuraciones apropiadas del Reset del Registro de Dato. La instrucción EXTEST es usada para probar los pines externos y cargar los pines de salida con datos. Los datos desde el habilitador de salida serian salidas manejadas con los pines así...
Página 219
Datasheet. ID del Fabricante Son códigos de 11-bits que identifican el fabricante. EL ID de fabricante del JTAG para ATMEL es listado en la Tabla 26-6 en la página 296. Registro Reset 24.3.3 El Registro Reset es un Registro de Datos de Prueba usado para restablecer la parte.
Página 220
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.
Página 221
Los estados activos son: • Captura DR: Datos en los pines externos son probados en el Boundary-scan Chain. • Desplazamiento DR: La cadena de revisión interna es desplazada por la entrada del TCK. • Actualización DR: Datos desde la cadena de revisión es aplicada a los pines de salida.
Página 222
Dirección de datos- Registro DD, y habilitación Pull-up-PUExn correspondiente a la expresión lógica Las funciones alternativas del pórtico digital son conectadas fuera de la caja punteada en la Figura 24-4 para hacer la lectura de verificación encadena en el valor actual del pin. Para funciones Analógicas, esto es conectado directamente desde el pin externo del circuito analógico.
Página 223
Escaneando el Pin Reset 24.5.2 El pin RESET acepta 5V activos en bajo para operación del reset estándar, y 12 V activos en alto para alto voltaje Programando en Paralelo. 24.6 ATmega164P/324P/644P Boundary-scan Order La Tabla 24-1 muestra el orden de escaneo entre TDI y TDO cuando el Boundary-scan Caín es seleccionado como camino de datos.
24.7 Boundary-scan Description Language Files Boundary-scan Description Language (BSDL) files describe Boundary-scan capable devices in a standard format used by automated test-generation software. The order and function of bits in the Boundary-scan Data Register are included in this description. BSDL files are available for ATmega164P/324P/644P.
Página 227
MCUSR – Registro de Estado MCU 24.8.2 El Registro de Estado MCU brinda información de cuando la fuente reset causa un reset en MCU. • Bit 4 – JTRF: Bandera de Reset del JTAG Este bit es puesto si el reset ha sido causado por uno lógico en el Registro Reset del JTAG seleccionado por la instrucción del JTAG AVR_RESET.
25. Boot Loader Support – Auto programación de Escritura mientras se realiza la lectura. 25.1 Descripciones • Read-While-Write Self-Programming • Flexible Boot Memory Size • High Security (Separate Boot Lock Bits for a Flexible Protection) • Separate Fuse to Select Reset Vector •...
cualquier código Boot loader desde la instrucción SPM es deshabilitada cuando se ejecuta desde la sección de Aplicación. 25.3.2 BLS – Sección Boot Mientras la sección de Aplicación es usada para almacenamiento del código de aplicación, el software del Boot Loader sería localizado en el BLS desde la instrucción SPM puede acceder a la Flash, incluyendo sus bits BLS.
Página 230
mientras la sección RRW es bloqueado para la lectura. Después que la programación es completada, el RWWSB sería limpiado por software antes de leer la localidad del código en la sección RWW. Ver la sección “25.9.1” para mayores detalles de cómo limpiar RWWSB: 25.4.2 NRWW –...
Página 231
25.5 Bits Bloqueados del Boot Loader Si la capacidad del Boot Loader no es necesitada, la Flash esta disponible para códigos de aplicación. El Boot Loader tiene dos configuraciones separadas de bits de bloqueo del Boot con lo cual puede ser configurado independientemente.
Página 232
25.6 Entrando en el programa del Boot Loader Entrando al Boot Loader toma lugar un salto o una llamada desde el programa de aplicación. Esto puede ser inicializado por un disparo como un comando de recepción vía USART, o interfase SPI. Alternativamente, el fusible de reset del Boot puede ser programado para que el Vector de reset este apuntado al Boot Flash comienza a direccionar después del reset.
Página 233
Desde la Flash esta organizada en páginas, el contador de programa puede ser Tratado como si tuviera dos secciones diferentes. Una sección, consiste de los bits menos significantes, están direccionando las palabras dentro de la página, mientras los bits más significativos están direccionando las páginas. Esto es mostrado en la Figura 25-3.
Página 234
25.8 Auto-Programando la Flash La memoria de programa es actualizada en una página por la página de moda. Antes de programar la página con el dato almacenado en buffer de la página temporal, la página seria borrada. El buffer de la página temporal es llenado con una palabra al tiempo que esta usando SPM y el buffer puede ser llenada antes del comando de borrado de página o entre las operaciones de borrado de página y escritura:...
Página 235
El buffer de página temporal puede ser accedido en cualquier secuencia. Esto es esencial que la dirección de página usada en ambos el borrado de página y la escritura de página es direccionada en la misma página. 25.8.1 Realizando el Borrado de Página por SPM Para ejecutar el borrado de página, configurar la dirección en el puntero Z, escribir “X0000011”...
25.8.5 Consideraciones mientras se actualiza el BLS Cuidados especiales deben ser tomados si el usuario permite a la sección Boot Loader ser actualizado por el bit11 del Boot Lock desprogramado. Si una escritura accidental sucede en el Boot Loader puede corromper por entero el Boot Loader, y la actualización del software seria imposible.
Página 237
Note que la operación de escritura de la EEPROM bloquearía toda la programación de software en la Flash. Leyendo los fusibles y los bits de bloqueo desde software esto también prevendría durante la operación de escritura de la EEPROM. Se recomienda que el usuario cheque el bit de estado (EEPE) en el registro EECR y verifique que el bit es antes escrito en el Registro SPMCSR.
Página 238
bits BLBSET y SPMEN son puestos en uno en el registro de destino como se muestra a continuación: Si el Fusible y los bits de bloqueo son programados, serían leídos como cero. Si los bits de Fusible y Bloqueo no son programados serian leídos como uno. 25.8.10 Leyendo la Fila de Firma por Software Para leer la Fila de Firma por software, Cargar el puntero Z con la dirección del byte de firma dado en la Tabla 25-5 y poner en uno los bits SIGRD y SPMEN en...
Página 239
1. Si no se necesita la actualización para el Boot Loader en el sistema, programar los bits de bloqueo del Boot Loader para prevenir cualquier actualización de software en el Boot Loader. 2. Guardar el AVR RESET activo (bajo) durante periodos con suficiente voltaje. Esto puede ser hecho habilitando el BOD (internal Brown-out Detector) if the operating voltage matches the detection level.
Página 241
25.8.15 ATmega324P Boot Loader Parameters Table 25-7 through Table 25-9, the parameters used in the description of the Self- Programming are given.
Página 242
25.8.16 ATmega644P Boot Loader Parameters Table 25-13 through Table 25-15, the parameters used in the description of the Self- Programming are given.
25.9 Descripción de Registros 25.9.1 SPMCSR – Store Program Memory Control and Status Register The Store Program Memory Control and Status Register contiene los bits de control necesarios para las operaciones del Boot Loader. • Bit 7 – SPMIE: Habilitación de Interrupciones SPM Cuando el bit SPMIE es escrito a uno, y el bit I del Registro de estado es uno, la interrupción estaría lista para ser habilitada.
Página 244
Cuando el bit RWWSB es uno, la sección RWW no puede ser accedida. El bit RWWSB sería limpiado si el bit RWWSRE es escrito a uno después de que la operación de auto programación es completada. Alternativamente el bit RWWSB automáticamente sería limpiado si la operación cargar página es inicializada.
Página 245
Si este bit es escrito a uno al mismo tiempo que SPMEN, la siguiente instrucción dentro de cuatro ciclos de reloj ejecutan el borrado de página. La dirección de página es tomada desde la parte alta del puntero-Z. El dato en R1 y R0 son ignorados.
26. Programando Memoria 26.1 Programa y Bits de Bloqueo de la Memoria de Datos El ATmega164P/324P/644P proporciona seis bits de bloqueo con lo cual puede ser desprogramado (“1”) o ser programado (“0”) y obtener cosas adicionales listadas en la Tabla 26-2- Los bits de bloqueo pueden ser solo borrados a “1” con el comando Chip Erase.
26.2 Bits de los Fusibles El ATmega164P/324P/644P tiene cuatro bytes de Fusibles. La Tabla 26-3 y 26-5 describen brevemente la funcionalidad de todos los fusible y como son mapeados en los bytes de Fusibles. Note que los fusibles son leídos con cero lógico, “0”, si son programados.
Página 248
Habilitación de Fusibles 26.2.1 Los valores de los fusibles son habilitados cuando los dispositivos entran al modo de programación. Esto no es aplicable al fusible EESAVE lo cual tendría efecto una vez que es programado. Estos fusibles son también habilitados al encendido en modo normal.
26.3 Bytes de Identificación Todos los microcontroladores de Atmel tienen tres-byte de código de firma con lo cual se identifican los dispositivos. Estos códigos pueden ser leídos en modo serial y paralelo, también cuando el dispositivo es bloqueado. Los tres bytes residen en espacios de direcciones separadas.
Página 250
siguiente tabla que son referidos por nombre de pines. Los pines XA1/XA0 determinan la acción a ejecutarse cuando el pin XTAL se le da un pulso positivo, El código de pin es mostrado en la figura 26-12. Cuando se pulsa , el comando carga determinadas acciones a ejecutarse.
1. Aplicando 4.5 - 5.5V entre VCC y GND. 2. Poniendo RESET a “0” e invirtiendo XTAL1 las últimas seis veces. 3. Habilitando los pines Prog_enable mostrados en la Tabla 26-11 a “0000” y esperando 100 ns. 4. Aplicando 11.5 - 12.5V al RESET. Si no hay ninguna actividad en los pines Prog_enable dentro de 100ns tiene que ser aplicado al RESET +12V, esto causaría que el dispositivo falle en el modo de programación.
Página 253
2. Poner BS1 a “0”. 3. Poner DATA a “0001 0000”. Este es el comando para escribir en la Flash. 4. Dar a XTAL1 un pulso positivo. Esto carga los comandos. B. Cargar Direcciones con un byte bajo(Direcciones de los bits 7..0) 1.
Página 254
3. Esperar hasta que este en alto (Ver figura 26-3). J. Repetir B a través de I hasta que la Flash sea programada totalmente o todos los datos han sido programados. K. Programando el Fin de Página 1. Poner XA1, XA0 a “10”. Esto habilita la carga de los comandos. 2.
Página 255
2. Dar a un pulso negativo. Esto inicia la programación de la página de la EEPROM. Están en bajo. 3. Esperar hasta que estén en alto antes de programar la página siguiente. Ver figura 26-4. 26.7.6 Leyendo la Flash El algoritmo para lectura de la memoria Flash se describe a continuación: 1.
Página 256
1. A: Cargar Comando “0100 0000”. 2. C: Cargar Datos de Byte Bajos. Programar bit n = “0” y bit n = “1” borra el bit del fusible. 3. Dar a un pulso negativo y esperar para que este en alto. 26.7.9 Programando los Bits altos del Fusible El algoritmo para programar los Bits altos del fusible se describe a continuación: 1.
Página 257
2. C: Cargar Datos de Byte Bajos. Bit n = “0” programa el bit de bloqueo. Si el modo 3 LB es programado (LB1 y LB2 es programado), esto no es posible en los bits bajos de Bloqueo por ningún modo de programación externo. 3.
1. A: Cargar Comando “0000 1000”. 2. B: Cargar Datos de Byte Bajos, 0x00. 3. Poner a “0”, y BS1 a “1”. El byte de calibración puede ahora ser leído en DATA. 4. Poner a “1”. 26.7.15 Características de la Programación en Paralelo...
Página 259
26.8 Descarga Serial Ambas series de memorias la Flash y la EEPROM pueden ser programadas usando un bus serial de programación mientras RESET es puesto a GND. La interfase de programación Serial consiste de pines SCK, MOSI (entrada) y MISO (salida).
programar/borrar puedan ser ejecutadas. Note, que en la tabla 26-15, el mareamiento del pin para programación serial es listado. No todos los paquetes usan los pines SPI dedicados para los periféricos internos de Interfase Serial- SPI. 26.8.1 Mapamiento del pin de Programación Serial Cuando programando la EEPROM, el ciclo de auto-borrado es construido en el mismo tiempo de operación de programación (solo en el modo serial) y no necesita ser ejecutada primero en la instrucción Borrado de Chip.
Página 261
26.8.2 Algoritmo de Programación Serial Cuando la escritura de datos seriales para el ATmega164P/324P/644P, el dato es bloqueado en el flanco de subida del SCK. Cuando la lectura de datos seriales para el ATmega164P/324P/644P, el dato es bloqueado en el flanco de bajada del SCK. Para programar y verificar el ATmega164P/324P/644P en el modo de programación serial, la siguiente secuencia es recomendada: 1.
Página 262
es usado, el usuario esperaría al ultimo tWD_EEPROM antes de enviar el siguiente byte. Ver la Tabla 26-16. En el borrado del Chip del dispositivo, ningún 0 xFFs en los datos de archivo necesitan ser programados. 6. Ninguna localidad de memoria puede ser verificada usando la instrucción de lectura con la cual retorna el contenido y selecciona la dirección en la salida serial MISO.
26.9 Set de Instrucciones de Programación Serial Si el LSB en el byte de datos de salida RDY/BSY es “1”, la operación de programación esta todavía pendiente. Esperar hasta que el bit retorne a “0” antes de que la siguiente instrucción es llevada a cabo. Dentro de la misma página, el byte de datos bajo sería cargado antes que el byte de datos alto.
26.9.1 Características de Programación Serial 26.10 Programando vía la Interfase del JTAG I Programando a través de la interfase del JTAG el control requiere de cuatro pines específicos del JTAG: TCK, TMS, TDI, y TDO. El control de reset y los pines del reloj no son requeridos.
Página 265
26.10.1 Programando Instrucciones Específicas del JTAG El Registro de Instrucción es de 4-bits, soportando 16 instrucciones. Las instrucciones del JTAG para programación son listadas debajo. El OPCODE para cada instrucción es mostrado detrás de l 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.
Página 266
El AVR especifica públicamente las instrucciones del JTAG programando vía pórtico JTAG. Los 16-bits del registro habilitador de Programa es seleccionado como registro de Datos. Los estados activos son los siguientes: • Desplazamiento DR: El programa de habilitación de firma es desplazada en el Registro de Datos.
El AVR especifica públicamente la instrucción JTAG y captura directamente el contenido de la Flash vía el pórtico del JTAG. Unos 8-bits del Registro de Byte de datos de la Flash es seleccionado como Registro de datos. Esto es físicamente los 8 LSBs del Registro de Comando de Programa.
Página 268
26.10.10 Programando del Registro de Comandos La Programación del Registro de Comandos es de registros de 15-bit. El registro es usado para desplazar serialmente fuera el resultado del comando previo. El Set de Instrucciones de Programación del JTAG es mostrado en la Tabla 26-18 en la pag 317 del Datasheet.
Página 272
26.10.11 Registro de Byte de Datos de la Flash El Registro de Byte de Datos de la Flash proporciona una eficiente vía de cargar el buffer de la pagina de la Flash ante de ejecutar la lectura de pagina, o la salida/verificando el contenido de la flash.
Página 273
cargando la ultima localidad en el buffer de pagina no hace que el Contador de Programa incremente en la siguiente pagina. Durante la Lectura de Pagina, el contenido del byte de selección de la Flash es capturado en el registro de byte de datos de la Flash durante el estado de captura DR.
26.10.12 Algoritmos de Programación Todas la referencias “1a”, “1b, están descritas en la tabla 26-18 de la página 317 del datasheet. 26.10.13 Entrando al Modo de Programación 1. Entrar a la instrucción AVR_RESET del JTAG y cambiar a 1 en el Registro Reset.
Página 275
1. Entrar a la instrucción PROG_COMMANDS en el JTAG. 2. Habilitar la escritura en la Flash usando la instrucción de programación 2a. 3. Cargar la dirección de página usando las instrucciones de programación 2b,2c y 2d. PCWORD (Referidos en la Tabla 26-7) es usada para direccionar dentro de una página y seria escrita como 0.
26.10.18 Programando la EEPROM Antes de programar la EEPROM el Borrado del Chip seria realizado, ver “Realizando el Borrado del chip” en la pagina 322 del datasheet. 1. Entrar a la instrucción PROG_COMMANDS en el JTAG. 2. Habilitar la escritura en la EEPROM usando la instrucción de programación 3.
26.10.21 Programando los Bits de Bloqueo 1. Entrar a la instrucción PROG_COMMANDS en el JTAG. 2. Habilitar el bloqueo del bit de escritura usando la instrucción de programación 7a. 3. Cargar los datos usando la instrucción de programación 7b. El valor del bit “0”...
27.1.3 Características DC del ATmega644P 27.2 Grados de Velocidad La Máxima Frecuencia es dependiente de Vcc. Como se muestra en la Figura 27- 1 y 27-2, la curva de Máxima Frecuencia VS. Vcc es lineal entre 1.8V < VCC < 2.7V y entre 2.7V <...
Página 288
28. Características Típicas Los siguientes mapas muestran la conducta típica. Estas figuras no son probadas durante la fabricación. Todas las mediciones del consumo de corriente son realizadas con todos los pines de E/S configurados como entradas y con pull-up internas habilitadas. El generador de forma seno a la salida es usado como fuente de reloj.
La diferencia entre consumo de corriente ente modo Power-down con Watchdog Timer habilitadas y modo Power-down con Watchdog Timer deshabilitado representa la corriente diferencial dibujada por el Watchdog Timer. 28.1 Caracterización Típica del ATmega164P 28.1.1 Suministro Activo Actual...
Página 293
28.1.3 Suministro de Corriente de los módulos E/S Las tablas y formulas pueden ser usadas para calcular el consumo de corriente adicional para los diferentes módulos de E/S en modo Activo y Idle. La habilitación o desabilitación de los módulos de E/S son controlados por el Registro Reducción de Energía.
Página 294
Esto es posible es posible calcular con el típico consumo de corriente basado en los números de la Tabla 28-2 página 344 para otro Vcc y frecuencia están listados en la Tabla 28-1 en la página 343 del datasheet.
Página 318
28.2.3 Suministro de Corriente de los módulos E/S Las tablas y formulas pueden ser usadas para calcular el consumo de corriente adicional para los diferentes módulos de E/S en modo Activo y Idle. La habilitación o desabilitación de los módulos de E/S son controlados por el Registro Reducción de Energía.
Página 342
28.3.3 Suministro de Corriente de los módulos E/S Las tablas y formulas pueden ser usadas para calcular el consumo de corriente adicional para los diferentes módulos de E/S en modo Activo y Idle. La habilitación o desabilitación de los módulos de E/S son controlados por el Registro Reducción de Energía.
Página 343
28.3.4 Suministro de Corriente Power-down...
Página 344
28.3.5 Suministro de Corriente Power-save...
Página 345
28.3.6 Suministro de Corriente Standby 28.3.7 Pin Pull-up...
Table of Contents Features ..................... 1 1 Pin Configurations ................... 2 2 Overview ....................3 2.1 Block Diagram ......................3 2.2 Comparison Between ATmega164P, ATmega324P and ATmega644P ....4 2.3 Pin Descriptions .......................4 3 Resources ....................7 4 About Code Examples ................8 5 Data Retention ..................
Página 375
9.8 Standby Mode ......................44 9.9 Extended Standby Mode ..................44 9.10 Power Reduction Register ..................45 9.11 Minimizing Power Consumption ................45 9.12 Register Description .....................47 10 System Control and Reset ..............50 10.1 Internal Voltage Reference ...................54 10.2 Watchdog Timer ....................55 10.3 Register Description .....................58 11 Interrupts ....................
Página 376
16.10 Timer/Counter Prescaler ..................152 16.11 Register Description ..................152 17 SPI – Serial Peripheral Interface ............161 17.1 Features ......................161 17.2 Overview ......................161 17.3 SS Pin Functionality ...................166 17.4 Data Modes ......................166 17.5 Register Description ...................168 18 USART ....................171 18.1 Features ......................171 18.2 USART1 and USART0 ..................171 18.3 Overview ......................171 18.4 Clock Generation ....................172...
Página 377
22.9 Register Description ...................255 23 JTAG Interface and On-chip Debug System ........260 23.1 Features ......................260 23.2 Overview ......................260 23.3 TAP – Test Access Port ..................260 23.4 TAP Controller ....................262 23.5 Using the Boundary-scan Chain .................263 23.6 Using the On-chip Debug System ..............263 23.7 On-chip Debug Specific JTAG Instructions ............264 23.8 Using the JTAG Programming Capabilities ............264 23.9 Bibliography ......................265...