You are on page 1of 448

Caractersticas

Alto Rendimiento, AVR de baja potenciaMicrocontrolador 8-Bit


Advanced RISC Arquitectura

- 131 Instrucciones de gran alcance - Ejecucin mayora solo ciclo de reloj


- 32 x 8 registros de propsito general de Trabajo
- Funcionamiento totalmente esttico
- Hasta 20 MIPS de rendimiento a 20 MHz
- On-chip de 2 tiempos Multiplicador
Segmentos de memoria de alta resistencia no voltiles
- 4/8/16 / 32K bytes de memoria progam En-Sistema de Auto-flash programable
(ATmega48PA / 88PA / 168PA / 328P)
- 256/512 / 512 / 1K Bytes EEPROM (ATmega48PA / 88PA / 168PA / 328P)
- 512 / 1K / 1K / 2K Bytes SRAM interna (ATmega48PA / 88PA / 168PA / 328P)
- Escribir / Ciclos de Borrado: 10.000 Flash / EEPROM 100000
- Retencin de datos: 20 aos a 85 C / 100 aos a 25 C(1)
- Seccin del Cdigo opcional de arranque con bits de bloqueo Independientes
In-System Programming de programa de arranque en el chip
Verdadero Funcionamiento Lea-While-escritura
- Bloqueo de programacin de software de seguridad
Caractersticas perifricos
- Dos de 8 bits de temporizador / Contadores con Precontador separada y modo de comparacin
- Uno de 16 bits Temporizador / Contador con Precontador independiente, Compare Mode, y captura
Modo
- Contador en tiempo real con el oscilador independiente
- Seis Canales PWM
- 8 canales ADC de 10 bits en TQFP y QFN / FML
Medicin de temperatura
- 6 canales ADC de 10 bits en el Paquete PDIP
Medicin de temperatura
- Programable USART Serial
- Master / Slave SPI Interface serie
- 2 cables de interfaz serie byte a byte (Philips I2C compatible)
- Programable Watchdog Timer con Independiente oscilador en el chip
- On-chip analgico Comparador
- Interrupcin y Wake-up en el pin Cambio
Caractersticas especiales de microcontroladores
- Power-on Reset y Deteccin programable de Brown de salida
- Calibrada interna Oscilador
- Externo y de interrupcin Fuentes internas
- Seis modos de espera:, Reduccin de Ruido ADC de espera, de ahorro de energa, la Energa-abajo,
espera,
y extendido de espera
E / S y Paquetes
- 23 lneas de E / S
- 28 pines PDIP, TQFP 32-plomo, 28-pad QFN / FML y 32-pad QFN / FML
Voltaje de funcionamiento:
- 1.8 - 5.5V para ATmega48PA / 88PA / 168PA / 328P
Rango de temperatura:
- -40C a 85C
Velocidad Grado:
- 0-20 MHz @ 1.8 - 5.5V
Bajo consumo de energa a 1 MHz, 1,8 V, 25 C durante ATmega48PA / 88PA / 168PA / 328P:
- Modo Activo: 0,2 mA
- Energa-abajo de modo: 0,1 mu
- Modo de ahorro de energa: 0,75 mu (Incluyendo 32 kHz RTC)

8-bit
Microcontroladores
con un 4/8/16 / 32K
Bytes In-System
Programable
Flash

ATmega48PA
ATmega88PA
ATmega168PA
ATmega328P

Rev. 8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


1. Pin Configuraciones
Figura 1-1.

Pinout ATmega48PA / 88PA / 168PA / 328P

PDIP

TQFP Top View


PD2 (INT0 / PCINT18) PD1 (TXD / PCINT17)
PD0 (RXD / PCINT16) PC6 (RESET /
PCINT14) PC5 (ADC5 / SCL / PCINT13) PC4
(ADC4 / SDA / PCINT12) PC3 (ADC3 /
PCINT11) PC2 (ADC2 / PCINT10)

3231302928272625
(PCINT19 / OC2B / INT1) PD3
(PCINT20 / XCK / T0) PD4
GND
VCC
GND
VCC
(PCINT6 / XTAL1 / TOSC1) PB6
(PCINT7 / XTAL2 / TOSC2) PB7

1
2
3
4
5
6
7
8

24
23
22
21
20
19
18
17

PC1 (ADC1 / PCINT9)


PC0 (ADC0 / PCINT8)
ADC7
GND
AREF
ADC6
AVCC
PB5 (SCK / PCINT5)

(PCINT14 / RESET) PC6


(PCINT16 / RXD) PD0
(PCINT17 / TXD) PD1
(PCINT18 / INT0) PD2
(PCINT19 / OC2B / INT1) PD3
(PCINT20 / XCK / T0) PD4
VCC
GND
(PCINT6 / XTAL1 / TOSC1) PB6
(PCINT7 / XTAL2 / TOSC2) PB7
(PCINT21 / OC0B / T1) PD5
(PCINT22 / OC0A / AIN0) PD6
(PCINT23 / AIN1) PD7
(PCINT0 / CLKO / ICP1) PB0

1
2
3
4
5
6
7
8
9
10
11
12
13
14

28
27
26
25
24
23
22
21
20
19
18
17
16
15

PC5 (ADC5 / SCL / PCINT13)


PC4 (ADC4 / SDA / PCINT12)
PC3 (ADC3 / PCINT11)
PC2 (ADC2 / PCINT10)
PC1 (ADC1 / PCINT9)
PC0 (ADC0 / PCINT8)
GND
AREF
AVCC
PB5 (SCK / PCINT5)
PB4 (MISO / PCINT4)
PB3 (MOSI / OC2A / PCINT3)
PB2 (SS / OC1B / PCINT2)
PB1 (OC1A / PCINT1)

910111213141516
(PCINT21 / OC0B / T1) PD5 (PCINT22 /
OC0A / AIN0) PD6 (PCINT23 / AIN1) PD7
(PCINT0 / CLKO / ICP1) PB0 (PCINT1 /
OC1A) PB1 (PCINT2 / SS / OC1B) PB2
(PCINT3 / OC2A / MOSI ) PB3 (PCINT4 /
MISO) PB4

32 FML Top View

28 FML Top View

PD2 (INT0 / PCINT18) PD1 (TXD / PCINT17)


PD0 (RXD / PCINT16) PC6 (RESET /
PCINT14) PC5 (ADC5 / SCL / PCINT13) PC4
(ADC4 / SDA / PCINT12) PC3 (ADC3 /
PCINT11) PC2 (ADC2 / PCINT10)

PD2 (INT0 / PCINT18) PD1 (TXD /


PCINT17) PD0 (RXD / PCINT16) PC6
(RESET / PCINT14) PC5 (ADC5 / SCL /
PCINT13) PC4 (ADC4 / SDA / PCINT12)
PC3 (ADC3 / PCINT11)

3231302928272625

28272625242322
(PCINT19 / OC2B / INT1) PD3
(PCINT20 / XCK / T0) PD4
VCC
GND
(PCINT6 / XTAL1 / TOSC1) PB6
(PCINT7 / XTAL2 / TOSC2) PB7
(PCINT21 / OC0B / T1) PD5

1
2
3
4
5
6
7

21
20
19
18
17
16
15

PC2 (ADC2 / PCINT10)


PC1 (ADC1 / PCINT9)
PC0 (ADC0 / PCINT8)
GND
AREF
AVCC
PB5 (SCK / PCINT5)

(PCINT19 / OC2B / INT1) PD3


(PCINT20 / XCK / T0) PD4
GND
VCC
GND
VCC
(PCINT6 / XTAL1 / TOSC1) PB6
(PCINT7 / XTAL2 / TOSC2) PB7

24
23
22
21
20
19
18
17

1
2
3
4
5
6
7
8

PC1 (ADC1 / PCINT9)


PC0 (ADC0 / PCINT8)
ADC7
GND
AREF
ADC6
AVCC
PB5 (SCK / PCINT5)

891011121314
910111213141516

NOTA: pista de fondo debe ser soldada al suelo.

(/ OC0A / AIN0 PCINT22) PD6 (PCINT23


/ AIN1) PD7 (PCINT0 / CLKO / ICP1)
PB0 (PCINT1 / OC1A) PB1 (PCINT2 / SS
/ OC1B) PB2 (PCINT3 / OC2A / MOSI)
PB3 (PCINT4 / MISO) PB4

NOTA: pista de fondo debe ser soldada al suelo.

(PCINT21 / OC0B / T1) PD5 (PCINT22 /


OC0A / AIN0) PD6 (PCINT23 / AIN1) PD7
(PCINT0 / CLKO / ICP1) PB0 (PCINT1 /
OC1A) PB1 (PCINT2 / SS / OC1B) PB2
(PCINT3 / OC2A / MOSI ) PB3 (PCINT4 /
MISO) PB4

2
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


1.1

Descripciones de los pines

1.1.1

VCC
Tensin de alimentacin Digital.

1.1.2

GND
Ground.

1.1.3

Puerto B (PB7: 0) XTAL1 / XTAL2 / TOSC1 / TOSC2


Puerto B es un puerto de E 8 bits bidireccional / S con resistencias pull-up internas (seleccionados para cada bit). La
Buffers de salida del puerto B tienen caractersticas de transmisin simtricas tanto con alta fregadero y fuente
capacidad. Como entradas, los pines del puerto B que se extraen externamente baja sern fuente de corriente si el pull-up
resistencias se activan. Los pines del puerto B son tri declar cuando una condicin de reset se activa,
incluso si el reloj no se est ejecutando.

Dependiendo de la configuracin de los fusibles de seleccin del reloj, PB6 se puede utilizar como entrada para el inversor
oscilacin
amplificador lador y entrada al circuito de funcionamiento del reloj interno.
Dependiendo de la configuracin de los fusibles de seleccin del reloj, PB7 se puede utilizar como salida del inversor
Amplificador de oscilador.
Si el calibrada interna oscilador RC se utiliza como fuente de reloj de chip, PB7..6 se utiliza como TOSC2..1
entrada para el temporizador asncrono / Contador2 si el bit AS2 en ASSR se establece.
Las diversas caractersticas especiales de Puerto B se elaboran en "Funciones alternativas de Puerto B" en la pgina
82 y "El reloj del sistema y opciones de reloj" en la pgina 26.
1.1.4

El puerto C (PC5: 0)
El puerto C es un puerto I 7 bits bidireccional / S con resistencias pull-up internas (seleccionados para cada bit). La
Buffers de salida PC5..0 tienen caractersticas de transmisin simtricas tanto con alta fregadero y fuente
capacidad. Como entradas, los pines del puerto C que se extraen externamente baja sern fuente de corriente si el pull-up
resistencias se activan. Los pines del puerto C son tri declar cuando una condicin de reset se activa,
incluso si el reloj no se est ejecutando.

1.1.5

PC6 / RESET
Si el RSTDISBL Fuse est programada, PC6 se utiliza como un pin de E / S. Tenga en cuenta que la carac- elctrica
caracters- de PC6 difieren de las de los dems alfileres de Puerto C.
Si el RSTDISBL Fuse es no programado, PC6 se utiliza como entrada de reset. Un nivel bajo en este pin
por ms que la longitud mnima de impulso generar un reinicio, incluso si el reloj no se est ejecutando.
La longitud mnima de impulso se da en Tabla 28-3 en la pgina 318. Pulsos ms cortos no son garantas
teed para generar un Reset.
Las diversas caractersticas especiales de Puerto C se elaboran en "Funciones alternativas de Puerto C" en la pgina
85.

1.1.6

Port D (PD7: 0)
Port D es un puerto de E 8 bits bidireccional / S con resistencias pull-up internas (seleccionados para cada bit). La
Buffers de salida de puerto D tienen caractersticas de transmisin simtricas tanto con alta fregadero y fuente
capacidad. Como entradas, los pines del puerto D que se extraen externamente baja sern fuente de corriente si el pull-up
resistencias se activan. Los pines del puerto D son tri declar cuando una condicin de reset se activa,
incluso si el reloj no se est ejecutando.

3
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Las diversas caractersticas especiales de Port D se elaboran en "Funciones alternativas de Port D" en la pgina
88.
1.1.7

AVCC
AVCC es el pin de alimentacin de tensin para el convertidor A / D, PC3: 0, y ADC7: 6. Debe ser externamente
conectado a VCC, incluso si no se utiliza el ADC. Si se utiliza el ADC, debe estar conectado a VCC
a travs de un filtro de paso bajo. Tenga en cuenta que el voltaje uso PC6..4 suministro digital, VCC.

1.1.8

AREF
AREF es el pin de referencia analgica para el convertidor A / D.

1.1.9

ADC7: 6 (TQFP y QFN / FML paquete solamente)


En el paquete de TQFP y QFN / FML, ADC7: 6 sirven como entradas analgicas al convertidor A / D.
Estos pasadores son alimentados desde la alimentacin analgica y sirven como canales ADC de 10 bits.

4
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

2. Informacin general
El ATmega48PA / 88PA / 168PA / 328P es un CMOS de baja potencia microcontrolador de 8 bits basado en el
AVR mejorada arquitectura RISC. Mediante la ejecucin de instrucciones de gran alcance en un solo ciclo de reloj, la
ATmega48PA / 88PA / 168PA / 328P logra rendimientos se acercan a 1 MIPS por permitir MHz
el diseador del sistema para optimizar el consumo de energa en comparacin con la velocidad de procesamiento.

2.1

Diagrama de bloques
Figura 2-1.

Diagrama de bloques
VCC

GND

Perro guardin
Timer
Perro guardin
Oscilador

Oscilador
Circuitos /
Reloj
Generacin

Energa
Supervisin
POR / BOD y
REINICIO

debugWIRE

PROGRAMA
LGICA

Flash

SRAM

UPC
EEPROM
AVCC
AREF
GND

Bus de datos

8bit T / C 0

16bit T / C 1

8bit T / C 2

Analog
Comp.

USART 0

PORT D (8)

SPI

PORT B (8)

A / D Conv.

Interna
Bandgap

TWI

PORT C (7)

REINICIO

XTAL [1..2]

PD [0..7]

PB [0..7]

PC [0..6]

ADC [6..7]

El ncleo AVR combina un rico conjunto de instrucciones con registros de trabajo 32 de propsito general. Todo el
32 registros estn conectados directamente a la Unidad Aritmtica Lgica (ALU), lo que permite dos independientes
registros que se accede en una sola instruccin ejecutada en un ciclo de reloj. La resultante

5
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


la arquitectura es ms un cdigo eficiente logrando rendimientos de hasta diez veces ms rpido que conmicrocontroladores CISC convencionales.
El ATmega48PA / 88PA / 168PA / 328P ofrece las siguientes caractersticas: 4K / 8K bytes de In-System
Flash programable con capacidad de lectura-While-escritura 256/512/512 / 1K bytes EEPROM,
512 / 1K / 1K / 2K bytes de SRAM, 23 de propsito general de E / S lneas, 32 registros de propsito generales de trabajo,
tres flexibles Timer / Contadores con comparar los modos, las interrupciones internas y externas, un pro- serie
mable USART, a 2 hilos de interfaz Serial orientado a byte, un puerto serie SPI, un canal 6 de 10 bits
ADC (8 canales en TQFP y QFN paquetes / FML), un temporizador de vigilancia programable con
El oscilador interno, y cinco de software modos de ahorro de energa seleccionable. La pantalla de inicio se detiene la
CPU al tiempo que permite la SRAM, Timer / Contadores, USART, 2 cables de interfaz serie, puerto SPI, y
sistema de interrupcin para continuar funcionando. El modo de Apagado salva el contenido del registro, pero
congela el oscilador, desactivando todas las dems funciones de chips hasta la siguiente interrupcin o reinicio de hardware.
En el modo de ahorro de energa, el temporizador asncrono sigue funcionando, lo que permite al usuario mantener una
base de temporizador mientras que el resto del dispositivo est durmiendo. El modo de reduccin de ruido ADC detiene el
Todos los mdulos de E / S, excepto temporizador asncrono y ADC CPU y, para minimizar el ruido de conmutacin durante
ing conversiones del ADC. En el modo de espera, el oscilador de cristal / resonador est funcionando mientras que el resto
del dispositivo est durmiendo. Esto permite muy rpida puesta en marcha en combinacin con bajo consumo de energa.

El dispositivo est fabricado con tecnologa de memoria no voltil de alta densidad de Atmel. La
El chip ISP Flash permite la memoria del programa para ser reprogramados In-System a travs de un SPI
interfaz en serie, por un programador memoria no voltil convencional, o por un pro- arranque en-chip
gram se ejecuta en el ncleo AVR. El programa de arranque puede usar cualquier interfaz para descargar el
programa de aplicacin en la memoria de aplicaciones de Flash. Software en la seccin de arranque flash
continuar funcionando mientras se actualiza la seccin de aplicaciones Flash, proporcionando cierto Read-While-escritura
operacin. Mediante la combinacin de una CPU RISC de 8 bits con En-Sistema de Auto-flash programable en un
viruta monoltica, el Atmel ATmega48PA / 88PA / 168PA / 328P es un potente microcontrolador que
proporciona una solucin eficaz altamente flexible y costo para muchas aplicaciones de control embebidas.

El ATmega48PA / 88PA / 168PA / 328P AVR es compatible con una gama completa de programas y sistemas
herramientas de desarrollo, incluyendo: C compiladores, ensambladores Macro, Programa Depurador / Simuladores,
In-Circuit emuladores, y kits de evaluacin.

2.2

Comparacin entre ATmega48PA, ATmega88PA, ATmega168PA y ATmega328P


El ATmega48PA, ATmega88PA, ATmega168PA y ATmega328P difieren slo en la memoria
tamaos, soporte cargador de arranque y interrumpen tamaos vectoriales. Tabla 2-1 resume los diferentes bro
ory e interrumpir tamaos vectoriales para los tres dispositivos.
Tabla 2-1.

Tamao de la memoria resumen

Dispositivo

Flash

EEPROM

RAM

Vector de interrupcin Tamao

ATmega48PA

4K Bytes

256 Bytes

512 Bytes

1 palabra de instruccin / vector

ATmega88PA

8K Bytes

512 Bytes

1K Bytes

1 palabra de instruccin / vector

ATmega168PA

16K Bytes

512 Bytes

1K Bytes

2 palabras de instruccin / vector

ATmega328P

32K Bytes

1K Bytes

2K Bytes

2 palabras de instruccin / vector

ATmega88PA, ATmega168PA y ATmega328P apoyar una verdadera lectura-escritura Mientras Auto-Promecanismo de programacin. Hay una seccin del cargador de arranque independiente, y la instruccin SPM puede
slo ejecutar desde all. En ATmega48PA, no hay apoyo Lee-While-Escribir y sin separacin
Seccin del gestor de arranque tasa. La instruccin SPM puede ejecutar desde todo el flash.

6
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


3. Recursos
Un completo conjunto de herramientas de desarrollo, notas de aplicacin y hojas de datos estn disponibles para
descargar en http://www.atmel.com/avr.
Nota:

1.

4. Retencin de Datos
Resultados de Cualificacin Fiabilidad muestran que la retencin de datos tasa de fracaso proyectada es mucho menos
de 1 PPM ms de 20 aos a 85 C o 100 aos a 25 C.

5. Sobre Ejemplos de cdigo


Esta documentacin contiene ejemplos simples de cdigo que muestran brevemente cmo utilizar diversas partes
el dispositivo. Estos ejemplos de cdigo se supone que el archivo de cabecera especfica parte se incluye antes
compilacin. Tenga en cuenta que los fabricantes de compiladores no todos C incluyen definiciones de los bits en los archivos de
cabecera
e interrumpir la manipulacin en C depende del compilador. Por favor, confirme con la documentacin del compilador C
tacin para ms detalles.
Para E / S Registros situado en mapa ampliado de E / S, "IN", "OUT", "SBIS", "SBIC", "CBI", y "OSE"
instrucciones deben ser reemplazadas con las instrucciones que permiten el acceso a la E / S extendida. Tpicamente
"LDS" y "STS" en combinacin con "SBRS", "SBRC", "SBR", y "CBR".

7
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

6. AVR CPU Core


6.1

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

Figura 6-1.

Diagrama de bloques de la arquitectura AVR

De bus de datos de 8 bits

Flash
Programa
Memoria

Programa
Contador

Estado
y Control

32 x 8
General
Propsito
Registrers

Instruccin
Registrarse

Instruccin
Decoder

Direccionami
Direccionami
ento indirecto
ento directo

Interrupcin
Unidad
SPI
Unidad
Perro guardin
Timer

ALU

Lneas de control

Analog
Comparador

I / O Module1

Datos
SRAM

I / O Module 2

I / O Module n
EEPROM

E / S Lneas

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

El acceso rpido Registro Archivo contiene propsito general de 32 x 8 bits registros trabajar con una sola
ciclo de reloj el tiempo de acceso. Esto permite que un solo ciclo Unidad Aritmtica Lgica operacin (ALU). En una typ-

8
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


operacin ical ALU, dos operandos son emitidas desde el Registro de archivos, se ejecuta la operacin,
y el resultado se almacena en el Registro de archivos - en un ciclo de reloj.
Seis de los 32 registros se pueden utilizar como tres punteros de direccin indirecta registro de 16 bits para datos
Abordar el espacio - que permite clculos de direccin eficientes. Uno de los estos indicadores de direccin
tambin se puede utilizar como un puntero de direccin para tablas de consulta en la memoria de programa flash. Estos
registros de funciones aadidas son la X de 16 bits X, Y y Z-registro, que se describe ms adelante en esta seccin.
La ALU soporta operaciones aritmticas y lgicas entre registros o entre una constante y
un registro. Operaciones de registro individual tambin se pueden ejecutar en la ALU. Despus de una operacin aritmtica
cin, el registro de estado se actualiza para reflejar la informacin sobre el resultado de la operacin.
El flujo del programa es proporcionada por salto y call instrucciones condicionales e incondicionales, capaces de
dirigirse directamente a todo el espacio de direcciones. La mayora de las instrucciones AVR tienen una sola palabra de 16 bits
lucro
estera. Cada direccin de memoria de programa contiene una instruccin de 16 o 32 bits.
Espacio de memoria de programa Flash se divide en dos secciones, la seccin de programa de arranque y la
Seccin de programacin de aplicaciones. Ambas secciones se han dedicado bits de bloqueo de escritura y lectura / escritura
proteccin. La instruccin SPM que escribe en la seccin de memoria de aplicaciones de Flash debe
residir en la seccin del programa de arranque.
Durante las interrupciones y llamadas a subrutinas, el contador de programa direccin de retorno (PC) se almacena en el
Stack. La pila se asigna eficazmente en la SRAM general de datos, y en consecuencia la Pila
tamao slo est limitado por el tamao total de SRAM y el uso de la SRAM. Todos los programas de usuario debe
inicializar el SP en el restablecimiento de rutina (antes de ejecutar subrutinas o interrupciones). La Pila
Puntero (SP) es lectura / escritura accesible en el espacio de E / S. La SRAM de datos se puede acceder fcilmente
a travs de los cinco modos de direccionamiento diferentes soportados en la arquitectura AVR.

Los espacios de memoria en la arquitectura AVR son todos los mapas de memoria lineales y regulares.
Un mdulo de interrupcin flexible tiene sus registros de control en el espacio de E / S con un global adicional
Interrumpir Activar bit en el registro de estado. Todas las interrupciones tienen una interrupcin separada Vector en el
Mesa vector de interrupcin. Las interrupciones tienen prioridad en funcin de su vector de interrupcin posicin
cin. Cuanto menor sea la direccin de vector de interrupcin, mayor es la prioridad.
El espacio de memoria de E / S contiene 64 direcciones de CPU funciones perifricas como control Registros, SPI, y otras funciones de E / S. La E / S de memoria se puede acceder directamente, o como el de datos
Ubicaciones espacial tras los del Registro Archivo, 0x20 - 0x5F. Adems, el
ATmega48PA / 88PA / 168PA / 328P ha extendido el espacio de E / S de 0x60 - 0xFF en SRAM donde
slo el ST / STS / ETS y las instrucciones LD / SUD / LDD se pueden utilizar.

6.2

Unidad Aritmtica Lgica - ALU


El alto rendimiento AVR ALU opera en conexin directa con todo el propsito general 32
registros de trabajo. Dentro de un solo ciclo de reloj, operaciones aritmticas entre fines generales
registros o entre un registro y una inmediata son ejecutados. Las operaciones de la ALU se dividen
en tres categoras principales - aritmticas, lgicas y bit-funciones. Algunas implementaciones de la
arquitectura tambin proporciona un multiplicador de gran alcance que apoya ambos firmados / multiplicacin sin signo
y formato fraccionario. Vea la seccin "conjunto de instrucciones" para una descripcin detallada.

6.3

Registro de estado
El Registro de Estado contiene informacin sobre el resultado de la arithme- ejecutado ms recientemente
instruccin tic. Esta informacin se puede utilizar para alterar el flujo del programa para llevar a cabo
operaciones condicionales. Tenga en cuenta que el registro de estado se actualiza despus de todas las operaciones de la ALU,
como

9
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


especificado en la referencia del conjunto de instrucciones. Esta voluntad en muchos casos eliminar la necesidad de utilizar el
dedicado comparar instrucciones, resultando en un cdigo ms rpido y ms compacto.
El Registro de Estado no se almacena automticamente al entrar en una rutina de interrupcin y restaurado
al regresar de una interrupcin. Esto debe ser manejado por software.
6.3.1

SREG - Estado AVR Registro


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

0x3F (0x5F)

YO

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Lectura / Escritura
Valor inicial

SREG

Bit 7 - I: Global Interrupt Enable


El bit Global Interrupt Enable se debe establecer para las interrupciones que se habiliten. La interaccin individuo
Control rupt permitir entonces se realiza en los registros de control independientes. Si la interrupcin Activacin global
Registro se borra, ninguna de las interrupciones estn habilitadas independiente de la interrupcin individuo
habilitar la configuracin. El bit I es despejado por hardware despus de haberse producido una interrupcin, y se establece por
la instruccin RETI para habilitar interrupciones posteriores. El bit I tambin se puede ajustar y se aclar por
la aplicacin de las instrucciones de SEI y CLI, como se describe en la referencia del conjunto de instrucciones.

Bit 6 - T: Bit de almacenamiento de copia


Las instrucciones de copia Bit BLD (carga Bit) y BST (tienda Bit) utilizan el T-bit como origen o destino
nacin para el bit operado. Un poco de un registro en el Registro de archivos se puede copiar en T por la
Instruccin BST, y un poco en T se pueden copiar en un bit en un registro en el Registro de archivos por el
Instruccin BLD.

Bit 5 - H: La mitad indicador de acarreo


La mitad Carry Flag H indica a Half Carry en algunas operaciones aritmticas. La mitad llevo es til
en aritmtica BCD. Consulte la seccin "Descripcin del conjunto de instrucciones" para obtener informacin detallada.
Bit 4 - S: Bit de signo, S = N V
El S-bit es siempre un exclusivo o entre la bandera N Negativo y el complemento de dos
Desbordamiento Bandera V. Consulte el "conjunto de instrucciones Descripcin" para obtener informacin detallada.

Bit 3 - V: Complemento de la bandera de Dos desbordamiento


Complemento de desbordamiento Bandera V del dos soportes de dos aritmtica de complemento. Vea el
"Descripcin del conjunto de instrucciones" para obtener informacin detallada.

Bit 2 - N: Indicador de negativo


El negativo de la bandera N indica un resultado negativo en una operacin aritmtica o lgica. Vea el
"Descripcin del conjunto de instrucciones" para obtener informacin detallada.

Bit 1 - Z: Bandera Zero


El Zero Flag Z indica un resultado cero en una operacin aritmtica o lgica. Vea la "Instruccin
Descripcin Set "para obtener informacin detallada.

Bit 0 - C: Llevar la bandera


El indicador de acarreo C indica un acarreo de una operacin aritmtica o lgica. Ver el "conjunto de instrucciones
Descripcin "para obtener informacin detallada.

10
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


6.4

Propsito General de Registro Archivo


El Registro de archivos est optimizado para el AVR mejorado conjunto de instrucciones RISC. A fin de lograr
el rendimiento y la flexibilidad requerida, los siguientes esquemas de entrada / salida son compatibles con el
Registrar archivo:
Un operando de salida de 8 bits y una entrada de nmero 8-bit
Dos operandos de salida de 8 bits y una entrada de nmero 8-bit
Dos operandos de salida de 8 bits y una entrada nmero 16-bit
Un operando de salida de 16 bits y una entrada nmero 16-bit
Figura 6-2 muestra la estructura de los registros de trabajo 32 de propsito general en la CPU.
Figura 6-2.

AVR CPU de propsito general Registros de Trabajo


7

Dir.

R0

0x00

R1

0x01

R2

0x02

...
R13

0x0D

General

R14

0x0E

Propsito

R15

0x0F

Trabajo

R16

0x10

Registros

R17

0x11

...
R26

0x1A

Registro X Byte bajo

R27

0x1B

Registro X Byte alto

R28

0x1C

Registro Y. Byte bajo

R29

0x1D

Registro Y. Byte alto

R30

0x1E

Z-registrarse Byte bajo

R31

0x1F

Z-registrarse Byte alto

La mayor parte de las instrucciones de funcionamiento en el Registro de archivos tienen acceso directo a todos los registros, y
la mayora de ellos son instrucciones de ciclo nico.
Como se muestra en Figura 6-2, cada registro tambin se le asigna una direccin de memoria de datos, cartografa de ellos
directamente en los primeros 32 lugares del espacio de usuario de datos. Aunque no estar fsicamente en prctica
mentado como lugares de SRAM, esta organizacin de la memoria proporciona una gran flexibilidad en el acceso de la
registros, como los ejes X, Y y Z registros-puntero se puede configurar para cualquier ndice de registro en el archivo.

11
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

6.4.1

El registro X, Y-registro y registro Z


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

Figura 6-3.

La X, Y, y Z-registros
15

Registro X

XH

XL
0

R27 (0x1B)

15
Registro Y

R26 (0x1A)

YH

YL
0

R29 (0x1D)

Registro Z

R28 (0x1C)

15

ZH

R31 (0x1F)

ZL
7

0
0

R30 (0x1E)

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

6.5

Stack Pointer
La pila se utiliza principalmente para almacenar datos temporales, para el almacenamiento de variables locales y para almacenar
direcciones de retorno despus de interrupciones y llamadas a subrutinas. Tenga en cuenta que la pila se implementa como
cada vez de mayor a menor posiciones de memoria. El puntero Registro Pila siempre apunta a la
la parte superior de la pila. Los puntos Pila puntero al rea de datos SRAM Pila donde la subrutina
y de alarma Las pilas se encuentran. Un comando EMPUJE Pila disminuir el puntero de pila.

La Pila en la SRAM de datos debe ser definido por el programa antes de cualquier llamada a subrutinas son
ejecutados o las interrupciones estn habilitadas. Valor inicial Stack Pointer es igual a la ltima direccin de la
SRAM interna y el puntero de pila se debe establecer en el punto de partida por encima de la SRAM, consulte Tabla 73 en la pgina 18.
Ver Tabla 6-1 para ms detalles Stack Pointer.
Tabla 6-1.

Instrucciones Stack Pointer

Instruccin

Puntero de pila

Descripcin

EMPUJAR

Disminuye en 1

Los datos se inserta en la pila

LLAMADA
YO LO LLAMO Disminuye en 2
RCALL

Direccin de retorno se inserta en la pila con una llamada de subprograma o


interrumpir

POP

Incrementa en 1

Los datos se extrae de la pila

RET
RETI

Se incrementa en un 2

Direccin de retorno se extrae de la pila con el regreso de


subrutina o regreso de interrupcin

El AVR Stack Pointer se implementa como dos registros de 8 bits en el espacio de E / S. El nmero de
pedacitos realmente utilizados dependen de la implementacin. Tenga en cuenta que el espacio de datos de alguna aplicacin
las de la arquitectura AVR es tan pequea que slo se necesita SPL. En este caso, el Registro SPH
no estar presente.

12
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

6.5.1

SPH y SPL - Stack Pointer alta y Stack Pointer Baja Registro

Bit

15

14

13

12

11

10

0x3E (0x5E)

SP15

SP14

SP13

SP12

SP11

SP10

SP9

SP8

SPH

0x3D (0x5D)

SP7

SP6

SP5

SP4

SP3

SP2

SP1

SP0

SPL

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

RAMEND

Lectura / Escritura

Valor inicial

6.6

Instruccin Ejecucin Timing


En esta seccin se describe el acceso general de temporizacin conceptos para la ejecucin de instrucciones. El AVR
CPU es impulsado por el clkCPU reloj de la CPU, genera directamente de la fuente de reloj seleccionado para el
chip. No se utiliza ninguna divisin interna del reloj.
Figura 6-4 muestra la instruccin paralela recupera y ejecuciones de instruccin habilitada por el HarArquitectura de Harvard y el acceso rpido concepto Registro Archivo. Este es el concepto bsico pipelining
obtener hasta 1 MIPS por MHz con los correspondientes resultados nicos para funciones por el costo,
funciones por los relojes, y funciones por grupo motor.

Figura 6-4.

La Instruccin paralelo Obtiene y ejecuciones de instrucciones


T1

T2

T3

T4

clkCPU
Primera extraccin de instruccin
Primera instruccin Execute
Segundo Instruccin Fetch
Segundo Instruccin Ejecutar
Tercera Instruccin Fetch
Tercera Instruccin Ejecutar
Cuarto de extraccin de instruccin

Figura 6-5 muestra el concepto de tiempo interno para el Registro de archivos. En un solo ciclo de reloj de una ALU
se ejecuta la operacin usando dos operandos de registro, y el resultado se almacena de nuevo a la destino
Registro cin.

Figura 6-5.

Ciclo individual ALU Operacin


T1

T2

T3

T4

clkCPU
Tiempo de ejecucin
Registro Operandos Fetch
ALU Operacin Ejecutar
Resultado Escribe Volver

13
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


6.7

Reset y manejo de interrupciones


El AVR proporciona varias fuentes de interrupcin diferentes. Estas interrupciones y el restablecimiento separada
Vector cada uno tiene un vector de programa separado en el espacio de memoria de programa. Todas las interrupciones estn
individual asignado bits de habilitacin que debe ser uno lgico escritas junto con la interrupcin Global
Activar bit en el registro de estado con el fin de permitir la interrupcin. Dependiendo del programa
El valor del contador, las interrupciones se puede desactivar automticamente cuando Bloqueo de arranque Bits BLB02 o BLB12
estn programados. Esta caracterstica mejora la seguridad del software. Vea la seccin "Memoria Programaming "en la pgina 294 para ms detalles.

Las direcciones ms bajas en el espacio de memoria del programa son por defecto definido como el Reset y
Vectores de interrupcin. La lista completa de los vectores se muestra en "Alarmas" en la pgina 57. La lista tambin
determina los niveles de prioridad de las diferentes interrupciones. Cuanto menor sea la direccin de la ms alta es la
nivel de prioridad. REINICIO tiene la ms alta prioridad, y el prximo es INT0 - la solicitud de interrupcin externa
0. La vectores de interrupcin se puede mover hasta el inicio de la seccin de flash de inicio mediante el establecimiento de la
IVSEL
poco en el Registro de Control de MCU (MCUCR). Referirse a "Alarmas" en la pgina 57 para ms informacin.
El reinicio del vector tambin se puede mover a la de inicio de la seccin de flash de inicio mediante la programacin de la
BOOTRST fusible, consulte "Gestor de arranque de apoyo - Leer-While-Escribir Auto-Programacin,
ATmega88PA, ATmega168PA y ATmega328P "en la pgina 277.

Cuando se produce una interrupcin, la interrupcin Global Enable bit I se borra y todas las interrupciones son disabled. El software de usuario puede escribir uno lgico a la I-bit para habilitar las interrupciones anidadas. Todos habilitado
interrupciones entonces pueden interrumpir la rutina de interrupcin actual. El I-bit se establece automticamente cuando un
Retorno de la instruccin de interrupcin - RETI - se ejecuta.
Hay bsicamente dos tipos de interrupciones. El primer tipo es provocado por un evento que establece el
Bandera de interrupcin. Por estas interrupciones, el contador de programa se gua vectorial a la actual interrupcin Vector con el fin de ejecutar la rutina de manejo de interrupciones, y el hardware borra el correspondiente
Bandera de interrupcin. Banderas de interrupcin tambin se pueden borrar escribiendo un uno lgico en la posicin de bit de
bandera (s)
que se solucione. Si una condicin de interrupcin se produce mientras que el correspondiente bit de habilitacin de interrupcin
es
despejado, la bandera de interrupcin se configurar y recordado hasta la interrupcin est habilitada, o la bandera es
despejado por software. Del mismo modo, si se producen las condiciones de uno o ms de interrupcin mientras que la
interrupcin Global
Activar bit se restablece, la bandera de interrupcin correspondiente (s) se establecer y se acord hasta que el
Interrupcin Global Enable bit est establecido, y entonces ser ejecutado por orden de prioridad.
El segundo tipo de interrupciones activar siempre y cuando la condicin de interrupcin est presente. Estos
interrupciones no necesariamente tienen banderas de interrupcin. Si la condicin de interrupcin desaparece antes de la
interrupcin est activada, la alarma no se activar.
Cuando el AVR sale de una interrupcin, siempre regresar al programa principal y ejecutar uno
se atendi a ms de instrucciones antes de cualquier interrupcin pendiente.
Tenga en cuenta que el registro de estado no se almacena automticamente al entrar en una rutina de interrupcin, ni
restaurado al volver de una rutina de interrupcin. Esto debe ser manejado por software.
Cuando se utiliza la instruccin CLI para deshabilitar las interrupciones, las interrupciones se desactivarn inmediatamente.
No interrupcin se ejecutar despus de la instruccin CLI, incluso si se produce simultneamente con el
Instruccin CLI. El siguiente ejemplo muestra cmo se puede utilizar para evitar interrupciones durante el
secuencia EEPROM cronometrado.

14
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo


en r16, SREG

; tienda valor SREG

; deshabilitar las interrupciones durante la


secuencia sincronizada
; iniciar EEPROM
sbi EECR, EEMPE
cli

sbi EECR, EEPE


fuera SREG, r16

; restaurar el valor SREG (I-bit)

Cdigo C Ejemplo
Char cSREG;
cSREG = SREG; / * Tienda valor SREG * /
/ * deshabilitar las interrupciones durante la secuencia temporizada * /
_CLI ();
EECR | = (1 << EEMPE); / * Inicio de EEPROM * /
EECR | = (1 << EEPE);
SREG = cSREG; / * Restaurar el valor SREG (I-bit) * /

Cuando se utiliza la instruccin SEI para habilitar las interrupciones, la instruccin siguiente SEI ser ejerecortado antes de las interrupciones pendientes, como se muestra en este ejemplo.
Cdigo Asamblea Ejemplo
sei

; establece Global Interrupt Enable

dormir; entrar en el sueo, en espera de interrupcin


; Nota: se colocar en reposo antes de cualquier interrupcin
pendiente (s)

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

6.7.1

Tiempo de respuesta de interrupcin


La respuesta de la ejecucin de interrupcin por todo el AVR habilitada interrumpe es de cuatro ciclos de reloj minimam. Despus de cuatro ciclos de reloj la direccin del programa de vectores para la rutina de manejo de interrupciones real
se ejecuta. Durante este perodo de ciclo de cuatro horas, el contador de programa se inserta en la pila.
El vector es normalmente un salto a la rutina de interrupcin, y este salto tiene tres ciclos de reloj. Si
se produce una interrupcin durante la ejecucin de una instruccin de multi-ciclo, se ha completado esta instruccin
antes de que se sirva la interrupcin. Si se produce una interrupcin cuando el MCU est en modo de suspensin, la interrupcin
tiempo de respuesta de ejecucin se incrementa en cuatro ciclos de reloj. Este aumento se suma a la
la puesta en marcha de tiempo desde el modo de suspensin seleccionado.

El retorno de una rutina de manejo de interrupciones toma cuatro ciclos de reloj. Durante estos cuatro reloj
ciclos, el contador de programa (dos bytes) se extrae de vuelta de la Pila, el puntero de pila es
incrementa en dos, y el bit I en SREG se establece.

15
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

7. AVR Recuerdos
7.1

Visin de conjunto
Esta seccin describe las diferentes memorias en el ATmega48PA / 88PA / 168PA / 328P. El AVR
arquitectura tiene dos espacios de memoria principal, la memoria de datos y el espacio de memoria de programa.
Adems, el ATmega48PA / 88PA / 168PA / 328P cuenta con una memoria EEPROM para almacenamiento de datos
la edad. Los tres espacios de memoria son lineales y regular.

7.2

En-Sistema de memoria de programa Flash reprogramable


El ATmega48PA / 88PA / 168PA / 328P contiene 4/8/16 / 32K bytes en el chip del En-Sistema ReproLa memoria flash parametrizable para almacenamiento de programas. Desde todas las instrucciones AVR son 16 o 32 bits
de ancho, el flash se organiza de la 2/4/8/16 K x 16. Para la seguridad del software, el bro de programa Flash
ory espacio se divide en dos secciones, la seccin del gestor de arranque y de la Seccin de programa de aplicacin en
ATmega88PA y ATmega168PA. Vase la descripcin en la seccin SELFPRGEN "SPMCSR - Tienda
Programa de control de la memoria y registro de estado "en la pgina 292 para ms detalles.

La memoria flash tiene una autonoma de al menos 10.000 ciclos de escritura / borrado. La
ATmega48PA / 88PA / 168PA / Contador Programa 328P (PC) es 11/12/13/14 bits de ancho, por lo tanto Direccining los 2/4/8/16 K posiciones de memoria de programa. La operacin de la seccin de programa de arranque y
bits asociados bloqueo de arranque para la proteccin del software se describen en detalle en "Auto-Programacin
el flash, ATmega48PA "en la pgina 269 y "Gestor de arranque de apoyo - Leer-While-Escribe Auto-Proprogramacin, ATmega88PA, ATmega168PA y ATmega328P "en la pgina 277." Memoria
Programacin "en la pgina 294 contiene una descripcin detallada sobre la Programacin Flash en SPI-o
Modo de programacin paralela.

Tablas de constantes pueden ser asignados dentro del espacio de direcciones de memoria todo el programa (ver la LPM
- Memoria Cargar programa descripcin de instruccin).
Diagramas de tiempo para la recuperacin de instrucciones y de ejecucin se presentan en "Ejecucin de instrucciones Timing "en la pgina 13.

16
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 7-1.

Mapa de memoria de programa ATmega48PA


Memoria de programa
0x0000

Aplicacin Seccin de Flash

0x7FF
Figura 7-2.

Mapa de memoria de programa ATmega88PA, ATmega168PA y ATmega328P


Memoria de programa
0x0000

Aplicacin Seccin de Flash

Seccin de flash de inicio


0x0FFF / 0x1FFF / 0x3FFF

17
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

7.3

Memoria SRAM de datos


Figura 7-3 muestra cmo se organiza la memoria ATmega48PA / 88PA / 168PA / 328P SRAM.
El ATmega48PA / 88PA / 168PA / 328P es un microcontrolador complejo con unidades ms perifricos
que se puede apoyar en los 64 lugares reservados en el Cdigo de operacin para el IN y OUT
instrucciones. Para el espacio O Extended I / de 0x60 - 0xFF en SRAM, slo el ST / STS / ETS y
Instrucciones LD / LDS / LDD pueden ser utilizados.
Los 768/1280/1280/2303 posiciones de memoria de datos inferiores abordan tanto el Registro de archivos, la E / S
memoria, extendido memoria de E / S y la SRAM de datos interna. Los primeros 32 lugares frente a la
Registrar Archivo, el prximo 64 de ubicacin de la memoria estndar de E / S, luego 160 ubicaciones de extendido de E / S
memoria, y los prximos 512/1024/1024/2048 lugares abordan la SRAM de datos interna.
Los cinco modos diferentes de direccionamiento para la cubierta de la memoria de datos: directos, indirectos con Desplazamiento
cin, indirecto, indirecto con Pre-decremento, e indirecta con post-incremento. En el Registro
Archivo, registra R26 a R31 caracterstica las indirectas que traten registros de puntero.
Los alcances de direccionamiento directo todo el espacio de datos.
La indirecta con el modo Desplazamiento alcanza 63 ubicaciones de direccin de la direccin de base dado
por la Y o Z-registrarse.
Al usar registrarse modos de direccionamiento indirecto con decremento previo y posterior automtico incremental
cin, registra la direccin X, Y, y Z se decrementa o incrementa.
Los 32 usos de trabajo registros generales, el 64 de E / S Registros, 160 Extended E / S Registros y
los 512/1024/1024/2048 bytes de SRAM de datos interna en el ATmega48PA / 88PA / 168PA / 328P
son accesibles a travs de todos estos modos de direccionamiento. El Registro de archivos se describe en "Neral
eral Propsito Registro de archivos "en la pgina 11.

Figura 7-3.

Memoria de datos Mapa

Memoria de datos
32 Registros
64 E / S Registros
160 Ext E / S Reg.

0x0000 - 0x001F
0x0020 - 0x005F
0x0060 - 0x00FF
0x0100

SRAM interna
(512/1024/1024/2048 x 8)
0x04FF / 0x04FF / 0x0FF / 0x08FF

18
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

7.3.1

Memory Access Tiempos de datos


En esta seccin se describe el acceso general de temporizacin conceptos de acceso a la memoria interna. La
acceso SRAM interna de datos se lleva a cabo en dos ciclos como se describe en clkCPU Figura 7-4.

Figura 7-4.

On-chip SRAM Ciclos de acceso de datos


T1

T2

T3

clkCPU
Direccin

Calcular Direccin

Direccin vlida

Datos

Escribir

WR
Datos

Leer

RD

Memoria de instrucciones Acceso

7.4

Siguiente instruccin

Memoria EEPROM de datos


El ATmega48PA / 88PA / 168PA / 328P contiene 256/512/512 / 1K bytes de EEPROM bro datos
ria. Se organiza como un espacio de datos por separado, en el que los bytes individuales pueden ser ledos y escritos. La
EEPROM tiene una autonoma de al menos 100.000 ciclos de escritura / borrado. El acceso entre la
EEPROM y la CPU se describen en la siguiente, especificando la EEPROM Direccin Registros, el registro de datos EEPROM, y la EEPROM Control de Registro.

"Programacin de la memoria" en la pgina 294 contiene una descripcin detallada en la EEPROM de programacin
en SPI o el modo de programacin paralela.
7.4.1

EEPROM de lectura / escritura de acceso


Los registros EEPROM de acceso son accesibles en el espacio de E / S.
El tiempo de acceso de escritura para el EEPROM se da en Tabla 7-2. Una funcin de auto-sincronizacin, sin embargo,
permite que el software de usuario detectar cuando el siguiente byte se puede escribir. Si el cdigo de usuario contiene
instrucciones
las que escriben la EEPROM, se deben tomar algunas precauciones. En el poder fuertemente filtrada
suministros, VCC es probable que suba o baje lentamente el encendido / abajo. Esto hace que el dispositivo para algunos
perodo de tiempo para funcionar a una tensin inferior a la especificada como mnimo para la frecuencia de reloj utilizada.
Ver "Prevencin de la Corrupcin EEPROM" en la pgina 20 para obtener ms informacin sobre cmo evitar problemas en estos
situaciones.
A fin de evitar escrituras EEPROM no intencionales, un procedimiento de escritura especfica debe ser seguido.
Consulte la descripcin del registro de control EEPROM para ms detalles sobre esto.
Cuando se lee la EEPROM, se detiene la CPU durante cuatro ciclos de reloj antes de la siguiente instruccin es
ejecutado. Cuando se escriba la EEPROM, se detiene la CPU durante dos ciclos de reloj antes de la siguiente
instruccin se ejecuta.

19
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


7.4.2

Prevencin de la Corrupcin EEPROM


Durante los perodos de baja VCC, los datos de la EEPROM pueden ser corrompidos porque la tensin de alimentacin es
demasiado bajo para la CPU y la memoria EEPROM para operar correctamente. Estas cuestiones son las mismas que para
sistemas de nivel de placa usando EEPROM, y las mismas soluciones de diseo deben ser aplicados.
Un corrupcin de datos EEPROM puede ser causada por dos situaciones cuando el voltaje es demasiado bajo. En primer lugar,
una secuencia de escritura regular a la EEPROM requiere una tensin mnima para funcionar correctamente. Seccin
gundo lugar, la propia CPU puede ejecutar instrucciones incorrectamente, si la tensin de alimentacin es demasiado baja.
Corrupcin de datos EEPROM puede evitarse fcilmente siguiendo esta recomendacin diseo:
Mantenga RESET AVR activa (bajo) durante los perodos de tensin de alimentacin insuficiente. Esto puede
hacerse activando la Brown-cabo interna Detector (BOD). Si el nivel de deteccin de la interna
DBO no coincide con el nivel de deteccin es necesario, una baja VCC externa restablecer circuito de proteccin puede
ser utilizado. Si se produce un reset mientras una operacin de grabacin se encuentra en progreso, la operacin de escritura ser
comcompletado siempre que la tensin de alimentacin es suficiente.

7.5

Memoria de E / S
La definicin de espacio de E / S de la ATmega48PA / 88PA / 168PA / 328P se muestra en "Registro resumen
mary "en la pgina 423.
Todo ATmega48PA / 88PA / 168PA / 328P / S y los dispositivos perifricos se colocan en el espacio de E / S. Todas las E / S
lugares pueden ser accedidos por el LD / SUD / LDD y ST instrucciones / STS / ETS, la transferencia de datos
entre los 32 registros de propsito general de trabajo y el espacio de E / S. E / S registros de la
rango de direcciones 0x00 - 0x1F son directamente poco accesible siguiendo las instrucciones de OSE y la ICC. En
estos registros, el valor de los bits individuales pueden verificarse mediante el uso de las instrucciones SBIS y SBIC.
Consulte la seccin de conjunto de instrucciones para ms detalles. Comandos Cuando se utiliza la E / S especficas EN
y OUT, la E / S aborda 0x00 - 0x3F debe ser utilizado. Al abordar de E / S Registros como datos
espacio utilizando instrucciones LD y ST, 0x20 hay que aadir a estas direcciones. La
ATmega48PA / 88PA / 168PA / 328P es un microcontrolador complejo con ms unidades perifricas que
se puede apoyar en el 64 lugar reservado en el Cdigo de operacin para las instrucciones IN y OUT. Para
el espacio O Extended I / de 0x60 - 0xFF en SRAM, slo el ST / STS / ETS y LD / SUD / LDD
instrucciones pueden ser utilizados.

Para la compatibilidad con dispositivos futuros, los bits reservados se deben escribir a cero si accede.
Direcciones de memoria de E / S Reservados nunca deben ser escritos.
Algunos de los indicadores de estado se borran escribiendo un uno lgico para ellos. Tenga en cuenta que, a diferencia de la
mayora
otros RAV, las instrucciones de la ICC y del SBI slo funcionarn en el bit especificado, por lo que pueden
ser utilizado en los registros que contienen tales Indicadores de estado. Las instrucciones de la ICC y OSE trabajan con REGnistros 0x00 a 0x1F solamente.
Los registros de E / S y control de perifricos se explican en las secciones posteriores.
7.5.1

Uso general de E / S Registros


El ATmega48PA / 88PA / 168PA / 328P contiene tres de uso general de E / S Registros. Estos
registros se pueden utilizar para almacenar cualquier informacin, y son particularmente tiles para almacenar
variables e indicadores de estado global. Uso general de E / S Registros dentro del rango de direcciones 0x00
- 0x1F son directamente poco accesible siguiendo las instrucciones OSE, CBI, SBIS y SBIC.

20
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


7.6

Registro Descripcin

7.6.1

EEARH y EEARL - El Registro EEPROM Direccin


Bit

15

14

13

12

11

10

0x22 (0x42)

EEAR8

EEARH

0x21 (0x41)

EEAR7

EEAR6

EEAR5

EEAR4

EEAR3

EEAR2

EEAR1

EEAR0

EEARL

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

Los bits 15..9 - Res: Bits Reservados


Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Los bits 8..0 - EEAR8..0: EEPROM Direccin


Los registros de direcciones EEPROM - EEARH y EEARL especifican la direccin de EEPROM en el
256/512 / 512 / 1K bytes de espacio EEPROM. Los bytes de datos EEPROM se dirigen linealmente
entre 0 y 255/511/511/1023. El valor inicial de EEAR no est definido. Un valor adecuado debe
ser escrito antes de que pueda acceder a la EEPROM.

EEAR8 es un poco sin utilizar en ATmega48PA y siempre debe estar escrito a cero.
7.6.2

EEDR - El registro de datos EEPROM


Bit

0x20 (0x40)

MSB

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

LSB

EEDR

Los bits 7..0 - EEDR7.0: EEPROM de datos


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

7.6.3

EECR - El registro de control EEPROM


Bit

0x1F (0x3F)

EEPM1

EEPM0

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

EEPE

EERE

R/W

R/W

R/W

MISTERIOSA EEMPE

EECR

Los bits 7..6 - Res: Bits Reservados


Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Los bits 5, 4 - EEPM1 y EEPM0: EEPROM de programacin Modo Bits


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

21
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


se establece, se ignorar cualquier escritura a EEPMn. Durante reset, los bits EEPMn se restablecern a 0b00
a menos que la EEPROM es la programacin ocupado.
Tabla 7-1.

Modo EEPROM Bits

EEPM1

EEPM0

Programacin
Tiempo

3.4 ms

Borrar y escribir en una sola operacin (Operacin Atmica)

1,8 ms

Erase Slo

1,8 ms

Slo escritura

Operacin

Reservado para uso futuro

Bit 3 - MISTERIOSA: EEPROM Listo habilitacin de interrupcin


Escribir MISTERIOSA a uno permite que la EEPROM Listo interrupcin si el bit I en SREG se establece. Escritura
MISTERIOSA a cero deshabilita la interrupcin. La interrupcin Listo EEPROM genera una interaccin constante
rupt cuando se borra EEPE. La interrupcin no se generar durante la escritura de EEPROM o SPM.

Bit 2 - EEMPE: EEPROM Maestro habilitacin de escritura


El bit EEMPE determina si el establecimiento EEPE a uno hace que el EEPROM para escribir.
Cuando se establece EEMPE, estableciendo EEPE dentro de los cuatro ciclos de reloj se escribir datos en la EEPROM en el
direccin seleccionada Si EEMPE es cero, estableciendo EEPE no tendr ningn efecto. Cuando EEMPE ha sido
escrito a uno por software, hardware borra el bit a cero despus de cuatro ciclos de reloj. Vea el
Descripcin de la broca EEPE para un procedimiento de escritura en la EEPROM.

Bit 1 - EEPE: EEPROM Habilitar


La EEPROM Habilitar seal EEPE es la luz estroboscpica de escritura en la EEPROM. Cuando la direccin
y los datos estn correctamente configuradas, el bit EEPE debe estar escrito a uno a escribir el valor en el
EEPROM. El bit EEMPE debe estar escrito a uno antes de un uno lgico se escribe en Eepe, otrosabio no escribir EEPROM tiene lugar. El siguiente procedimiento se debe seguir al escribir
la EEPROM (el orden de los pasos 3 y 4 no es esencial):

1. Espere hasta EEPE se convierte en cero.


2. Espere hasta que SELFPRGEN en SPMCSR se convierte en cero.
3. Escriba la nueva direccin EEPROM para EEAR (opcional).
4. Escribir nuevos datos de la EEPROM a EEDR (opcional).
5. Escribir un uno lgico en el bit EEMPE al escribir un cero a Eepe en EECR.
6. En el plazo de cuatro ciclos de reloj despus de establecer EEMPE, escribe un uno lgico EEPE.
La EEPROM no se puede programar durante una CPU de escritura a la memoria Flash. El software
debe comprobar que la programacin de Flash se ha completado antes de iniciar una nueva escritura de EEPROM.
Paso 2 slo es relevante si el software contiene un gestor de arranque que permite a la CPU para programar el
Flash. Si el flash no est siendo actualizado por la CPU, paso 2 puede omitirse. Ver "Gestor de arranque
Soporte - Leer-While-Escribir Auto-Programacin, ATmega88PA, ATmega168PA y
ATmega328P "en la pgina 277 para obtener ms informacin acerca de la programacin de arranque.

Precaucin: Una interrupcin entre los pasos 5 y 6 har que el ciclo de escritura falla, ya que el
EEPROM Maestro Escriba Habilitar voluntad de tiempo de espera. Si una rutina de interrupcin acceso a la EEPROM es
interrumpiendo otro acceso EEPROM, el EEAR o EEDR Registro sern modificados, haciendo que el
acceso EEPROM interrumpido falle. Se recomienda tener la Bandera Global Interrupt aclar
durante todas las medidas para evitar estos problemas.

22
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Cuando ha transcurrido el tiempo de acceso de escritura, el bit EEPE es despejado por hardware. El soft- usuario
cermica puede consultar este bit y esperar a que un cero antes de escribir el siguiente byte. Cuando EEPE se ha establecido,
la CPU se detiene durante dos ciclos antes de que se ejecute la siguiente instruccin.
Bit 0 - EERE: EEPROM de habilitacin de lectura
La EEPROM Leer seal de habilitacin de EERE es la luz estroboscpica de lectura en la EEPROM. Cuando la correcta
direccin est configurado en el Registro EEAR, el bit EERE se debe escribir en un uno lgico para activar el
EEPROM ledo. El acceso a EEPROM de lectura tiene una instruccin, y el dato solicitado se
disponible de inmediato. Cuando se lee la EEPROM, la CPU se detiene durante cuatro ciclos antes de la
siguiente instruccin se ejecuta.

El usuario debe sondear el bit EEPE antes de iniciar la operacin de lectura. Si una operacin de escritura es en
progreso, no es ni posible leer la EEPROM, ni para cambiar el Registro EEAR.
El oscilador calibrado se utiliza para el tiempo EEPROM accesos. Tabla 7-2 enumera el pro- tpico
tiempo para el acceso EEPROM de la CPU de programacin.
Tabla 7-2.

Tiempo EEPROM Programacin

Smbolo

Nmero de ciclos de calibrado del oscilador RC

Typ Tiempo Programacin

EEPROM
(De CPU)

26368

3.3 ms

Los siguientes ejemplos de cdigo muestran un montaje y una funcin C para escribir en el
EEPROM. Los ejemplos asumen que las interrupciones son controladas (por ejemplo, mediante la desactivacin de interrupciones
globalizacin
aliado) de manera que no se producirn interrupciones durante la ejecucin de estas funciones. Los ejemplos tambin
asumir que no Flash gestor de arranque est presente en el software. Si dicho cdigo est presente, el
Funcin de escritura EEPROM tambin debe esperar a que cualquier comando SPM en curso para terminar.

23
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo


EEPROM_write:
; Esperar a la finalizacin de la escritura previa
SBIC EECR, EEPE
rjmp EEPROM_write
; Establecer direccin (r18: r17) en direccin de registro
fuera EEARH, r18
fuera EEARL, r17
; Escribir datos (R16) al registro de datos
fuera EEDR, r16
; Escribe una lgica para EEMPE
sbi EECR, EEMPE
; Iniciar eeprom escritura estableciendo EEPE
sbi EECR, EEPE
enriar

Cdigo C Ejemplo
vaco EEPROM_write (sin firmar int uiAddress, unsigned char ucData)
{
/ * Esperar a la finalizacin de la escritura previa * /
while (EECR y (1 << EEPE))
;
/ * Establecer direccin y registros de datos * /
EEAR = uiAddress;
EEDR = ucData;
/ * Escribe una lgica para EEMPE * /
EECR | = (1 << EEMPE);
/ * Inicio de EEPROM estableciendo EEPE * /
EECR | = (1 << EEPE);
}

24
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Los siguientes ejemplos de cdigo muestran montaje y funciones C para la lectura de la EEPROM. El ejemples asumen que las interrupciones se controlan de manera que no se produzcan interrupciones durante la ejecucin de
estas funciones.
Cdigo Asamblea Ejemplo
EEPROM_read:
; Esperar a la finalizacin de la escritura previa
SBIC EECR, EEPE
rjmp EEPROM_read
; Establecer direccin (r18: r17) en direccin de registro
fuera EEARH, r18
fuera EEARL, r17
; Iniciar eeprom ledo escribiendo EERE
sbi EECR, EERE
; Lea los datos de registro de datos
r16, EEDR

en
enriar

Cdigo C Ejemplo
unsigned char EEPROM_read (sin firmar int uiAddress)
{
/ * Esperar a la finalizacin de la escritura anterior * /
while (EECR y (1 << EEPE))
;
/ * Establecer registro de direcciones
* /
EEAR = uiAddress;
/ * Iniciar eeprom ledo escribiendo EERE * /
EECR | = (1 << EERE);
/ * Devolver datos de registro de datos * /
volver EEDR;
}

7.6.4

GPIOR2 - Uso general de E / S Registro 2


Bit

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

LSB

GPIOR2

GPIOR1 - Uso general de E / S Registro 1


Bit

0x2A (0x4A)

MSB

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

7.6.6

MSB

Valor inicial

7.6.5

0x2B (0x4B)

LSB

GPIOR1

GPIOR0 - Uso general de E / S El registro 0


Bit

0x1E (0x3E)

MSB

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

LSB

GPIOR0

25
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


8. Sistema de reloj y Opciones
8.1

Sistemas de reloj y su distribucin


Figura 8-1 presenta los principales sistemas de reloj en el AVR y su distribucin. Todos los relojes
no tiene que ser activo en un momento dado. A fin de reducir el consumo de energa, los relojes de los mdulos
no estn siendo utilizados se puede detener mediante el uso de diferentes modos de suspensin, como se describe en "Power
Management
cin y Sleep Modos "en la pgina 39. Los sistemas de reloj se detallan a continuacin.
Figura 8-1.

Reloj Distribucin

Asincrnico
Timer / Contador

General I / O
Mdulos

ADC

CPU Core

RAM

Flash y
EEPROM

clkADC

clkI / S

AVR Reloj
Unidad de Control

clkASY

clkFLASH

Reloj del sistema


Precontador

Reloj Fuente
Reloj
Multiplexor

Timer / Contador
Oscilador

Reloj externo

clkCPU

Cristal
Oscilador

Restablecer Lgica

Watchdog Timer

Reloj Watchdog
Perro guardin
Oscilador

De baja frecuencia
Crystal Oscillator

Calibrado RC
Oscilador

8.1.1

CPU Clock - clkCPU


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

8.1.2

I / O Clock - clkI / S
El reloj de E / S es utilizado por la mayora de los mdulos de E / S, como temporizador / contadores, SPI y USART.
El reloj de E / S tambin es utilizado por el mdulo de interrupcin externa, pero tenga en cuenta que algunos inter- externa
Rupts se detectan por la lgica asncrona, lo que permite tales interrupciones a detectar incluso si el I / O
se detiene el reloj. Tambin tenga en cuenta que la condicin de inicio de deteccin en el mdulo USI se realiza crono
intravenosa cuando se detuvo clkI / S, TWI aborda el reconocimiento en todos los modos de suspensin.

8.1.3

Reloj Flash - clkFLASH


El reloj flash controla el funcionamiento de la interfaz de Flash. El reloj Flash es generalmente simul- activo
neamente con el reloj de la CPU.

26
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


8.1.4

Asncrono Timer Reloj - clkASY


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

8.1.5

ADC Reloj - clkADC


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

8.2

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

Opciones de dispositivo Clocking Select(1)

Dispositivo Opcin Clocking

CKSEL3..0

Bajo oscilador de cristal de energa

1111 - 1000

Full Swing Crystal Oscillator

0111 - 0110

Baja frecuencia Osciladores de cristal

0101 - 0100

Interna 128 kHz oscilador RC

0011

Calibrada oscilador RC interno

0010

Reloj externo

0000

Reservado

0001

Nota:

1. Para todos los fusibles "1" significa no programada, mientras que "0" significa programar.

8.2.1

Por defecto la fuente del reloj


El dispositivo se enva con oscilador RC interno en 8.0MHz y con la CKDIV8 fusible proprogramado, lo que resulta en el reloj del sistema 1.0MHz. La hora de inicio es mxima y el tiempo de espera
perodo habilitado. (CKSEL = "0010", SUT = "10", CKDIV8 = "0"). El ajuste predeterminado garantiza que
todos los usuarios pueden hacer su ajuste de la fuente de reloj deseado usando cualquier interfaz de programacin disponibles.

8.2.2

Reloj Secuencia de arranque


Cualquier fuente de reloj necesita una suficiente VCC para iniciar oscilante y un nmero mnimo de oscilacin
ciclos antes de que pueda considerarse estable.
Para asegurar suficiente VCC, el dispositivo emite un reset interno con un retraso de tiempo de espera (tTOUT) despus
el restablecimiento del dispositivo es liberada por todas las dems fuentes de restablecimiento. "Control y restablecimiento del
sistema" en la pgina 46
describe las condiciones de arranque para el reajuste interno. El retraso (tTOUT) se mide el tiempo de la vigilancia
Oscilador y el nmero de ciclos en la demora es fijado por los bits fusibles SUTx y CKSELx. La

27
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


retrasos seleccionables se muestran en la Tabla 8-2. La frecuencia de la tensin de oscilador es Watchdog
dependiente como se muestra en la "Caractersticas tpicas" en la pgina 326.
Tabla 8-2.

Nmero de ciclos Watchdog Oscilador

Typ Tiempo de espera (VCC = 5.0V) Typ Tiempo de espera (VCC = 3.0V)

Nmero de ciclos

0 ms

0 ms

4.1 ms

4.3 ms

512

65 ms

69 ms

8K (8192)

El objetivo principal de la demora es mantener el AVR en reinicio hasta que se suministra con mnimo VCC. La
retraso no controlar la tensin real y ser necesaria para elegir un retraso ms largo que el
VCC tiempo de subida. Si esto no es posible, un circuito de deteccin de Brown-Out interna o externa debe ser
utilizado. Un circuito de DBO se asegurar suficiente VCC antes de liberar el restablecimiento, y la demora de tiempo de espera
se puede desactivar. Desactivacin de la demora de tiempo de espera sin utilizar un circuito de Brown-Out La deteccin es
no se recomienda.

Se requiere que el oscilador a oscilar por un nmero mnimo de ciclos antes de que el reloj es consideEred estable. Un contador de ondulacin interna monitorea el reloj de salida del oscilador, y mantiene el interior
restablecer activo para un nmero dado de ciclos de reloj. La reposicin se libera y el dispositivo
comenzar a ejecutar. El tiempo de arranque del oscilador recomendada es dependiente del tipo de reloj, y
vara de 6 ciclos de reloj se aplica externamente a 32K ciclos para un cristal de baja frecuencia.

La secuencia de puesta en marcha para el reloj incluye tanto el retardo de tiempo de espera y el tiempo de puesta en marcha
cuando
el dispositivo se pone en marcha a partir de restablecimiento. Al arrancar desde el modo de Apagado de ahorro de energa o, VCC
es
supone que est en un nivel suficiente y slo el tiempo de puesta en marcha est incluido.

8.3

Bajo oscilador de cristal de energa


Botones XTAL1 y XTAL2 son de entrada y salida, respectivamente, de un amplificador inversor que puede ser
configurado para su uso como un oscilador en el chip, como se muestra en Figura 8-2 en la pgina 29. Cualquiera de un cuarzo
cristal o un resonador de cermica pueden ser utilizados.
Este cristal oscilador es un oscilador de baja potencia, con una reduccin de oscilacin de la tensin en la salida XTAL2
poner. Se da el menor consumo de energa, pero no es capaz de conducir otras entradas de reloj, y
puede ser ms susceptible al ruido en entornos ruidosos. En estos casos, consulte la "Full Swing
Crystal Oscillator "en la pgina 30.
C1 y C2 siempre deben ser iguales para ambos cristales y resonadores. El valor ptimo de la
condensadores depende del cristal o resonador en uso, la cantidad de capacitancia parsita, y el
ruido electromagntico del medio ambiente. Algunas pautas iniciales para la eleccin de los condensadores para
utilizar con cristales se dan en Tabla 8-3 en la pgina 29. Para resonadores cermicos, el va- condensador
ues dadas por el fabricante deben ser utilizados.

28
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 8-2.

Conexiones Crystal Oscillator


C2

XTAL2 (TOSC2)

C1

XTAL1 (TOSC1)
GND

El oscilador de baja potencia puede funcionar en tres modos diferentes, cada uno optimizado para una cuencia especfica
rango de frecuencia. El modo de funcionamiento es seleccionada por el CKSEL3..1 fusibles como se muestra en Tabla 8-3
en la pgina 29.

Tabla 8-3.

Cristal de baja potencia Oscilador Modos de funcionamiento(3)

Rango de frecuencia
(MHz)

Rango recomendado para


Los condensadores C1 y C2 (PF)
-

100(2)

0,9-3,0

12 - 22

101

3,0-8,0

12 - 22

110

8,0-16,0

12 - 22

111

0,4 hasta 0,9

Notas:

CKSEL3..1(1)

1. Esta es la configuracin CKSEL Recommanded para los rangos de diferencia frenquency.


2. Esta opcin no se debe utilizar con cristales, slo con resonadores de cermica.
3. Si la frecuencia de 8 MHz excede la especificacin del dispositivo (depende de VCC), el CKDIV8
Fuse se puede programar con el fin de dividir la frecuencia interna por 8. Se debe garantizar
que el reloj dividido resultante cumple con la especificacin de frecuencia del dispositivo.

El CKSEL0 Fusible junto con los fusibles SUT1..0 seleccionar los tiempos de puesta en marcha como se muestra en Mesa
8-4.
Tabla 8-4.

Puesta en marcha Times por el oscilador de cristal de baja potencia Seleccin Reloj

Oscilador Fuente /
Condiciones de alimentacin

Puesta en marcha Tiempo deRetardo adicional


Energa-abajo y
de reinicio
De ahorro de energa
(VCC = 5.0V)

CKSEL0

SUT1..0

Resonador de cermica, rpido


el aumento del poder

258 CK

14CK + 4,1 ms(1)

00

Resonador cermico, lentamente


el aumento del poder

258 CK

14CK + 65 ms(1)

01

Resonador cermico, DBO


habilitado

1K CK

10

Resonador de cermica, rpido


el aumento del poder

1K CK

14CK + 4,1 ms(2)

11

Resonador cermico, lentamente


el aumento del poder

1K CK

14CK + 65 ms(2)

00

14CK(2)

29
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 8-4.

Los tiempos de puesta en marcha para el Poder Crystal Oscillator Seleccin Menor Reloj (Continuacin)

Oscilador Fuente /
Condiciones de alimentacin

CKSEL0

SUT1..0

01

Crystal Oscillator, DBO


habilitado

16K CK

Crystal Oscillator, rpido


el aumento del poder

16K CK

14CK + 4,1 ms

10

Crystal Oscillator, lentamente


el aumento del poder

16K CK

14CK + 65 ms

11

Notas:

8.4

Puesta en marcha Tiempo deRetardo adicional


Energa-abajo y
de reinicio
De ahorro de energa
(VCC = 5.0V)
14CK

1. Estas opciones slo deben utilizarse cuando no est funcionando cerca de la frecuencia mxima de la
dispositivo, y slo si la estabilidad de frecuencia en el arranque no es importante para la aplicacin. Estos
opciones no son adecuados para cristales.
2. Estas opciones son para uso con resonadores cermicos y se asegurar la estabilidad de frecuencia
en el arranque. Tambin se pueden utilizar con cristales cuando no operan cerca de la fre- mximo
cuencia del dispositivo, y si la estabilidad de frecuencia en el arranque no es importante para la aplicacin.

Full Swing Crystal Oscillator


Botones XTAL1 y XTAL2 son de entrada y salida, respectivamente, de un amplificador inversor que puede ser
configurado para su uso como un oscilador en el chip, como se muestra en Figura 8-2 en la pgina 29. Cualquiera de un cuarzo
cristal o un resonador de cermica pueden ser utilizados.
Este cristal oscilador es un oscilador pleno apogeo, con swing-carril a carril en la salida XTAL2. Es
til para conducir otras entradas de reloj y en entornos ruidosos. El consumo de corriente es
ms alto que el "El poder de Cristal oscilador de baja" en la pgina 28. Tenga en cuenta que el Full Swing Crystal
Oscilador slo funcionar para VCC = 2.7 a 5.5 voltios.
C1 y C2 siempre deben ser iguales para ambos cristales y resonadores. El valor ptimo de la
condensadores depende del cristal o resonador en uso, la cantidad de capacitancia parsita, y el
ruido electromagntico del medio ambiente. Algunas pautas iniciales para la eleccin de los condensadores para
utilizar con cristales se dan en Tabla 8-6 en la pgina 31. Para resonadores cermicos, el va- condensador
ues dadas por el fabricante deben ser utilizados.

El modo de funcionamiento es seleccionada por el CKSEL3..1 fusibles como se muestra en Tabla 8-5.
Tabla 8-5.

Full Swing modos de funcionamiento Crystal Oscillator

Rango de frecuencia(1)
(MHz)
0,4-20
Notas:

Rango recomendado para


Los condensadores C1 y C2 (PF)
12 - 22

CKSEL3..1
011

1. Si la frecuencia de 8 MHz excede la especificacin del dispositivo (depende de VCC), el CKDIV8


Fuse se puede programar con el fin de dividir la frecuencia interna por 8. Se debe garantizar
que el reloj dividido resultante cumple con la especificacin de frecuencia del dispositivo.

30
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 8-3.

Conexiones Crystal Oscillator

C2

XTAL2 (TOSC2)

C1

XTAL1 (TOSC1)
GND

Tabla 8-6.

Puesta en marcha Times por el Full Swing Crystal Oscillator Seleccin Reloj

Oscilador Fuente /
Condiciones de alimentacin

Puesta en marcha Tiempo deRetardo adicional


Energa-abajo y
de reinicio
De ahorro de energa
(VCC = 5.0V)

CKSEL0

SUT1..0

Resonador de cermica, rpido


el aumento del poder

258 CK

14CK + 4,1 ms(1)

00

Resonador cermico, lentamente


el aumento del poder

258 CK

14CK + 65 ms(1)

01

Resonador cermico, DBO


habilitado

1K CK

10

Resonador de cermica, rpido


el aumento del poder

1K CK

14CK + 4,1 ms(2)

11

Resonador cermico, lentamente


el aumento del poder

1K CK

14CK + 65 ms(2)

00

Crystal Oscillator, DBO


habilitado

16K CK

01

Crystal Oscillator, rpido


el aumento del poder

16K CK

14CK + 4,1 ms

10

Crystal Oscillator, lentamente


el aumento del poder

16K CK

14CK + 65 ms

11

Notas:

14CK(2)

14CK

1. Estas opciones slo deben utilizarse cuando no est funcionando cerca de la frecuencia mxima de la
dispositivo, y slo si la estabilidad de frecuencia en el arranque no es importante para la aplicacin. Estos
opciones no son adecuados para cristales.
2. Estas opciones son para uso con resonadores cermicos y se asegurar la estabilidad de frecuencia
en el arranque. Tambin se pueden utilizar con cristales cuando no operan cerca de la fre- mximo
cuencia del dispositivo, y si la estabilidad de frecuencia en el arranque no es importante para la aplicacin.

31
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

8.5

Baja frecuencia Osciladores de cristal


La baja frecuencia Osciladores de cristal se ha optimizado para su uso con un cristal de reloj de 32,768 kHz.
Al seleccionar cristales, capasitance carga y Resistencia serie equivalente de cristal, ESR
deben tenerse en consideracin. Ambos valores son especificados por el fabricante de cristal.
ATmega48PA / 88PA / 168PA / 328P oscilador est optimizado para un consumo muy bajo, y
As, cuando la seleccin de cristales, ver Tabla 8-7 en la pgina 32 para las recomendaciones mximas ESR en
6.5 pF, 9,0 pF y 12,5 cristales pF

Tabla 8-7.

Recomendacin mximo ESR para 32.768 kHz oscilador de cristal


Max ESR [k](1)

Crystal CL (PF)

Nota:

6.5

75

9.0

65

12.5

30

1. Mxima ESR es un valor tpico basado en la caracterizacin

La baja frecuencia Osciladores de cristal ofrece una capacidad de carga interna en cada pin TOSC
como se especifica en el Tabla 8-8 en la pgina 32.
Tabla 8-8.

Capacitancia de baja frecuencia Osciladores de cristal


Dispositivo

32 kHz Osc. Tipo

ATmega48PA / 88PA / 168PA / 328P

Cap (XTAL1 / Tosc1)

Cap (XTAL2 / Tosc2)

Osc Sistema.

18 pF

8 pF

Timer Osc.

18 pF

8 pF

La capacitancia externa (C) que se necesita en cada pin TOSC se puede calcular mediante el uso de:
C=2 CL -C s

donde CL es la capacitancia de carga para un cristal de 32,768 kHz especificado por el proveedor cristal y CS
es la capacidad parsita total para un pin TOSC.
Cristales que especifican capacitancia de carga (CL) ms alto que las dadas en el Tabla 8-8 en la pgina
32, requieren condensadores externos aplicados como se describe en Figura 8-2 en la pgina 29.
La baja frecuencia Osciladores de cristal debe ser seleccionado mediante el establecimiento de la CKSEL Corchos para "0110" o
"0111", como se muestra en Tabla 8-10. Los tiempos de arranque son determinados por los fusibles SUT como se muestra en
Tabla 8-9.
Tabla 8-9.
SUT1..0
00

Puesta en marcha Times por la baja frecuencia Osciladores de cristal Seleccin del Reloj
Retardo adicional de Reset (VCC = 5.0V)
4 CK

Recomendaciones de uso
Potencia en ascenso rpido o BOD habilitadas

01

4 CK + 4,1 ms

Poco a poco el aumento del poder

10

4 CK + 65 ms

Frecuencia estable en el arranque

11

Reservado

32
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 8-10.

Puesta en marcha Times por la baja frecuencia Osciladores de cristal Seleccin del Reloj
Puesta en marcha Tiempo de
Energa-abajo y de ahorro de energa

CKSEL3..0
0100(1)

1K CK

0101

32K CK

Nota:

8.6

Recomendaciones de uso

Frecuencia estable en el arranque

1. Esta opcin slo debe utilizarse si la estabilidad de frecuencia en el arranque no es importante para la
aplicacin

Calibrada oscilador RC interno


Por defecto, el oscilador RC interno proporciona un reloj de 8,0 MHz aproximada. Aunque la tensin
y dependiente de la temperatura, este reloj puede ser calibrado con mucha precisin por el usuario. Ver Mesa
28-1 en la pgina 317 para ms detalles. El dispositivo se enva con el CKDIV8 Fusible programado.
Ver "Sistema de reloj de divisor" en la pgina 35 para ms detalles.
Este reloj puede ser seleccionado como el reloj del sistema mediante la programacin de la CKSEL fusibles como se muestra en
Tabla 8-11. Si se selecciona, que operar sin componentes externos. Durante restablecimiento, cargas de hardware
el valor de calibracin preprogramado en el Registro OSCCAL y por lo tanto automticamente calibrates el oscilador RC. La exactitud de esta calibracin se muestra como la calibracin de fbrica en
Tabla 28-1 en la pgina 317.

Al cambiar el registro OSCCAL de SW, ver "OSCCAL - Oscilador Registro calibracin" en la


pgina 37, es posible obtener una precisin de la calibracin ms alto que mediante el uso de la calibracin de fbrica.
La exactitud de esta calibracin se muestra como la calibracin de usuario en Tabla 28-1 en la pgina 317.
Cuando se utiliza este oscilador cuando el reloj del chip, el Watchdog oscilador seguir siendo utilizado para la
Temporizador de vigilancia y para el restablecimiento Tiempo de espera. Para obtener ms informacin sobre la calipreprogramado
valor bracin, consulte la seccin "Byte de calibracin" en la pgina 298.
Tabla 8-11.

Notas:

Calibrada interna oscilador RC Modos de funcionamiento


Rango de frecuencia(2) (MHz)

CKSEL3..0

7.3 a 8.1

0010(1)

1. El equipo se suministra con esta opcin seleccionada.


2. Si la frecuencia de 8 MHz excede la especificacin del dispositivo (depende de VCC), el CKDIV8
Fuse se puede programar con el fin de dividir la frecuencia interna de 8.

Cuando se selecciona este oscilador, tiempos de arranque son determinados por los fusibles SUT como se muestra en
Tabla 8-12 en la pgina 33.
Tabla 8-12.

Puesta en marcha veces para la seleccin calibrado del reloj interno RC Oscilador

Condiciones de alimentacin

Puesta en marcha Tiempo de Power- Retardo adicional de


abajo y de ahorro de energa
Reset (VCC = 5.0V)
14CK(1)

SUT1..0

BOD habilitado

6 CK

Potencia en ascenso rpido

6 CK

14CK + 4,1 ms

01

Poco a poco el aumento del poder

6 CK

14CK + 65 ms(2)

10

Reservado
Nota:

00

11

1. Si se ha programado el fusible RSTDISBL, esta vez la puesta en marcha se incrementar a


14CK + 4,1 ms para asegurar el modo de programacin se pueden introducir.
2. El equipo se suministra con esta opcin seleccionada.

33
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


8.7

128 kHz oscilador interno


El oscilador interno 128 kHz es un oscilador de baja potencia que proporciona un reloj de 128 kHz. El cuencia
cuencia es nominal a 3V y 25 C. Este reloj puede ser selecto como el reloj del sistema
programacin de los fusibles CKSEL a "11" como se muestra en Tabla 8-13.
Tabla 8-13.

128 kHz oscilador interno Modos de funcionamiento


Frecuencia nominal(1)

CKSEL3..0

128 kHz
Nota:

0011

1. Obsrvese que el oscilador 128 kHz es una fuente de reloj de potencia muy baja, y no est diseado para alta
exactitud.

Cuando se selecciona esta fuente de reloj, tiempos de arranque son determinados por los fusibles SUT como se muestra en
Tabla 8-14.
Tabla 8-14.

Puesta en marcha Times por el 128 kHz oscilador interno

Condiciones de alimentacin

Puesta en marcha Tiempo de Power- Retardo adicional de


abajo y de ahorro de energa
Reajustar

BOD habilitado

6 CK

14CK(1)

00

Potencia en ascenso rpido

6 CK

14CK + 4 ms

01

Poco a poco el aumento del poder

6 CK

14CK + 64 ms

10

Reservado
Nota:

8.8

SUT1..0

11

1. Si se ha programado el fusible RSTDISBL, esta vez la puesta en marcha se incrementar a


14CK + 4,1 ms para asegurar el modo de programacin se pueden introducir.

Reloj externo
Para accionar el dispositivo desde una fuente de reloj externa, XTAL1 debe ser impulsada como se muestra en Figura
8-4 en la pgina 34. Para ejecutar el dispositivo en un reloj externo, el CKSEL fusibles deben programarse
a "0000" (vase Tabla 8-15).
Tabla 8-15.

Crystal Oscillator Frecuencia de reloj


Frecuencia

CKSEL3..0

0-20 MHz

Figura 8-4.

0000

Configuracin de la unidad de reloj externo

NC

EXTERNO
RELOJ
SEAL

XTAL2

XTAL1

GND

Cuando se selecciona esta fuente de reloj, tiempos de arranque son determinados por los fusibles SUT como se muestra en
Tabla 8-16.

34
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 8-16.

Puesta en marcha Times por la Seleccin Reloj externo

Condiciones de alimentacin

Puesta en marcha Tiempo de Power- Retardo adicional de


abajo y de ahorro de energa
Reset (VCC = 5.0V)

SUT1..0

BOD habilitado

6 CK

14CK

Potencia en ascenso rpido

6 CK

14CK + 4,1 ms

01

Poco a poco el aumento del poder

6 CK

14CK + 65 ms

10

Reservado

00

11

Cuando se aplica un reloj externo, se requiere para evitar cambios repentinos en el reloj aplicada cuencia
cia para garantizar un funcionamiento estable de la MCU. Una variacin en la frecuencia de ms de 2% a partir de
un ciclo de reloj a la siguiente puede conducir a un comportamiento impredecible. Si los cambios de ms del 2% es
necesario, asegrese de que el MCU se mantiene en Restauracin durante los cambios.
Tenga en cuenta que el sistema de reloj de divisor se puede utilizar para implementar los cambios de tiempo de ejecucin de la
interna
frecuencia de reloj sin dejar de garantizar un funcionamiento estable. Referirse a "Sistema de reloj de divisor" en la pgina
35 para ms detalles.

8.9

Clock Output Buffer


El dispositivo puede emitir el reloj del sistema en el pin CLKO. Para habilitar la salida, el CKOUT
Fusible tiene que ser programado. Este modo es adecuado cuando se utiliza el reloj de chips para conducir otra cirCuits en el sistema. El reloj tambin se emitir en el reset y el normal funcionamiento de E / S
pin se anular cuando se programa el fusible. Cualquier fuente de reloj, incluyendo el RC interno
Oscilador, se puede seleccionar cuando el reloj se emite en CLKO. Si el reloj del sistema de divisor es
usado, es el reloj del sistema dividido que se emite.

8.10

Timer / Contador Oscilador


ATmega48PA / 88PA / 168PA / 328P utiliza el mismo oscilador de cristal para el oscilador de baja frecuencia
y Timer / Contador Oscilador. Ver "Baja Frecuencia Oscilador de Cristal" en la pgina 32 para ms detalles sobre
los requisitos del oscilador y de cristal.
ATmega48PA / 88PA / 168PA / 328P compartir los Timer / Contador Oscilador Pins (TOSC1 y TOSC2)
con XTAL1 y XTAL2. Cuando se utiliza el temporizador / contador oscilador, el reloj del sistema tiene que ser
cuatro veces la frecuencia del oscilador. Debido a esto y al intercambio de pines, el Timer / Contador Oscilador
slo se puede utilizar cuando el calibrada interna oscilador RC se selecciona como fuente de reloj del sistema.
La aplicacin de una fuente externa de reloj para TOSC1 se puede hacer si EXTCLK en el Registro ASSR es
escrito a uno lgico. Ver "Asynchronous Operacin del Timer / Contador2" en la pgina 155 Para mayor
Descripcin sobre la seleccin de reloj externo como entrada en lugar de un reloj de cristal de 32,768 kHz.

8.11

Sistema Reloj Precontador


El ATmega48PA / 88PA / 168PA / 328P tiene un prescaler reloj del sistema, y el reloj del sistema puede
ser dividida por el establecimiento de la "CLKPR - Reloj preescala registro" en la pgina 377. Esta caracterstica puede ser
usado para disminuir la frecuencia de reloj del sistema y el consumo de energa cuando el requisito
de la potencia de procesamiento es baja. Esto se puede utilizar con todas las opciones de fuente de reloj, y que afectar a la
frecuencia de reloj de la CPU y todos los perifricos sincrnicos. clkI / S, clkADC, clkCPU y clkFLASH
se dividen por un factor como se muestra en Tabla 28-3 en la pgina 318.

35
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Al cambiar entre configuraciones prescaler, el reloj del sistema Precontador asegura que no
fallos se produce en el sistema de reloj. Tambin asegura que no de frecuencia intermedia es mayor que
ni la frecuencia de reloj correspondiente a la configuracin anterior, ni la frecuencia de reloj pondiente
pondiente a la nueva configuracin. El contador de ondulacin que implementa el prescaler se ejecuta en el
frecuencia del reloj dividida, que puede ser ms rpido que la frecuencia de reloj de la CPU. Por lo tanto,
no es posible determinar el estado de la prescaler - incluso si fuera legible, y la exacta
el tiempo que se tarda en cambiar de una divisin de reloj a la otra no se puede predecir exactamente. Desde
tiempo de los valores CLKPS se escriben, se tarda entre T1 + T2 y T1 + 2 * T2 antes de la nueva
frecuencia de reloj est activo. En este intervalo, se producen 2 bordes de reloj activos. Aqu, T1 es la preperodo de reloj ante-, y T2 es el perodo correspondiente a la nueva configuracin prescaler.

Para evitar cambios involuntarios de frecuencia de reloj, un procedimiento de escritura especial debe befollowed a
cambiar los bits de CLKPS:
1. Escribe el bit Reloj Precontador Cambio Habilitar (CLKPCE) a uno y todos los dems bitsin
CLKPR a cero.
2. Dentro de los cuatro ciclos, escribir el valor deseado para CLKPS al escribir un cero a CLKPCE.
Las interrupciones se deben desactivar cuando cambie la configuracin prescaler para asegurarse de que el procedimiento de
escritura es
no interrumpido.

36
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

8.12

Registro Descripcin

8.12.1

OSCCAL - Oscilador de calibracin Registro


Bit
(0x66)
Lectura / Escritura

CAL7

CAL6

CAL5

CAL4

CAL3

CAL2

CAL1

CAL0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

OSCCAL

Dispositivo Valor de calibracin especfica

Los bits 7..0 - CAL7..0: Oscilador Valor de calibracin


La calibracin Registro oscilador se utiliza para recortar el oscilador RC calibrada interna a
eliminar las variaciones de proceso de la frecuencia del oscilador. Un valor de calibracin preprogramado es
escrito automticamente a este registro durante el restablecimiento de chips, dando a la frecuencia de calibrado de fbrica como
especificado en Tabla 28-1 en la pgina 317. El software de aplicacin puede escribir este registro a cambiar
la frecuencia del oscilador. El oscilador puede ser calibrado a las frecuencias como se especifica en Tabla 281 en la pgina 317. Calibracin fuera de ese rango no est garantizada.

Tenga en cuenta que este oscilador se utiliza para EEPROM tiempo y Flash accesos de escritura, y estos escribir
veces se vern afectados en consecuencia. Si la EEPROM o Flash se escriben, no calibre a ms
de 8,8 MHz. De lo contrario, la EEPROM o Flash escritura pueden fallar.
El bit CAL7 determina el rango de funcionamiento del oscilador. Al activar este bit a 0 da la
ms bajo rango de frecuencia, el establecimiento de este bit a 1 da el rango de frecuencia ms alta. Los dos cuencia
rangos de fre- se solapan, en otras palabras, un ajuste de OSCCAL = 0x7F da una mayor
frecuencia que OSCCAL = 0x80.
Los bits CAL6..0 se utilizan para sintonizar la frecuencia dentro del rango seleccionado. Un valor de 0x00
da la frecuencia ms baja en ese rango, y un entorno de 0x7F da la frecuencia ms alta de la
gama.

8.12.2

CLKPR - Reloj preescala Registro


Bit
(0x61)
Lectura / Escritura
Valor inicial

CLKPCE

CLKPS3

CLKPS2

CLKPS1

CLKPS0

R/W

R/W

R/W

R/W

R/W

CLKPR

Ver Bit Descripcin

Bit 7 - CLKPCE: Reloj Precontador Cambio Habilitar


El bit CLKPCE debe estar escrito a uno lgico para permitir el cambio de los bits CLKPS. El CLKPCE
bit slo se actualiza cuando los otros bits en CLKPR se escriben simultneamente a cero. CLKPCE es
despejado por hardware cuatro ciclos despus de que se escribe o cuando los bits CLKPS se escribe. Reescribiendo la
Poco CLKPCE dentro de este perodo de tiempo de espera ni dnde se extiende el perodo de tiempo de espera, ni borrar la
Poco CLKPCE.

Los bits 3..0 - CLKPS3..0: Reloj de divisor bits de seleccin de 3 - 0


Estos bits definen el factor de divisin entre la fuente de reloj seleccionado y el sistema interno
reloj. Estos bits pueden escribirse en tiempo de ejecucin para variar la frecuencia de reloj para satisfacer la aplicacin
requisitos. Como el divisor divide la entrada de reloj maestra a la MCU, la velocidad de sincronizacin de todos
perifricos nous se reduce cuando se utiliza un factor de divisin. Los factores de divisin se dan en
Tabla 8-17 en la pgina 38.

37
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


El CKDIV8 fusible determina el valor inicial de los bits de CLKPS. Si CKDIV8 es no programado,
los bits CLKPS se restablecern a "0000". Si CKDIV8 est programada, CLKPS bits se restablecen a
"0011", que da un factor de divisin de 8 en el arranque. Esta caracterstica se debe utilizar si el reloj seleccionado
fuente tiene una frecuencia mayor que la frecuencia mxima del dispositivo en el presente operativo
ing condiciones. Tenga en cuenta que cualquier valor puede ser escrito a los bits CLKPS independientemente de la CKDIV8
Ajuste del fusible. El software de aplicacin debe garantizar que un factor de divisin suficiente se elige si
la fuente de reloj seleccionada tiene una frecuencia superior a la frecuencia mxima del dispositivo en
las presentes condiciones de funcionamiento. El dispositivo se enva con el CKDIV8 Fusible programado.

Tabla 8-17.

Reloj Precontador Select

CLKPS3

CLKPS2

CLKPS1

CLKPS0

Reloj con factor de divisin

16

32

64

128

256

Reservado

Reservado

Reservado

Reservado

Reservado

Reservado

Reservado

38
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

9. Administracin de energa y modos de espera


Los modos de suspensin permiten la aplicacin de cerrar los mdulos no utilizados en el MCU, con el consiguiente ahorro
de energa. El AVR ofrece varios modos de suspensin que permite al usuario adaptar el consumo de energa
cin a los requisitos de la aplicacin.
Cuando est activado, el Detector Brown-out (BOD) supervisa activamente la tensin de alimentacin durante
los perodos de sueo. Para ahorrar an ms el poder, es posible desactivar la DBO en algunos modos de suspensin.
Ver "BOD Desactivar" en la pgina 40 para ms detalles.

9.1

Modos de espera
Figura 8-1 en la pgina 26 se presentan los diferentes sistemas de reloj en la
ATmega48PA / 88PA / 168PA / 328P, y su distribucin. La cifra es til en la seleccin de un
el modo de suspensin apropiado. Tabla 9-1 muestra los diferentes modos de suspensin, a su paso por las fuentes de DBO
desactivar la capacidad.

Tabla 9-1.

Dominios de reloj activos y fuentes de despertador en los distintos modos de espera.


Activo dominios de reloj

Osciladores

Wake-up Fuentes

Principal Timer
INT1, INT0
clocksourceOscillatorEnabl
andPin Cambio
TWI
Activado ed
AddressMatch
clkCPU

clkFLASH
clkIO

SPM /
EEPROMReady

SoftwareBOD
Desactivar
Otras E / S

Timer2

clkADCclkASY

ADC WDT

Modo de reposo
Ocioso

ADC Noise
Reduccin

X(2)

X(2)

X(3)

X(2)

X(3)

X(3)

X(3)

X(3)

Energa-abajo
De ahorro de energa

Colocarse(1)
Extendido
Colocarse
Notas:

X(2)
X

X(2)

X(2)

1. Slo recomend con cristal o resonador externo seleccionado como fuente de reloj.
2. Si el temporizador / Contador2 se ejecuta en modo asncrono.
3. Para INT1 y INT0, slo de interrupcin de nivel.

Para entrar en cualquiera de los seis modos de suspensin, el bit SE en SMCR debe estar escrito a uno lgico y un
Instruccin SLEEP debe ser ejecutado. Los bits SM2, SM1, y SM0 en el Registro SMCR seleccionar
que el modo de reposo (Idle, Reduccin de Ruido ADC, Energa-abajo, de ahorro de energa, de espera, o Extended
En espera) se activar por la instruccin SLEEP. Ver Tabla 9-2 en la pgina 44 para un resumen.
Si se produce una interrupcin habilitado mientras que la MCU est en un modo de reposo, la MCU se despierta. La MCU
se detiene entonces durante cuatro ciclos en Adems del tiempo de puesta en marcha, se ejecuta la rutina de interrupcin, y
reanuda la ejecucin de la instruccin siguiente SLEEP. El contenido del Registro de archivos y
SRAM son inalterada cuando el dispositivo se despierta de su sueo. Si se produce un reset durante el modo de reposo,
el MCU se despierta y se ejecuta desde el reinicio del vector.

39
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


9.2

BOD Desactivar
Cuando el detector de Brown-out (BOD) est habilitado de BODLEVEL fusiona, Tabla 27-7 en la pgina 296,
la DBO est monitoreando activamente la tensin de alimentacin durante un perodo de sueo. Para ahorrar energa, se
es posible desactivar la DBO por software para algunos de los modos de suspensin, ver Tabla 9-1 en la pgina
39. El consumo de energa en modo inactivo ser entonces al mismo nivel que cuando BOD es globalmente
deshabilitado por fusibles. Si BOD est desactivado en el software, la funcin DBO se apaga inmediatamente
despus de entrar en el modo de suspensin. Al despertar del sueo, BOD se activa automticamente de nuevo.
Esto garantiza un funcionamiento seguro en caso de que el nivel VCC ha disminuido durante el perodo de sueo.

Cuando el BOD ha sido desactivado, la hora del despertador del modo de suspensin ser de aproximadamente 60
microsiemens para asegurar que el BOD est funcionando correctamente antes de la MCU contina la ejecucin del cdigo.
Desactivar el BOD es controlado por el bit 6, BOD (BOD del sueo) en el Registro de Control MCUCR, ver
"MCUCR - MCU Registro de control" en la pgina 44. Escribir este bit a uno apaga la DBO en nente
los modos de suspensin perti-, mientras que un cero en este bit DBO mantiene activo. Ajuste por defecto mantiene BOD activo,
es decir bods ponen a cero.
La escritura en el bit bods es controlado por una secuencia temporizada y un bit de habilitacin, ver "MCUCR MCU Registro de control "en la pgina 44.

9.3

Modo inactivo
Cuando los bits SM2..0 se escriben en 000, la instruccin SLEEP hace que el MCU entrar Inactivo
modo, detener el CPU, pero permitiendo que el SPI, USART, Comparador Anlogo, ADC, Serial de 2 hilos
Interface, Timer / contadores, Watchdog, y el sistema de interrupcin para continuar operando. Este sueo
modo bsicamente detiene clkCPU y clkFLASH, al tiempo que permite a los otros relojes que se ejecuten.
La pantalla de inicio permite al MCU para despertar de las interrupciones provocadas externos como internos
unos como los Timer Overflow y USART Transmitir interrupciones completas. Si despertador de la
No se requiere comparador analgico interrupcin, el comparador analgico puede ser alimentado por
establecer el bit ACD en Comparador de control analgico y Registro de Estado - ACSR. Esta voluntad
reducir el consumo de energa en modo de espera. Si el ADC est habilitado, una conversin se inicia automticamente
camente cuando se entra en este modo.

9.4

Modo Reduccin de Ruido ADC


Cuando los bits SM2..0 se escriben en 001, la instruccin SLEEP hace que el MCU entrar ADC
El modo de reduccin de ruido, parando la CPU, pero permitiendo que el ADC, las interrupciones externas, el 2reloj direccin de interfaz Serial alambre, Timer / Contador2(1)Y el Watchdog seguir funcionando
(Si est activado). Este modo de reposo bsicamente detiene clkI / O, clkCPU, y clkFLASH, permitiendo al mismo tiempo la otra
relojes para correr.

Esto mejora el ambiente de ruido para la ADC, lo que permite mediciones de mayor resolucin. Si
el ADC est habilitado, una conversin se inicia automticamente cuando se entra en este modo. Aparte de la
Conversin ADC interrupcin completa, slo un reinicio externo, un restablecimiento del sistema Watchdog, un
Watchdog de interrupcin, un reinicio Brown-out rpido, de 2 hilos coincidencia de direccin de interfaz serie, un
Timer / Contador2 interrumpir, una interrupcin listo SPM / EEPROM, una interrupcin de nivel externo en INT0
o INT1 o una interrupcin de cambio de pin puede despertar el MCU desde el modo de reduccin de ruido ADC.

Nota:

1. Timer / Contador2 slo sigue funcionando en modo asncrono, consulte "8-bit del temporizador / Contador2 con
PWM y asincrnica operacin "en la pgina 144 para ms detalles.

40
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


9.5

Modo de apagado
Cuando los bits SM2..0 se escriben en 010, la instruccin SLEEP hace que el MCU entrar PowerModo de abajo. En este modo, el oscilador externo se detuvo, mientras que las interrupciones externas, la 2reloj direccin de la interfaz en serie de alambre, y la vigilancia siguen operando (si est activado). Slo una
Restablecer externa, un restablecimiento del sistema Watchdog, un perro guardin de interrupcin, un reinicio Brown-out rpido,
de 2 hilos
Partido de la interfaz en serie de direcciones, una interrupcin de nivel externo en INT0 o INT1, o un cambio pin
interrumpir puede despertar la MCU. Este modo de reposo bsicamente detiene todos los relojes generados, lo que permite
funcionamiento de los mdulos asncronos solamente.
Tenga en cuenta que si una interrupcin activada nivel se utiliza para despertar del modo Energa-abajo, la cambi
nivel debe ser mantenida durante un cierto tiempo para despertar a la MCU. Referirse a "Las interrupciones externas" en la pgina
70
para ms detalles.
Al despertar del modo Energa-abajo, hay un retraso de la condicin de alerta se produce
hasta que el despertador se haga efectiva. Esto permite que el reloj se reinicie y se estabiliza despus
haber sido detenido. El perodo de atencin se define por los mismos Fusibles CKSEL que definen la
Restablecer perodo de tiempo de espera, como se describe en "Fuentes de reloj" en la pgina 27.

9.6

Modo de ahorro de energa


Cuando los bits SM2..0 se escriben en 011, la instruccin SLEEP hace que el MCU entrar PowerModo de ahorro. Este modo es idntico al de la Energa-abajo, con una excepcin:
Si el temporizador / Contador2 est habilitada, que se mantendr en funcionamiento durante el sueo. El dispositivo puede
despertar
ya sea Timer Overflow o salida Compara evento de temporizador / Contador2 si el correspondiente
Timer / Contador2 interrumpir bits de habilitacin estn establecidos en TIMSK2, y la interrupcin Global Enable bit
SREG se establece.
Si el temporizador / Contador2 no se est ejecutando, se recomienda el modo Power-abajo en lugar de ahorro de energa
de modo.
El temporizador / Contador2 puede ser ajustado de forma sincrnica y asincrnica en ahorro de energa
de modo. Si el temporizador / Contador2 no est usando el reloj asncrono, el Timer / Contador Oscilador es
detenido durante el sueo. Si el temporizador / Contador2 no est usando el reloj sncrono, la fuente de reloj es
detenido durante el sueo. Tenga en cuenta que incluso si el reloj sncrono est ejecutando en ahorro de energa, esto
reloj slo est disponible para el temporizador / Contador2.

9.7

Modo de espera
Cuando los bits SM2..0 son 110 y una opcin de cristal de reloj / resonador externo se selecciona, la
Instruccin SLEEP hace que el MCU entrar en el modo de espera. Este modo es idntico al de la Energa-abajo
con la excepcin de que el oscilador se mantiene en funcionamiento. Desde el modo de espera, el dispositivo se activa
en seis ciclos de reloj.

9.8

El modo de espera extendido


Cuando los bits SM2..0 son 111 y una opcin de cristal de reloj / resonador externo se selecciona, la
Instruccin SLEEP hace que el MCU entrar en el modo de espera extendido. Este modo es idntica a
De ahorro de energa con la excepcin de que el oscilador se mantiene en funcionamiento. En el modo standby extendido
modo, el dispositivo se despierta en seis ciclos de reloj.

41
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

9.9

Poder Reduccin Registro


La Reduccin de Registro de alimentacin (PRR), consulte "PRR - Potencia Reduccin registro" en la pgina 45, proVides un mtodo para detener el reloj a los perifricos individuales para reducir el consumo de energa. La
estado actual de la perifrica se congela y los registros de E / S no se puede leer o escribir.
Recursos utilizados por el perifrico al parar el reloj permanecer ocupada, de ah la
perifrica debe en la mayora de los casos se desactivar antes de detener el reloj. El despertar de un mdulo,
que se realiza en la limpieza de la broca en PRR, pone el mdulo en el mismo estado que antes de la parada.

Apagado del mdulo se puede utilizar en el modo de espera y el modo activo para reducir significativamente la general
el consumo de energa. En todos los dems modos de suspensin, el reloj ya est detenido.

9.10

Reducir al mnimo el consumo de energa


Hay varias posibilidades a considerar cuando se trata de reducir al mnimo el consumo de energa en un
AVR sistema controlado. En general, los modos de suspensin deben ser utilizados tanto como sea posible, y el
modo de suspensin se debe seleccionar de manera que el menor nmero posible de funciones del dispositivo son operativo
ing. Todas las funciones que no necesite deben ser desactivados. En particular, los siguientes mdulos pueden necesitar
una consideracin especial cuando se trata de lograr el menor consumo de energa posible.

9.10.1

Convertidor analgico a digital


Si se activa, la ADC se habilitar en todos los modos de suspensin. Para ahorrar energa, el ADC debe ser dispersonas con capacidades antes de entrar en cualquier modo de suspensin. Cuando el ADC se apaga y se enciende de nuevo, el siguiente
conversin ser una conversin extendida. Referirse a "Analog-to-Digital Converter" en la pgina 250
para ms detalles sobre el funcionamiento del ADC.

9.10.2

Comparador analgico
Al entrar en el modo de espera, el comparador analgico debe desactivarse si no se utiliza. Al entrar
Modo Reduccin de Ruido ADC, Comparador analgico debe estar deshabilitada. En otros modos de suspensin,
Comparador analgico se desactiva automticamente. Sin embargo, si el comparador analgico est configurado
utilizar la referencia de tensin interna como entrada, el comparador analgico se debe desactivar en todo
los modos de suspensin. De lo contrario, la tensin de referencia interna se activar, independientemente del sueo
de modo. Referirse a "Comparador analgico" en la pgina 246 para ms detalles sobre cmo configurar el analgico
Comparador.

9.10.3

Detector de Brown de salida


Si el detector de Brown de salida no es necesaria por la aplicacin, este mdulo se debe apagar. Si
Brown de salida del detector est habilitada por el BODLEVEL Fusibles, que se habilitar en todos dormiremos
modos, y por lo tanto, siempre consumen energa. En los modos de sueo ms profundo, esto contribuir seal
significativamente al consumo total de corriente. Referirse a "Deteccin de Brown-out" en la pgina 48 para ms detalles
sobre la forma de configurar el Brown-fuera Detector.

9.10.4

Tensin de referencia interna


La tensin de referencia interna se activar cuando sea necesario por la deteccin de Brown-out, el
Comparador analgico o el ADC. Si estos mdulos estn deshabilitados como se describe en las secciones
anteriormente, se desactivar la referencia de tensin interna y no se consume energa. Cundo
enciende de nuevo, el usuario debe permitir que la referencia a la puesta en marcha antes de que se utiliza la salida. Si el
referencia se mantiene en el modo de reposo, la salida se puede utilizar inmediatamente. Referirse a "Tensin interna
edad de referencia "en la pgina 49 para ms detalles sobre el tiempo de puesta en marcha.

42
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


9.10.5

Watchdog Timer
Si el temporizador de vigilancia no es necesario en la aplicacin, el mdulo debe ser apagado. Si el
Watchdog Timer est activado, se habilitar en todos los modos de suspensin y por lo tanto siempre se consumen
de energa. En los modos de sueo ms profundo, esto contribuir significativamente al consumo total de corriente
cin. Referirse a "Temporizador de vigilancia" en la pgina 50 para ms detalles sobre cmo configurar el temporizador de vigilancia.

9.10.6

Port prendedores
Al entrar en un modo de espera, todos los pines del puerto deben estar configurados para utilizar la potencia mnima. La
ms importante es entonces para asegurarse de que no hay contactos en coche cargas resistivas. En los modos de suspensin donde
ambos
el reloj de I / O (clkI / O) y el reloj de ADC (clkADC) se detuvo, los buffers de entrada del dispositivo
estar deshabilitado. Esto asegura que no se consume energa por la lgica de entrada cuando no se necesita. En
algunos casos, se necesita la lgica de entrada para detectar condiciones de despertador, y sern entonces
habilitado. Consulte la seccin "Habilitar entrada digital y modos de espera" en la pgina 79 para ms detalles sobre
que se habilitan pines. Si el buffer de entrada est activado y la seal de entrada se deja flotante o tienen
un nivel de seal analgica cerca de VCC / 2, el buffer de entrada utilizar una potencia excesiva.
Para pines de entrada analgicas, el buffer de entrada digital debe ser desactivado en todo momento. Una seal analgica
nivel cercano a VCC / 2 en un pin de entrada puede causar una corriente significativa incluso en modo activo. Digital
buffers de entrada pueden ser desactivadas por escrito a la entrada digital Desactivar Registros (DIDR1 y
DIDR0). Referirse a "DIDR1 - Entrada digital Desactivar Registro 1" en la pgina 249 y "DIDR0 - Digital
Entrada Desactivar Regstrate 0 "en la pgina 266 para ms detalles.

9.10.7

El chip de depuracin del sistema


Si el sistema de depuracin en el chip es posible gracias al DWEN fusible y el chip entra en modo de suspensin, el
fuente principal del reloj est activada y por lo tanto siempre se consume energa. En los modos de suspensin ms profundas,
esto contribuir significativamente al consumo total de corriente.

43
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

9.11

Registro Descripcin

9.11.1

SMCR - Sleep Mode Control de Registro


El modo de control Registro Sleep contiene bits de control para la administracin de energa.
Bit

0x33 (0x53)

SM2

SM1

SM0

SE

Lectura / Escritura

R/W

R/W

R/W

R/W

Valor inicial

SMCR

Bits 7..4 Res: Bits Reservados


Estos bits no se utilizan en el ATmega48PA / 88PA / 168PA / 328P, y siempre se leen como cero.
Los bits 3..1 - SM2..0: Sleep Mode Select Bits 2, 1 y 0
Estos bits seleccionan entre los cinco modos de suspensin disponibles como se muestra en Tabla 9-2.
Tabla 9-2.

Sleep Mode Select

SM2

SM1

SM0

Ocioso

Reduccin de Ruido ADC

Energa-abajo

De ahorro de energa

Reservado

Reservado

Colocarse(1)

Standby externo(1)

Nota:

Modo de reposo

1. Modo de espera slo se recomienda para su uso con cristales o resonadores externos.

Bit 0 - SE: Sleep Habilitar


El bit SE debe ser escrito a uno lgico para que el MCU entrar en el modo de espera cuando el SLEEP
instruccin se ejecuta. Para evitar la MCU de entrar en el modo de reposo a menos que sea el programador de
propsito, se recomienda para escribir el Sleep Enable (SE) bit a uno justo antes de la ejecucin de
la instruccin SLEEP y para borrarlo inmediatamente despus de despertarse.

9.11.2

MCUCR - MCU Registro de Control

Bit

0x35 (0x55)

Lectura / Escritura

Valor inicial

BODSE

PUD

IVSEL

IVCE

R/W

R/W

R/W

Bods

MCUCR

Bit 6 - BOD: BOD del sueo


El bit bods debe estar escrito a uno lgico con el fin de desactivar la DBO durante el sueo, ver Tabla 9-1
en la pgina 39. La escritura en el bit bods es controlado por una secuencia temporizada y un bit de habilitacin,
BODSE en MCUCR. Para desactivar la DBO en los modos de suspensin pertinentes, ambos tos y BODSE deben primero

44
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


se pondr a UNO. Entonces, para establecer el bit bods, bods deben establecerse en uno y BODSE deben establecerse en
cero dentro de los cuatro ciclos de reloj.
El bit bods est activo tres ciclos de reloj despus de que se fija. Una instruccin de sueo se debe ejecutar
mientras que los consejos de administracin es activa con el fin de desactivar la DBO para el modo de sueo real. El bit es bods
borra automticamente despus de tres ciclos de reloj.
Bit 5 - BODSE: BOD Sleep Habilitar
BODSE permite el ajuste del bit de control de los consejos de administracin, como se explica en los consejos de administracin
mordi descripcin. Desactivar BOD
est controlada por una secuencia temporizada.
9.11.3

PRR - Potencia Reduccin Registro


Bit
(0x64)
Lectura / Escritura
Valor inicial

PRTWI

PRTIM2

PRTIM0

PRTIM1

PRSPI

1
PRUSART0

0
PRADC

R/W

R/W

R/W

R/W

R/W

R/W

R/W

PRR

Bit 7 - PRTWI: Power Reduccin TWI


Escribir un uno lgico para este bit apaga el TWI al detener el reloj para el mdulo. Cundo
despertar la IST nuevo, el TWI debe re inicializa a garantizar un funcionamiento adecuado.
Bit 6 - PRTIM2: Power Reduccin Timer / Contador2
Escribir un uno lgico de este bit se apaga el mdulo / Contador2 temporizador en modo sncrono (AS2
es 0). Cuando el temporizador / Contador2 est activada, la operacin continuar como antes de la parada.
Bit 5 - PRTIM0: Power Reduccin Timer / Counter0
Escribir un uno lgico de este bit se apaga el mdulo temporizador / Counter0. Cuando el temporizador / Counter0
est activada, la operacin continuar como antes de la parada.

Bit 4 - Res: Bit reservado


Este bit est reservado en ATmega48PA / 88PA / 168PA / 328P y siempre lea como cero.
Bit 3 - PRTIM1: Power Reduccin Timer / Counter1
Escribir un uno lgico de este bit se apaga el mdulo temporizador / Counter1. Cuando el temporizador / Counter1
est activada, la operacin continuar como antes de la parada.

Bit 2 - PRSPI: Peripheral Interface Reduccin Serie Power


Si utiliza debugWIRE de depuracin del sistema en chip, este bit no debe ser escrito a uno.
Escribir un uno lgico de este bit se cierra la interfaz Serial Peripheral al detener el reloj para
el mdulo. Al despertar el SPI de nuevo, el SPI se debe re inicializado para garantizar el buen
operacin.
Bit 1 - PRUSART0: Power Reduccin USART0
Escribir un uno lgico para este bit apaga el USART al detener el reloj para el mdulo. Cundo
despertar el USART ms, el USART debe re inicializa a garantizar un funcionamiento adecuado.

Bit 0 - PRADC: Power Reduccin ADC


Escribir un uno lgico de este bit se apaga el ADC. El ADC debe deshabilitar antes de cerrar.
El comparador analgico no puede utilizar el MUX de entrada ADC cuando el ADC est apagado.

45
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

10. Control del Sistema y Reset


10.1

Restablecimiento del AVR


Durante reset, todos los registros de E / S se establecen en sus valores iniciales, y el programa comienza la ejecucin
desde el restablecimiento del vector. Para el ATmega168PA, la instruccin coloca en el vector debe Restablecer
ser un JMP - Saltar Absoluto - instruccin a la rutina de manejo de restablecimiento. Para el ATmega48PA y
ATmega88PA, la instruccin se coloca en el reinicio del vector debe ser un rjmp - Saltar relativa instruccin de la rutina de manipulacin de restablecimiento. Si el programa no permite a una fuente de interrupcin, la
Vectores de interrupcin no se utilizan, y el cdigo del programa normal se puede colocar en estos lugares. Este
tambin es el caso si el reinicio Vector est en la seccin de aplicaciones, mientras que los vectores de interrupcin se encuentran
en
la seccin de arranque o viceversa (ATmega88PA / 168PA solamente). El diagrama del circuito en Figura 1.10 en
pgina 47 muestra la lgica de reposicin. Tabla 28-3 en la pgina 318 define los parmetros elctricos de la
restablecer los circuitos.

Los puertos de E / S del AVR se restablecen inmediatamente a su estado inicial cuando una fuente de restauracin va
activo. Esto no requiere ninguna fuente de reloj para estar en ejecucin.
Despus de todas las fuentes de reinicio han ido inactivo, un contador de retardo se invoca, el estiramiento de la interna
restablecer. Esto permite que la potencia para alcanzar un nivel estable antes de que comience la operacin normal. El tiempo de
espera
perodo del contador de retardo est definido por el usuario a travs del SUT y CKSEL fusibles. El diselecciones rentes para el perodo de demora se presentan en "Fuentes de reloj" en la pgina 27.

10.2

Restablecer Fuentes
El ATmega48PA / 88PA / 168PA / 328P tiene cuatro fuentes de reinicio:
Power-on Reset. El MCU se restablece cuando la tensin de alimentacin es inferior a la de encendido Restablecer
umbral (VPOT).
Restablecer externa. El MCU se restablece cuando un nivel bajo est presente en el pin RESET durante ms de
la duracin mnima del impulso.
Restablecimiento del sistema de vigilancia. El MCU se restablece cuando el periodo del temporizador watchdog expira y el
Modo Reiniciar sistema Watchdog est activado.
Brown-fuera Reset. El MCU se restablece cuando la tensin de alimentacin VCC est por debajo del reinicio Brown-fuera
umbral (VBOT) y el marrn de salida del detector est habilitado.

46
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 10-1. Restablecer Lgica
DATOS DE BUS

MCU Estado
Registrar (MCUSR)
PORFBORFEXTRFWDRF
Restablecimiento al encendido
Circuito

Brown-fuera
Restablecer Circuito

BODLEVEL [2..0]

Resistencia de actuacin

SPIKE
FILTRO

RSTDISBL
Perro guardin
Oscilador

Reloj
Generador

CK

Contadores de retardo
SE ACAB EL TIEMPO

CKSEL [3: 0]
SUT [1: 0]

10.3

Restablecimiento al
encendido
Un Power-on Reset (POR) pulso es generado por un circuito de deteccin on-chip. El nivel de deteccin
se define en "Sistema y Reiniciar Caractersticas" en la pgina 318. El POR se activa cada vez que
VCC est por debajo del nivel de deteccin. El circuito POR puede ser usado para activar la puesta en marcha de Reset, como
as como para detectar un fallo en la tensin de alimentacin.
Un Power-on Reset (POR) circuito asegura que el dispositivo se restablece de encendido. Al llegar a la
Power-on de tensin Restablecer umbral invoca el contador de retardo, el cual determina el tiempo que el
dispositivo se mantiene en REINICIO despus del ascenso VCC. La seal de RESET se activa de nuevo, sin demora alguna,
cuando VCC disminuye por debajo del nivel de deteccin.

Figura 10-2. MCU Start-up, restablezca Atado a VCC


VPOT
VCC

VRST
REINICIO

SE ACAB EL TIEMPO

tTOUT

INTERNA
REINICIO

47
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 10-3. MCU de puesta en marcha, de RESET Extended Externamente
VPOT
VCC

VRST
REINICIO

tTOUT
SE ACAB EL TIEMPO

INTERNA
REINICIO

10.4

Restablecer externa
Un reset externo es generado por un nivel bajo en el pin RESET. Restablecer pulsos ms largo que el
ancho de pulso mnimo (vase "del sistema y restablecer Caractersticas" en la pgina 318) generar una
restablece, incluso si el reloj no se est ejecutando. Pulsos ms cortos no estn garantizados para generar un reset.
Cuando la seal aplicada alcanza el umbral de reset Voltaje - VRST - en su borde positivo, el
contador de demora se inicia el MCU despus del perodo de tiempo de espera - tTOUT - ha expirado. El reinicio externo
puede ser desactivado por el fusible RSTDISBL, consulte Tabla 27-7 en la pgina 296.

Figura 10-4. Restablecer externa Durante la Operacin


CC

10.5

Deteccin de Brown de salida


ATmega48PA / 88PA / 168PA / 328P tiene un on-chip de deteccin de Brown-out (BOD) circuito para monitor
Toring el nivel VCC durante el funcionamiento por comparacin con un nivel de disparo fijo. El nivel de activacin para
la DBO puede ser seleccionado por los fusibles BODLEVEL. El nivel de activacin tiene una histresis para asegurar
pico de deteccin gratuita de Brown-out. La histresis en el nivel de deteccin debe interpretarse como
V BOT + = V BOT + V HYST / 2 y V llas = V BOT - V HYST /2.When la DBO est habilitada y V CC
disminuye a un valor por debajo del nivel de disparo (VBOT- en Figura 10-5 en la pgina 49), Brown de salida
Reset se activa inmediatamente. Cuando VCC aumenta por encima del nivel de disparo (VBOT + en Figura 105 en la pgina 49), el contador de demora se inicia el MCU despus del perodo de tiempo de espera tTOUT ha expirado.

El circuito de DBO slo detecta una cada en VCC si el voltaje permanece por debajo del nivel de activacin para longer que tBOD da en "Sistema y Reiniciar Caractersticas" en la pgina 318.

48
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 10-5. Restablecer Brown-durante la operacin
VCC

VBOT +
VBOT-

REINICIO

tTOUT

SE ACAB EL TIEMPO

INTERNA
REINICIO

10.6

Restablecimiento del sistema


Watchdog
Cuando los tiempos Watchdog cabo, se generar un impulso de reposicin de corta duracin de un ciclo de CK. En
el flanco descendente de este pulso, el tiempo de retardo empieza a contar el tiempo de espera tTOUT. Referirse a
pgina 50 para ms detalles sobre el funcionamiento del temporizador de vigilancia.

Figura 10-6. Restablecimiento del sistema Watchdog Durante la Operacin


CC

CK

10.7

Tensin de referencia interna


ATmega48PA / 88PA / 168PA / 328P ofrece una referencia de banda prohibida interna. Esta referencia es
utilizados para la deteccin de Brown-out, y puede ser utilizado como una entrada al comparador analgico o la
ADC.

10.7.1

Referencia de tensin Seales de habilitacin y puesta en marcha Tiempo


La referencia de tensin tiene un tiempo de puesta en marcha que puede influir en la forma en que se debe utilizar. La
el tiempo de arranque se da en "Sistema y Reiniciar Caractersticas" en la pgina 318. Para ahorrar energa, la
referencia no siempre est encendido. La referencia es durante las siguientes situaciones:
1. Cuando el BOD se habilita (programando el BODLEVEL [2: 0] Fusibles).
2. Cuando la referencia de banda prohibida est conectado al comparador analgico (mediante el establecimiento de la
ACBG poco en ACSR).
3. Cuando el ADC est habilitada.
As, cuando el DBO no est activada, despus de ajustar el bit ACBG o habilitacin de la ADC, el usuario
siempre debe permitir que la referencia a la puesta en marcha antes de la salida del comparador analgico o

49
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Se utiliza ADC. Para reducir el consumo de energa en modo de Apagado, el usuario puede evitar los tres
condiciones anteriores para asegurar que la referencia est apagado antes de entrar en el modo de Apagado.

10.8

Watchdog Timer

10.8.1

Caractersticas
Frecuencia de reloj del oscilador por separado en el chip
3 Modos de funcionamiento
- Interrupcin
- Restablecimiento del sistema
- Interrupcin y restablecimiento del sistema
Seleccionable perodo de tiempo de espera de 16 ms a 8s
Posible Watchdog fusible hardware siempre encendido (WDTON) para el modo a prueba de
fallos

10.8.2

Visin de conjunto
ATmega48PA / 88PA / 168PA / 328P tiene un temporizador de vigilancia mejorado (WDT). El WDT es una
temporizador contando ciclos de un oscilador de 128 kHz separada on-chip. El WDT da una interrupcin o una
sistema restablece cuando el contador alcanza un valor de tiempo de espera determinado. En el modo de funcionamiento normal,
es
requiere que el sistema utiliza la WDR - Watchdog Timer Reiniciar - instrucciones para reiniciar el pas
se alcanza ter antes que el valor de tiempo de espera. Si el sistema no se reinicia el contador, una interrupcin o
Se emitir reinicio del sistema.
Figura 10-7. Watchdog Timer
128kHz
OSCILADOR

PERRO GUARDIN
REINICIO
WDE

OSC / 2KOSC / 4KOSC / 8KOSC /


16KOSC / 32KOSC / 64KOSC / 128KOSC /
256KOSC / 512KOSC / 1024K

WDP0
WDP1
WDP2
WDP3
MCU de RESET

WDIF

WDIE

INTERRUPCIN

En el modo de interrupcin, el WDT da una interrupcin cuando el tiempo se agota. Esta interrupcin puede ser utilizado
para despertar el dispositivo de sueo-modos, y tambin como un temporizador del sistema general. Un ejemplo es
limitar el tiempo mximo permitido para ciertas operaciones, dando una interrupcin cuando la operacin
ha mostrado por ms tiempo de lo esperado. En el modo de reinicio del sistema, el WDT da un reset cuando el temporizador
expira. Esto se usa tpicamente para evitar bloqueo del sistema de seguridad en caso de cdigo fugitivo. La tercera
modo, de interrupcin y el modo de restablecimiento del sistema, combina los otros dos modos por primera da una interrupt y luego cambiar a modo Reiniciar sistema. Este modo, por ejemplo, permitir una parada segura
por el ahorro de los parmetros crticos antes de reiniciar el sistema.

El Watchdog siempre encendido (WDTON) fusible, si est programado, obligar al Watchdog Timer para sistemas
tem modo Reset. Con el fusible programado el bit de modo de reinicio del sistema (WDE) y de interrupcin

50
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


bit de modo (WDIE) estn bloqueados a 1 y 0 respectivamente. Para garantizar an ms la seguridad del programa, alteracin
ciones a la Watchdog configuracin deben seguir secuencias cronometradas. La secuencia para la limpieza y WDE
cambiar la configuracin de tiempo de espera es el siguiente:
1. En la misma operacin, escribir un uno lgico al cambio Watchdog bit de habilitacin (WDCE) y
WDE. A una lgica debe ser escrito a WDE independientemente del valor anterior de la WDE
bit.
2. Dentro de los prximos cuatro ciclos de reloj, escribir los bits precontador WDE y Watchdog (WDP) como
deseada, pero con el bit WDCE despejado. Esto debe hacerse en una sola operacin.

El ejemplo de cdigo siguiente se muestra un montaje y una funcin C para apagar el Reloj
Temporizador perro. El ejemplo asume que las interrupciones se controlan (por ejemplo, mediante la desactivacin de
interrupciones
a nivel mundial) de manera que no se producirn interrupciones durante la ejecucin de estas funciones.

51
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo(1)


WDT_off:
; Apague interrupcin mundial
cli
; Restablecer temporizador de
vigilancia
wdr
; WDRF Claro en MCUSR
en

r16, MCUSR

andi

r16, (0xff y (0 << WDRF))

fuera

MCUSR, r16

; Escribe una lgica para WDCE y WDE


; Keep prescaler edad para prevenir involuntaria de tiempo de espera
lds r16, WDTCSR
ori

r16, (1 << WDCE) | (1 << WDE)

pts WDTCSR, r16


; Apague WDT
LDI

r16, (0 << WDE)

pts WDTCSR, r16


; Encienda interrupcin mundial
sei
enriar

Cdigo C Ejemplo(1)
vaco WDT_off (void)
{
__disable_interrupt ();
__watchdog_reset ();
/ * Borrar WDRF en MCUSR * /
MCUSR & = ~ (1 << WDRF);
/ * Escribir un lgico WDCE y WDE * /
/ * Funcin Keep prescaler edad para evitar tiempo de espera no intencional * /
WDTCSR | = (1 << WDCE) | (1 << WDE);
/ * Apague WDT * /
WDTCSR = 0x00;
__enable_interrupt ();
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

Nota: Si el Watchdog est activado accidentalmente, por ejemplo, mediante un puntero fuera de control o marrn Salida
condicin, el dispositivo se reiniciar y el temporizador de vigilancia se mantendr activada. Si el cdigo no es
creado para manejar el perro guardin, esto podra conducir a un bucle eterno de restablecimientos de tiempo de espera. Para evitar
esto
situacin, el software de aplicacin siempre debe despejar el restablecimiento del sistema de vigilancia de la bandera
(WDRF) y el bit de control de WDE en la rutina de inicializacin, incluso si el Watchdog no est en uso.

52
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


El ejemplo de cdigo siguiente se muestra un montaje y una funcin C para cambiar el tiempo de espera
valor del temporizador de vigilancia.
Cdigo Asamblea Ejemplo(1)
WDT_Prescaler_Change:
; Apague interrupcin mundial
cli
; Restablecer temporizador de
vigilancia
wdr
; Iniciar secuencia temporizada
lds r16, WDTCSR
ori

r16, (1 << WDCE) | (1 << WDE)

pts WDTCSR, r16


; -

Consigui cuatro ciclos para establecer los nuevos valores


de aqu ; Establecer nueva prescaler (tiempo de espera) valor = 64K ciclos (~
0,5 s)
r16, (1 << WDE) | (1 << WDP2) | (1 << WDP0)
LDI
pts WDTCSR, r16
; -

Terminado el establecimiento de nuevos valores, usado 2


ciclos ; Encienda interrupcin mundial
sei
enriar

Cdigo C Ejemplo(1)
vaco WDT_Prescaler_Change (void)
{
__disable_interrupt ();
__watchdog_reset ();
equence * /
/ * Iniciar
cronometrado
WDTCSR | = (1 << WDCE) | (1 << WDE);
/ * Establecer nueva prescaler (tiempo de espera) valor = 64K ciclos (~
0,5 s) * /
WDTCSR
= (1 << WDE) | (1 << WDP2) | (1 << WDP0);
__enable_interrupt ();
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

Nota: El temporizador de vigilancia debe restablecerse antes de cualquier cambio de los bits de WDP, ya que un cambio
en los bits de WDP puede resultar en un tiempo de espera cuando se cambia a un perodo de tiempo de espera ms corto.

53
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

10.9

Registro Descripcin

10.9.1

MCUSR - Estado MCU Registro


El MCU Registro de estado proporciona informacin sobre qu casos de restauracin fuente provoc un reajuste MCU.
Bit

0x35 (0x55)

WDRF

BORF

EXTRF

PORF

Lectura / Escritura

R/W

R/W

R/W

R/W

Valor inicial

MCUSR

Ver Bit Descripcin

Bit 7..4: Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

Bit 3 - WDRF: Sistema Watchdog Restablecer Bandera


Este bit se establece si se produce un restablecimiento del sistema de vigilancia. El bit se restablece mediante un reinicio de
encendido, o por
escribir un cero lgico a la bandera.
Bit 2 - BORF: Brown-fuera Restablecer Bandera
Este bit se establece si se produce un reinicio de Brown-out. El bit se restablece mediante un reinicio de encendido, o escribiendo
un
cero lgico a la bandera.
Bit 1 - EXTRF: Restablecer externa Bandera
Este bit se establece si se produce un reset externo. El bit se restablece mediante un reinicio de encendido, o escribiendo un
cero lgico a la bandera.

Bit 0 - PORF: restablecimiento al encendido de la bandera


Este bit se establece si se produce un reinicio de encendido. El bit se restablece slo escribiendo un cero lgico a la bandera.
Para hacer uso de la opcin Restaurar indicadores para identificar una condicin de reposicin, el usuario debe leer y despus
Restablecer el MCUSR lo antes posible en el programa. Si el registro se borra antes de que otro
reinicio ocurre, el origen del reajuste se puede encontrar mediante el examen de las Restablecer Banderas.

10.9.2

WDTCSR - Watchdog Timer Registro de Control


Bit
(0x60)
Lectura / Escritura
Valor inicial

WDIF

WDIE

WDP3

WDCE

WDE

WDP2

WDP1

WDP0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

WDTCSR

Bit 7 - WDIF: Watchdog interrupcin Bandera


Este bit se establece cuando se produce un tiempo de espera en el temporizador de vigilancia y el temporizador Watchdog es
guracin
radas para interrupcin. WDIF es despejado por hardware al ejecutar la interrupcin correspondiente
el manejo de vectores. Alternativamente, WDIF se borra escribiendo un uno lgico a la bandera. Cuando el bit I en
SREG y WDIE estn configurados, el perro guardin de tiempo de espera de interrupcin se ejecuta.
Bit 6 - WDIE: Watchdog habilitacin de interrupcin
Cuando este bit se escribe en uno y el bit I en el Registro de Estado est establecido, la alarma cclica es
habilitado. Si WDE se borra en combinacin con este ajuste, el temporizador de vigilancia est en interrupcin
Modo, y la interrupcin correspondiente se ejecuta si se produce tiempo de espera en el temporizador de vigilancia. Si
WDE se establece, el temporizador de vigilancia est en interrupcin y Reposicin del sistema Mode. El primer tiempo de espera
en la

54
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Watchdog Timer establecer WDIF. Ejecutar el vector de interrupcin correspondiente se borrar WDIE y
WDIF automticamente por hardware (el perro guardin va al Sistema Modo Reset). Esto es til para
mantener la seguridad Watchdog Timer durante el uso de la interrupcin. Para permanecer en interrupcin y Sistema
Modo de restablecimiento, WDIE debe establecerse despus de cada interrupcin. Esto debe no obstante hacerse dentro del
rutina de interrupcin del servicio en s, ya que esto podra poner en peligro la seguridad de la funcin Watchdog
Sistema Modo Reset. Si la interrupcin no se ejecuta antes de que el prximo tiempo de espera, un restablecimiento del sistema
ser aplicado.

Tabla 10-1.

Configuracin del temporizador Watchdog

WDTON(1)

WDE

WDIE

Detenido

Accin sobre el tiempo de


espera
Ninguno

Modo de interrupcin

Interrupcin

Modo de restablecimiento del


Reajustar
sistema
Interrupcin y restablecimiento del sistema
Interrupcin, luego vaya a Sistema
Modo
Modo de Reposicin

Nota:

Modo

Modo de restablecimiento del


sistema

Reajustar

1. WDTON Fusible ajustado a "0" significa programado y "1" significa no programada.

Bit 4 - WDCE: Watchdog Cambio Habilitar


Este bit se utiliza en secuencias programadas para cambiar WDE y prescaler bits. Para borrar el bit WDE,
y / o modificar los bits prescaler, WDCE debe ajustarse.
Una vez escrito a uno, hardware borrar WDCE despus de cuatro ciclos de reloj.
Bit 3 - WDE: Sistema Watchdog Reiniciar Habilitar
WDE queda anulado por WDRF en MCUSR. Esto significa que WDE se establece siempre cuando es WDRF
establecer. Para borrar WDE, WDRF debe borrarse primero. Esta caracterstica asegura mltiples reinicios durante concondiciones que causan el fracaso, y una caja fuerte de puesta en marcha tras el fracaso.

El bit 5, 2..0 - WDP3..0: Watchdog Timer Precontador 3, 2, 1 y 0


Los bits WDP3..0 determinan la preescala Watchdog Timer cuando el temporizador de vigilancia est en marcha
Ning. Los diferentes valores preescala y sus perodos de tiempo de espera correspondientes se muestran en la
Tabla 10-2 en la pgina 55.

Tabla 10-2.

Watchdog Timer preescala Select

WDP3

WDP2

WDP1

WDP0

Nmero de WDT Oscilador


Ciclos

Tpico tiempo de espera en


VCC = 5.0V

2K (2048) Ciclos

16 ms

4K (4.096) ciclos

32 ms

8K (8192) Ciclos

64 ms

16K (16384) Ciclos

0,125 s

32K (32768) Ciclos

0,25 s

64K (65536) Ciclos

0,5 s

128K (131.072) ciclos

1,0 s

55
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 10-2.

Watchdog Timer preescala Select (Contina)

WDP3

WDP2

WDP1

WDP0

Nmero de WDT Oscilador


Ciclos

Tpico tiempo de espera en


VCC = 5.0V

256K (262.144) ciclos

2,0 s

512K (524.288) ciclos

4,0 s

1024K (1048576) ciclos

8,0 s

Reservado

56
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

11. Interrupciones
En esta seccin se describen los detalles de la gestin de interrupciones como se realiz en
ATmega48PA / 88PA / 168PA / 328P. Para una explicacin general de la gestin de interrupciones AVR, consulte
a "Reset y manejo de interrupciones" en la pgina 14.
Los vectores de interrupcin en ATmega48PA, ATmega88PA, ATmega168PA y ATmega328P son
generalmente el mismo, con las siguientes diferencias:
Cada vector de interrupcin ocupa dos palabras de instruccin en ATmega168PA y ATmega328P, y
palabra de una instruccin en ATmega48PA y ATmega88PA.
ATmega48PA no tiene una seccin del cargador de arranque independiente. En ATmega88PA,
ATmega168PA y ATmega328P, el reinicio del vector se ve afectada por el fusible BOOTRST, y el
Vector de interrupcin direccin de inicio se ve afectada por el bit IVSEL en MCUCR.

11.1

Vectores de interrupcin en ATmega48PA

Tabla 11-1.
Vector No.

Reset y vectores de interrupcin en ATmega48PA


Direccin del Programa Fuente

Interrupcin Definicin

0x000

REINICIO

Pin externa, Power-on Reset, Brown-fuera Resetear Reset y de vigilancia del sistema

0x001

INT0

Interrupcin externa Solicitud 0

0x002

INT1

Interrupcin externa Solicitud 1

0x003

PCINT0

Pin Cambio de solicitud de interrupcin 0

0x004

PCINT1

Pin Cambio de solicitud de interrupcin 1

0x005

PCINT2

Pin Cambio de solicitud de interrupcin 2

0x006

WDT

Watchdog Tiempo de espera de interrupcin

0x007

TIMER2 COMPA

Timer / Contador2 Comparar Partido A

0x008

TIMER2 COMPB

Timer / Contador2 Comparar Partido B

10

0x009

TIMER2 OVF

Timer / Contador2 desbordamiento

11

0x00A

TIMER1 CAPT

Temporizador / Captura de Counter1

12

0x00B

TIMER1 COMPA

Timer / Counter1 Comparar Partido A

13

0x00C

TIMER1 COMPB

Timer / Coutner1 Comparar Partido B

14

0x00D

TIMER1 OVF

Timer / Counter1 desbordamiento

15

0x00E

TIMER0 COMPA

Timer / Counter0 Comparar Partido A

16

0x00F

TIMER0 COMPB

Timer / Counter0 Comparar Partido B

17

0x010

TIMER0 OVF

Timer / Counter0 desbordamiento

18

0x011

SPI, STC

SPI Serial Transfer completa

19

0x012

USART, RX

USART Rx completa

20

0x013

USART, UDRE

USART, registro de datos vaca

21

0x014

USART, TX

USART, Tx completa

22

0x015

ADC

ADC conversin completa

23

0x016

EE LISTO

EEPROM Ready

57
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 11-1.
Vector No.

Reset y vectores de interrupcin en ATmega48PA (Continuacin)


Direccin del Programa Fuente

Interrupcin Definicin

24

0x017

ANALGICO COMP

Comparador analgico

25

0x018

TWI

2 cables de interfaz Serial

26

0x019

SPM LISTO

Almacenar memoria de programa Ready

La configuracin del programa ms tpica y general para el restablecimiento y vector de interrupcin en Direcciones
ATmega48PA es:
Comentarios

Etiquetas de direccin
Cdigo
0x000
rjmp

REINICIO

; Restablecer Handler

0x001

rjmp

EXT_INT0

; IRQ0 Handler

0x002

rjmp

EXT_INT1

; IRQ1 Handler

0x003

rjmp

PCINT0

; PCINT0 Handler

0x004

rjmp

PCINT1

; PCINT1 Handler

0x005

rjmp

PCINT2

; PCINT2 Handler

0x006

rjmp

WDT

; Watchdog Timer Handler

0x007

rjmp

TIM2_COMPA

; Timer2 comparacin A Handler

0x008

rjmp

TIM2_COMPB

; Timer2 Comparar B Handler

0x009

rjmp

TIM2_OVF

; Timer2 desbordamiento Handler

0x00A

rjmp

TIM1_CAPT

; Handler Captura Timer1

0x00B

rjmp

TIM1_COMPA

; Timer1 comparacin A Handler

0x00C

rjmp

TIM1_COMPB

; Timer1 Comparar B Handler

0x00D

rjmp

TIM1_OVF

; Timer1 desbordamiento Handler

0x00E

rjmp

TIM0_COMPA

; Timer0 comparacin A Handler

0x00F

rjmp

TIM0_COMPB

; Timer0 Comparar B Handler

0x010

rjmp

TIM0_OVF

; Timer0 desbordamiento Handler

0x011

rjmp

SPI_STC

; SPI Transferencia Handler completa

0x012

rjmp

USART_RXC

; USART, RX Handler completa

0x013

rjmp

USART_UDRE

; USART, UDR Handler vaco

0x014

rjmp

USART_TXC

; USART, TX Handler completa

0x015

rjmp

ADC

; ADC Conversin Handler completa

0x016

rjmp

EE_RDY

; EEPROM Listo Handler

0x017

rjmp

ANA_COMP

; Comparador Handler analgica

0x018

rjmp

TWI

; Handler Interfaz Serie 2 hilos

0x019

rjmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

0x01ARESET:

LDI

0x01B

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x01C

LDI

r16, bajo (RAMEND)

0x01D

fuera

SPL, r16

0x01E

sei

0x01F
...

<Instr>
...

...

xxx

; Habilitar las
interrupciones

...

58
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


11.2

Vectores de interrupcin en ATmega88PA

Tabla 11-2.

Reset y vectores de interrupcin en ATmega88PA

Vector No.

Programa
Direccin(2)

0x000(1)

Notas:

Fuente

Interrupcin Definicin

REINICIO

Pin externa, Power-on Reset, Brown-fuera Resetear Reset y de vigilancia del sistema

0x001

INT0

Interrupcin externa Solicitud 0

0x002

INT1

Interrupcin externa Solicitud 1

0x003

PCINT0

Pin Cambio de solicitud de interrupcin 0

0x004

PCINT1

Pin Cambio de solicitud de interrupcin 1

0x005

PCINT2

Pin Cambio de solicitud de interrupcin 2

0x006

WDT

Watchdog Tiempo de espera de interrupcin

0x007

TIMER2 COMPA

Timer / Contador2 Comparar Partido A

0x008

TIMER2 COMPB

Timer / Contador2 Comparar Partido B

10

0x009

TIMER2 OVF

Timer / Contador2 desbordamiento

11

0x00A

TIMER1 CAPT

Temporizador / Captura de Counter1

12

0x00B

TIMER1 COMPA

Timer / Counter1 Comparar Partido A

13

0x00C

TIMER1 COMPB

Timer / Coutner1 Comparar Partido B

14

0x00D

TIMER1 OVF

Timer / Counter1 desbordamiento

15

0x00E

TIMER0 COMPA

Timer / Counter0 Comparar Partido A

16

0x00F

TIMER0 COMPB

Timer / Counter0 Comparar Partido B

17

0x010

TIMER0 OVF

Timer / Counter0 desbordamiento

18

0x011

SPI, STC

SPI Serial Transfer completa

19

0x012

USART, RX

USART Rx completa

20

0x013

USART, UDRE

USART, registro de datos vaca

21

0x014

USART, TX

USART, Tx completa

22

0x015

ADC

ADC conversin completa

23

0x016

EE LISTO

EEPROM Ready

24

0x017

ANALGICO COMP

Comparador analgico

25

0x018

TWI

2 cables de interfaz Serial

26

0x019

SPM LISTO

Almacenar memoria de programa Ready

1. Cuando el BOOTRST fusible est programado, el dispositivo saltar a la direccin del gestor de arranque en el reinicio, vase "Gestor de arranque Support
puerto - Leer-While-Escribe Auto-Programacin, ATmega88PA, ATmega168PA y ATmega328P "en la pgina 277.
2. Cuando el bit IVSEL en MCUCR se establece, vectores de interrupcin se mover al inicio de la Seccin de flash de arranque. La direccin de
cada vector de interrupcin ser entonces la direccin en esta tabla aadida a la direccin de inicio de la seccin Flash de arranque.

Tabla 11-3 en la pgina 60 muestra la colocacin vectores de reposicin y de interrupcin de los diversos combinacin
ciones de configuracin BOOTRST y IVSEL. Si el programa no permite a una fuente de interrupcin, la
Vectores de interrupcin no se utilizan, y el cdigo del programa normal se puede colocar en estos lugares. Este
tambin es el caso si el reinicio Vector est en la seccin de aplicaciones, mientras que los vectores de interrupcin se encuentran
en
la seccin de arranque o viceversa.

59
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 11-3.

Reset y vectores de interrupcin de colocacin en ATmega88PA(1)

BOOTRST

IVSEL

Nota:

Restablecer Direccin

Vectores de interrupcin de inicio Direccin

0x000

0x001

0x000

Bota Restablecer Direccin + 0x001

Bota Restablecer Direccin

0x001

Bota Restablecer Direccin

Bota Restablecer Direccin + 0x001

1. El arranque Restablecer Direccin se muestra en Tabla 26-7 en la pgina 289. Para el BOOTRST Fuse "1"
significa no programadas mientras que "0" significa programadas.

La configuracin del programa ms tpica y general para el restablecimiento y vector de interrupcin en Direcciones
ATmega88PA es:
Comentarios

Etiquetas de direccin
Cdigo
0x000
rjmp

REINICIO

; Restablecer Handler

0x001

rjmp

EXT_INT0

; IRQ0 Handler

0x002

rjmp

EXT_INT1

; IRQ1 Handler

0x003

rjmp

PCINT0

; PCINT0 Handler

0x004

rjmp

PCINT1

; PCINT1 Handler

0x005

rjmp

PCINT2

; PCINT2 Handler

0x006

rjmp

WDT

; Watchdog Timer Handler

0x007

rjmp

TIM2_COMPA

; Timer2 comparacin A Handler

0X008

rjmp

TIM2_COMPB

; Timer2 Comparar B Handler

0x009

rjmp

TIM2_OVF

; Timer2 desbordamiento Handler

0x00A

rjmp

TIM1_CAPT

; Handler Captura Timer1

0x00B

rjmp

TIM1_COMPA

; Timer1 comparacin A Handler

0x00C

rjmp

TIM1_COMPB

; Timer1 Comparar B Handler

0x00D

rjmp

TIM1_OVF

; Timer1 desbordamiento Handler

0x00E

rjmp

TIM0_COMPA

; Timer0 comparacin A Handler

0x00F

rjmp

TIM0_COMPB

; Timer0 Comparar B Handler

0x010

rjmp

TIM0_OVF

; Timer0 desbordamiento Handler

0x011

rjmp

SPI_STC

; SPI Transferencia Handler completa

0x012

rjmp

USART_RXC

; USART, RX Handler completa

0x013

rjmp

USART_UDRE

; USART, UDR Handler vaco

0x014

rjmp

USART_TXC

; USART, TX Handler completa

0x015

rjmp

ADC

; ADC Conversin Handler completa

0x016

rjmp

EE_RDY

; EEPROM Listo Handler

0x017

rjmp

ANA_COMP

; Comparador Handler analgica

0x018

rjmp

TWI

; Handler Interfaz Serie 2 hilos

0x019

rjmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

0x01ARESET:

LDI

0x01B

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x01C

LDI

r16, bajo (RAMEND)

0x01D
0x01E

fuera
sei

SPL, r16

0x01F

<Instr>

xxx

; Habilitar las
interrupciones

60
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Cuando el BOOTRST Fuse es no programado, el tamao de la seccin de arranque ajustado a 2K bytes y la
IVSEL poco en el Registro MCUCR se establece antes de que las interrupciones estn habilitadas, el ms tpico y
configuracin del programa general para el restablecimiento y direcciones de interrupcin del vector en ATmega88PA es:
Etiquetas de direccin
Cdigo
0x000
RESET: LDI

Comentarios

0x001

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x002

LDI

r16, bajo (RAMEND)

0x003
0x004

fuera
sei

SPL, r16

0x005

<Instr>

xxx

; Habilitar las
interrupciones

;
.org 0xC01
0xC01

rjmp

EXT_INT0

; IRQ0 Handler

0xC02

rjmp

EXT_INT1

; IRQ1 Handler

...

...

...

0xC19

rjmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

Cuando el BOOTRST fusible est programado y el tamao de la seccin de arranque ajustado a 2K bytes, el ms
configuracin del programa tpico y general para el restablecimiento y direcciones de interrupcin del vector en
ATmega88PA es:
Comentarios

Etiquetas de direccin
Cdigo
.org 0x001
0x001

rjmp

EXT_INT0

; IRQ0 Handler

0x002

rjmp

EXT_INT1

; IRQ1 Handler

...

...

...

0x019

rjmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

0xC01

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0xC02

LDI

r16, bajo (RAMEND)

0xC03
0xC04

fuera
sei

SPL, r16

0xC05

<Instr>

;
.org 0xc00
0xC00RESET: LDI

xxx

; Habilitar las
interrupciones

Cuando el BOOTRST fusible est programado, el tamao de la seccin de arranque ajustado a 2K bytes y el IVSEL
poco en el Registro MCUCR se establece antes de que las interrupciones estn habilitadas, la ms tpica y general
configuracin del programa para el restablecimiento y direcciones de interrupcin del vector en ATmega88PA es:
Comentarios

Etiquetas de direccin
Cdigo
;
.org 0xc00
0xc00

rjmp

REINICIO

0xC01

rjmp

EXT_INT0

; Restablecer
controlador
; IRQ0 Handler

0xC02

rjmp

EXT_INT1

; IRQ1 Handler

...

...

...

0xC19

rjmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

;
0xC1A

RESET: LDI

r16, alta (RAMEND); Inicio del programa


principal

61
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

11.3

fuera

SPH, r16

0xC1C

LDI

r16, bajo (RAMEND)

0xC1D
0xC1E

fuera
sei

SPL, r16

0xC1F

<Instr>

xxx

; Set Stack Pointer al principio de la RAM

; Habilitar las
interrupciones

Vectores de interrupcin en ATmega168PA

Tabla 11-4.

Reset y vectores de interrupcin en ATmega168PA

VectorNo.

Programa
Direccin(2)

0x0000(1)

Notas:

0xC1B

Fuente

Interrupcin Definicin

REINICIO

Pin externa, Power-on Reset, Brown-fuera Resetear Reset y de vigilancia del sistema

0x0002

INT0

Interrupcin externa Solicitud 0

0x0004

INT1

Interrupcin externa Solicitud 1

0x0006

PCINT0

Pin Cambio de solicitud de interrupcin 0

0x0008

PCINT1

Pin Cambio de solicitud de interrupcin 1

0x000A

PCINT2

Pin Cambio de solicitud de interrupcin 2

0x000C

WDT

Watchdog Tiempo de espera de interrupcin

0x000E

TIMER2 COMPA

Timer / Contador2 Comparar Partido A

0x0010

TIMER2 COMPB

Timer / Contador2 Comparar Partido B

10

0x0012

TIMER2 OVF

Timer / Contador2 desbordamiento

11

0x0014

TIMER1 CAPT

Temporizador / Captura de Counter1

12

0x0016

TIMER1 COMPA

Timer / Counter1 Comparar Partido A

13

0x0018

TIMER1 COMPB

Timer / Coutner1 Comparar Partido B

14

0x001A

TIMER1 OVF

Timer / Counter1 desbordamiento

15

0x001C

TIMER0 COMPA

Timer / Counter0 Comparar Partido A

16

0x001E

TIMER0 COMPB

Timer / Counter0 Comparar Partido B

17

0x0020

TIMER0 OVF

Timer / Counter0 desbordamiento

18

0x0022

SPI, STC

SPI Serial Transfer completa

19

0x0024

USART, RX

USART Rx completa

20

0x0026

USART, UDRE

USART, registro de datos vaca

21

0x0028

USART, TX

USART, Tx completa

22

0x002A

ADC

ADC conversin completa

23

0x002C

EE LISTO

EEPROM Ready

24

0x002E

ANALGICO COMP

Comparador analgico

25

0x0030

TWI

2 cables de interfaz Serial

26

0x0032

SPM LISTO

Almacenar memoria de programa Ready

1. Cuando el BOOTRST fusible est programado, el dispositivo saltar a la direccin del gestor de arranque en el reinicio, vase "Gestor de arranque Support
puerto - Leer-While-Escribe Auto-Programacin, ATmega88PA, ATmega168PA y ATmega328P "en la pgina 277.
2. Cuando el bit IVSEL en MCUCR se establece, vectores de interrupcin se mover al inicio de la Seccin de flash de arranque. La direccin de
cada vector de interrupcin ser entonces la direccin en esta tabla aadida a la direccin de inicio de la seccin Flash de arranque.

62
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 11-5 en la pgina 63 muestra la colocacin vectores de reposicin y de interrupcin de los diversos combinacin
ciones de configuracin BOOTRST y IVSEL. Si el programa no permite a una fuente de interrupcin, la
Vectores de interrupcin no se utilizan, y el cdigo del programa normal se puede colocar en estos lugares. Este
tambin es el caso si el reinicio Vector est en la seccin de aplicaciones, mientras que los vectores de interrupcin se encuentran
en
la seccin de arranque o viceversa.
Tabla 11-5.

Reset y vectores de interrupcin de colocacin en ATmega168PA(1)

BOOTRST

IVSEL

Nota:

Restablecer Direccin

Vectores de interrupcin de inicio Direccin

0x000

0x002

0x000

Bota Restablecer Direccin + 0x0002

Bota Restablecer Direccin

0x002

Bota Restablecer Direccin

Bota Restablecer Direccin + 0x0002

1. El arranque Restablecer Direccin se muestra en Tabla 26-7 en la pgina 289. Para el BOOTRST Fuse "1"
significa no programadas mientras que "0" significa programadas.

La configuracin del programa ms tpica y general para el restablecimiento y vector de interrupcin en Direcciones
ATmega168PA es:
Comentarios

Etiquetas de direccin
Cdigo
0x0000
jmp

REINICIO

; Restablecer Handler

0x0002

jmp

EXT_INT0

; IRQ0 Handler

0x0004

jmp

EXT_INT1

; IRQ1 Handler

0x0006

jmp

PCINT0

; PCINT0 Handler

0x0008

jmp

PCINT1

; PCINT1 Handler

0x000A

jmp

PCINT2

; PCINT2 Handler

0x000C

jmp

WDT

; Watchdog Timer Handler

0x000E

jmp

TIM2_COMPA

; Timer2 comparacin A Handler

0x0010

jmp

TIM2_COMPB

; Timer2 Comparar B Handler

0x0012

jmp

TIM2_OVF

; Timer2 desbordamiento Handler

0x0014

jmp

TIM1_CAPT

; Handler Captura Timer1

0x0016

jmp

TIM1_COMPA

; Timer1 comparacin A Handler

0x0018

jmp

TIM1_COMPB

; Timer1 Comparar B Handler

0x001A

jmp

TIM1_OVF

; Timer1 desbordamiento Handler

0x001C

jmp

TIM0_COMPA

; Timer0 comparacin A Handler

0x001E

jmp

TIM0_COMPB

; Timer0 Comparar B Handler

0x0020

jmp

TIM0_OVF

; Timer0 desbordamiento Handler

0x0022

jmp

SPI_STC

; SPI Transferencia Handler completa

0x0024

jmp

USART_RXC

; USART, RX Handler completa

0x0026

jmp

USART_UDRE

; USART, UDR Handler vaco

0x0028

jmp

USART_TXC

; USART, TX Handler completa

0x002A

jmp

ADC

; ADC Conversin Handler completa

0x002C

jmp

EE_RDY

; EEPROM Listo Handler

0x002E

jmp

ANA_COMP

; Comparador Handler analgica

0x0030

jmp

TWI

; Handler Interfaz Serie 2 hilos

0x0032

jmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

LDI

r16, alta (RAMEND); Inicio del programa


principal

;
0x0033RESET:

63
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


0x0034

fuera

SPH, r16

0x0035

LDI

r16, bajo (RAMEND)

0x0036

fuera

SPL, r16

0x0037

sei

0x0038

<Instr>

...

...

...

xxx

; Set Stack Pointer al principio de la RAM

; Habilitar las
interrupciones

...

Cuando el BOOTRST Fuse es no programado, el tamao de la seccin de arranque ajustado a 2K bytes y la


IVSEL poco en el Registro MCUCR se establece antes de que las interrupciones estn habilitadas, el ms tpico y
configuracin del programa general para el restablecimiento y direcciones de interrupcin del vector en ATmega168PA es:
Etiquetas de direccin
Cdigo
0x0000
RESET: LDI

Comentarios

0x0001

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x0002

LDI

r16, bajo (RAMEND)

0x0003
0x0004

fuera
sei

SPL, r16

0x0005

<Instr>

xxx

; Habilitar las
interrupciones

;
.org 0x1C02
0x1C02

jmp

EXT_INT0

; IRQ0 Handler

0x1C04

jmp

EXT_INT1

; IRQ1 Handler

...

...

...

0x1C32

jmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

Cuando el BOOTRST fusible est programado y el tamao de la seccin de arranque ajustado a 2K bytes, el ms
configuracin del programa tpico y general para el restablecimiento y direcciones de interrupcin del vector en
ATmega168PA es:

Comentarios

Etiquetas de direccin
Cdigo
.org 0x0002
0x0002

jmp

EXT_INT0

; IRQ0 Handler

0x0004

jmp

EXT_INT1

; IRQ1 Handler

...

...

...

0x0032

jmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

;
.org 0x1C00
0x1C00 RESET: LDI
0x1C01

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x1C02

LDI

r16, bajo (RAMEND)

0x1C03
0x1C04

fuera
sei

SPL, r16

0x1C05

<Instr>

xxx

; Habilitar las
interrupciones

Cuando el BOOTRST fusible est programado, el tamao de la seccin de arranque ajustado a 2K bytes y el IVSEL
poco en el Registro MCUCR se establece antes de que las interrupciones estn habilitadas, la ms tpica y general
configuracin del programa para el restablecimiento y direcciones de interrupcin del vector en ATmega168PA es:
Etiquetas de direccin
Cdigo
;

Comentarios

64
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


.org 0x1C00
0x1C00

jmp

REINICIO

0x1C02

jmp

EXT_INT0

; Restablecer
controlador
; IRQ0 Handler

0x1C04

jmp

EXT_INT1

; IRQ1 Handler

...

...

...

0x1C32

jmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

;
0x1C33

11.4

RESET: LDI

0x1C34

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x1C35

LDI

r16, bajo (RAMEND)

0x1C36
0x1C37

fuera
sei

SPL, r16

0x1C38

<Instr>

xxx

; Habilitar las
interrupciones

Vectores de interrupcin en ATmega328P

Tabla 11-6.

Reset y vectores de interrupcin en ATmega328P

VectorNo.

Programa
Direccin(2)

0x0000(1)

Fuente

Interrupcin Definicin

REINICIO

Pin externa, Power-on Reset, Brown-fuera Resetear Reset y de vigilancia del sistema

0x0002

INT0

Interrupcin externa Solicitud 0

0x0004

INT1

Interrupcin externa Solicitud 1

0x0006

PCINT0

Pin Cambio de solicitud de interrupcin 0

0x0008

PCINT1

Pin Cambio de solicitud de interrupcin 1

0x000A

PCINT2

Pin Cambio de solicitud de interrupcin 2

0x000C

WDT

Watchdog Tiempo de espera de interrupcin

0x000E

TIMER2 COMPA

Timer / Contador2 Comparar Partido A

0x0010

TIMER2 COMPB

Timer / Contador2 Comparar Partido B

10

0x0012

TIMER2 OVF

Timer / Contador2 desbordamiento

11

0x0014

TIMER1 CAPT

Temporizador / Captura de Counter1

12

0x0016

TIMER1 COMPA

Timer / Counter1 Comparar Partido A

13

0x0018

TIMER1 COMPB

Timer / Coutner1 Comparar Partido B

14

0x001A

TIMER1 OVF

Timer / Counter1 desbordamiento

15

0x001C

TIMER0 COMPA

Timer / Counter0 Comparar Partido A

16

0x001E

TIMER0 COMPB

Timer / Counter0 Comparar Partido B

17

0x0020

TIMER0 OVF

Timer / Counter0 desbordamiento

18

0x0022

SPI, STC

SPI Serial Transfer completa

19

0x0024

USART, RX

USART Rx completa

20

0x0026

USART, UDRE

USART, registro de datos vaca

21

0x0028

USART, TX

USART, Tx completa

22

0x002A

ADC

ADC conversin completa

65
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 11-6.

Reset y vectores de interrupcin en ATmega328P (Continuacin)

VectorNo.

Programa
Direccin(2)

23

Notas:

Fuente

Interrupcin Definicin

0x002C

EE LISTO

EEPROM Ready

24

0x002E

ANALGICO COMP

Comparador analgico

25

0x0030

TWI

2 cables de interfaz Serial

26

0x0032

SPM LISTO

Almacenar memoria de programa Ready

1. Cuando el BOOTRST fusible est programado, el dispositivo saltar a la direccin del gestor de arranque en el reinicio, vase "Gestor de arranque Support
puerto - Leer-While-Escribe Auto-Programacin, ATmega88PA, ATmega168PA y ATmega328P "en la pgina 277.
2. Cuando el bit IVSEL en MCUCR se establece, vectores de interrupcin se mover al inicio de la Seccin de flash de arranque. La direccin de
cada vector de interrupcin ser entonces la direccin en esta tabla aadida a la direccin de inicio de la seccin Flash de arranque.

Tabla 11-7 en la pgina 66 muestra la colocacin vectores de reposicin y de interrupcin de los diversos combinacin
ciones de configuracin BOOTRST y IVSEL. Si el programa no permite a una fuente de interrupcin, la
Vectores de interrupcin no se utilizan, y el cdigo del programa normal se puede colocar en estos lugares. Este
tambin es el caso si el reinicio Vector est en la seccin de aplicaciones, mientras que los vectores de interrupcin se encuentran
en
la seccin de arranque o viceversa.
Tabla 11-7.

Reset y vectores de interrupcin de colocacin en ATmega328P(1)

BOOTRST

IVSEL

Nota:

Restablecer Direccin

Vectores de interrupcin de inicio Direccin

0x000

0x002

0x000

Bota Restablecer Direccin + 0x0002

Bota Restablecer Direccin

0x002

Bota Restablecer Direccin

Bota Restablecer Direccin + 0x0002

1. El arranque Restablecer Direccin se muestra en Tabla 26-7 en la pgina 289. Para el BOOTRST Fuse "1"
significa no programadas mientras que "0" significa programadas.

La configuracin del programa ms tpica y general para el restablecimiento y vector de interrupcin en Direcciones
ATmega328P es:
Comentarios

Etiquetas de direccin
Cdigo
0x0000
jmp

REINICIO

; Restablecer Handler

0x0002

jmp

EXT_INT0

; IRQ0 Handler

0x0004

jmp

EXT_INT1

; IRQ1 Handler

0x0006

jmp

PCINT0

; PCINT0 Handler

0x0008

jmp

PCINT1

; PCINT1 Handler

0x000A

jmp

PCINT2

; PCINT2 Handler

0x000C

jmp

WDT

; Watchdog Timer Handler

0x000E

jmp

TIM2_COMPA

; Timer2 comparacin A Handler

0x0010

jmp

TIM2_COMPB

; Timer2 Comparar B Handler

0x0012

jmp

TIM2_OVF

; Timer2 desbordamiento Handler

0x0014

jmp

TIM1_CAPT

; Handler Captura Timer1

0x0016

jmp

TIM1_COMPA

; Timer1 comparacin A Handler

0x0018

jmp

TIM1_COMPB

; Timer1 Comparar B Handler

0x001A

jmp

TIM1_OVF

; Timer1 desbordamiento Handler

0x001C

jmp

TIM0_COMPA

; Timer0 comparacin A Handler

0x001E

jmp

TIM0_COMPB

; Timer0 Comparar B Handler

66
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


0x0020

jmp

TIM0_OVF

; Timer0 desbordamiento Handler

0x0022

jmp

SPI_STC

; SPI Transferencia Handler completa

0x0024

jmp

USART_RXC

; USART, RX Handler completa

0x0026

jmp

USART_UDRE

; USART, UDR Handler vaco

0x0028

jmp

USART_TXC

; USART, TX Handler completa

0x002A

jmp

ADC

; ADC Conversin Handler completa

0x002C

jmp

EE_RDY

; EEPROM Listo Handler

0x002E

jmp

ANA_COMP

; Comparador Handler analgica

0x0030

jmp

TWI

; Handler Interfaz Serie 2 hilos

0x0032

jmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

0x0033RESET:

LDI

0x0034

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x0035

LDI

r16, bajo (RAMEND)

0x0036

fuera

SPL, r16

0x0037

sei

0x0038

<Instr>

...

...

...

xxx

; Habilitar las
interrupciones

...

Cuando el BOOTRST Fuse es no programado, el tamao de la seccin de arranque ajustado a 2K bytes y la


IVSEL poco en el Registro MCUCR se establece antes de que las interrupciones estn habilitadas, el ms tpico y
configuracin del programa general para el restablecimiento y direcciones de interrupcin del vector en ATmega328P es:
Etiquetas de direccin
Cdigo
0x0000
RESET: LDI

Comentarios

0x0001

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x0002

LDI

r16, bajo (RAMEND)

0x0003
0x0004

fuera
sei

SPL, r16

0x0005

<Instr>

xxx

; Habilitar las
interrupciones

;
.org 0x3C02
0x3C02

jmp

EXT_INT0

; IRQ0 Handler

0x3C04

jmp

EXT_INT1

; IRQ1 Handler

...

...

...

0x3C32

jmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

Cuando el BOOTRST fusible est programado y el tamao de la seccin de arranque ajustado a 2K bytes, el ms
configuracin del programa tpico y general para el restablecimiento y direcciones de interrupcin del vector en
ATmega328P es:
Comentarios

Etiquetas de direccin
Cdigo
.org 0x0002
0x0002

jmp

EXT_INT0

; IRQ0 Handler

0x0004

jmp

EXT_INT1

; IRQ1 Handler

...

...

...

0x0032

jmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

;
.org 0x3C00
0x3C00 RESET: LDI

r16, alta (RAMEND); Inicio del programa


principal

67
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


0x3C01

fuera

SPH, r16

0x3C02

LDI

r16, bajo (RAMEND)

; Set Stack Pointer al principio de la RAM

0x3C03
0x3C04

fuera
sei

SPL, r16

0x3C05

<Instr>

; Habilitar las
interrupciones

xxx

Cuando el BOOTRST fusible est programado, el tamao de la seccin de arranque ajustado a 2K bytes y el IVSEL
poco en el Registro MCUCR se establece antes de que las interrupciones estn habilitadas, la ms tpica y general
configuracin del programa para el restablecimiento y direcciones de interrupcin del vector en ATmega328P es:
Comentarios

Etiquetas de direccin
Cdigo
;
.org 0x3C00
0x3C00

jmp

REINICIO

0x3C02

jmp

EXT_INT0

; Restablecer
controlador
; IRQ0 Handler

0x3C04

jmp

EXT_INT1

; IRQ1 Handler

...

...

...

0x3C32

jmp

SPM_RDY

; Almacenar memoria de programa Ready Handler

;
0x3C33

11.5

RESET: LDI

0x3C34

fuera

r16, alta (RAMEND); Inicio del programa


principal
SPH, r16
; Set Stack Pointer al principio de la RAM

0x3C35

LDI

r16, bajo (RAMEND)

0x3C36
0x3C37

fuera
sei

SPL, r16

0x3C38

<Instr>

; Habilitar las
interrupciones

xxx

Registro Descripcin

11.5.1

Mover interrupciones entre la aplicacin y arranque Espacio, ATmega88PA, ATmega168PA y ATmega328P


El Registro de Control MCU controla la colocacin de la tabla vector de interrupcin.

11.5.2

MCUCR - MCU Registro de Control


Bit

0x35 (0x55)

Lectura / Escritura

Valor inicial

BODSE

PUD

IVSEL

IVCE

R/W

R/W

R/W

Bods

MCUCR

Bit 1 - IVSEL: vector de interrupcin Select


Cuando se borra el bit IVSEL (cero), los vectores de interrupcin se colocan al inicio del flash
la memoria. Cuando este bit se establece (uno), los vectores de interrupcin se desplazan hasta el comienzo de la Bota
Seccin del cargador del flash. La direccin real del inicio de la Seccin de flash de arranque se determinada por los fusibles BOOTSZ. Consulte la seccin "Gestor de arranque de apoyo - Leer-While-Escribir
Auto-Programacin, ATmega88PA, ATmega168PA y ATmega328P "en la pgina 277 para ms detalles.
Para evitar cambios involuntarios de tablas de vectores de interrupcin, un procedimiento de escritura especial debe ser guiente
guido de cambiar el bit IVSEL:

a. Escriba el vector de interrupcin Cambio Enable (IVCE) poco a uno.


b.

Dentro de los cuatro ciclos, escribir el valor deseado para IVSEL al escribir un cero a IVCE.

Las interrupciones se desactivar automticamente mientras se ejecuta esta secuencia. Las interrupciones estn deshabilitadas
en el IVCE ciclo se establecen y permanecen inhabilitadas hasta despus de la instruccin siguiente a la escritura a

68
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


IVSEL. Si IVSEL no est escrito, las interrupciones permanecen desactivadas durante cuatro ciclos. El bit I en el Estado
Registro no se ve afectada por la desactivacin automtica.
Nota:

Si los vectores de interrupcin se colocan en la seccin del gestor de arranque y bloqueo de arranque el bit BLB02 est
programada,
las interrupciones estn deshabilitadas durante la ejecucin de la seccin Aplicacin. Si se colocan vectores de interrupcin
se programa en la seccin Aplicacin y bloqueo de arranque BLB12 poco, las interrupciones estn deshabilitadas mientras
la ejecucin de la seccin del cargador de arranque. Consulte la seccin "El apoyo del gestor de arranque - Leer-tiempoEscribe Auto-Programacin, ATmega88PA, ATmega168PA y ATmega328P "en la pgina 277 para
detalles sobre los bits de bloqueo de arranque.

Bit 0 - IVCE: vector de interrupcin Cambio Habilitar


El bit IVCE debe estar escrito a uno lgico para permitir el cambio de la broca IVSEL. IVCE se borra
hardware cuatro ciclos despus est escrito o cuando IVSEL est escrito. El establecimiento del bit IVCE deshabilitar
interrupciones, como se explica en la descripcin IVSEL anteriormente. Ver Ejemplo de cdigo a continuacin.

Cdigo Asamblea Ejemplo


Move_interrupts:
; Habilitar el cambio de vectores de interrupcin
LDI r16, (1 << IVCE)
fuera MCUCR, r16
; Mover interrumpe arrancar seccin de Flash
LDI r16, (1 << IVSEL)
fuera MCUCR, r16
enriar

Cdigo C Ejemplo
vaco Move_interrupts (void)
{
/ * Habilitar el cambio de vectores de interrupcin * /
MCUCR = (1 << IVCE);
/ * Mover interrumpe a la seccin Flash de arranque *
/
MCUCR = (1 << IVSEL);
}

69
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

12. interrupciones externas


Las interrupciones externas son provocados por los pasadores INT0 y INT1 o alguna de las patas PCINT23..0.
Observe que, si est habilitado, las interrupciones activarn incluso si el INT0 y INT1 o pasadores PCINT23..0
se configuran como salidas. Esta caracterstica proporciona una manera de generar una interrupcin de software. La
cambio pin de interrupcin PCI2 se disparar si alguna alterna pin PCINT23..16 habilitadas. El cambio pin
interrupcin PCI1 se disparar si alguna alterna pin PCINT14..8 habilitadas. El cambio de pin de interrupcin pci0
desencadenar si cualquier pin PCINT7..0 habilitado alterna. El PCMSK2, PCMSK1 y PCMSK0 Registros de control que contribuyan a los pines interrupciones Cambiar PIN. Cambio Pin interrumpe en
PCINT23..0 se detectan de forma asncrona. Esto implica que estas interrupciones se pueden utilizar para
despertar la parte tambin de los modos de suspensin que no sean el modo de espera.

Las interrupciones INT0 y INT1 pueden ser provocados por un flanco de bajada o de subida o un nivel bajo. Es
establecer como se indica en el pliego de condiciones de la interrupcin externa Registro de Control A - EICRA.
Cuando las interrupciones INT0 o INT1 estn habilitados y se configuran como nivel desencadenada, la interRupts activarn siempre y cuando el pasador se mantiene baja. Tenga en cuenta que el reconocimiento de la cada o el flanco
ascendente
interrumpe en INT0 o INT1 requiere la presencia de un reloj de I / O, se describe en "Sistemas de reloj
y su distribucin "en la pgina 26. Bajo nivel de interrupcin en INT0 y INT1 se detecta crono
intravenosa. Esto implica que esta interrupcin se puede utilizar para despertar la parte tambin de los modos de suspensin
que no sea el modo de espera. El reloj de E / S se detiene en todos los modos de suspensin, excepto el modo de espera.
Tenga en cuenta que si una interrupcin activada nivel se utiliza para despertar de la Energa-abajo, el nivel requerido
deben rendir lo suficiente para que el MCU para completar el despertador para activar la alarma de nivel. Si
el nivel desaparece antes de que finalice el tiempo de puesta en marcha, el MCU todava se despierta, pero no interrupt se generar. El tiempo de arranque se define por el SUT y CKSEL fusibles como se describe
en "El reloj del sistema y opciones de reloj" en la pgina 26.

12.1

Cambio de Pin de interrupcin Timing


Un ejemplo de la oportunidad de una interrupcin de cambio pines se muestra en Figura 12-1.
Figura 12-1. Momento de interrupciones Cambiar PIN
pin_lat

PCInt (0)
LE

clk

pcint_in_ (0)

pcint_syn

pcint_setflag
PCIF

pin_sync
x
PCInt (0) en PCMSK (x)
clk

clk

PCInt (0)

pin_lat

pin_sync

pcint_in_ (0)

pcint_syn

pcint_setflag

PCIF

70
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


12.2

Registro Descripcin

12.2.1

EICRA - externo de control de interrupcin Registro A


El externo de control de interrupcin registro A contiene bits de control para el control de sentido de interrupcin.
Bit

(0x69)

ISC11

ISC10

ISC01

ISC00

Lectura / Escritura

R/W

R/W

R/W

R/W

Valor inicial

EICRA

Bit 7..4 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

El bit 3, 2 - ISC11, ISC10: Interrupcin Sentido de control 1 bit 1 y el bit 0


La interrupcin externa 1 es activado por el pin INT1 externo si el I-bandera SREG y el diente
corres- mscara de interrupcin se establecen. El nivel y bordes en el pin INT1 externo que activar el
interrupcin se definen en Tabla 12-1. El valor en el pin INT1 se muestrea antes de detectar
bordes. Si se selecciona el borde o de palanca de interrupcin, los pulsos que duran ms de un periodo de reloj voluntad
generar una interrupcin. Pulsos ms cortos no estn garantizados para generar una interrupcin. Si bajo nivel
se selecciona interrupcin, el bajo nivel debe mantenerse hasta la finalizacin de la que se est ejecutando
instrucciones para generar una interrupcin.

Tabla 12-1.

Interrumpir 1 Sentido de control

ISC11

ISC10

Descripcin

El bajo nivel de INT1 genera una solicitud de interrupcin.

Cualquier cambio lgico en INT1 genera una solicitud de interrupcin.

El flanco de bajada de INT1 genera una solicitud de interrupcin.

El flanco ascendente de INT1 genera una solicitud de interrupcin.

El bit 1, 0 - ISC01, ISC00: Interrupcin Sense Control 0 Bit 1 y Bit 0


La interrupcin externa 0 es activado por el INT0 pin externo si el I-bandera SREG y el diente
corres- mscara de interrupcin se establecen. El nivel y bordes en el pasador INT0 externo que activar el
interrupcin se definen en Tabla 12-2. El valor en el pasador INT0 se muestrea antes de detectar
bordes. Si se selecciona el borde o de palanca de interrupcin, los pulsos que duran ms de un periodo de reloj voluntad
generar una interrupcin. Pulsos ms cortos no estn garantizados para generar una interrupcin. Si bajo nivel
se selecciona interrupcin, el bajo nivel debe mantenerse hasta la finalizacin de la que se est ejecutando
instrucciones para generar una interrupcin.

Tabla 12-2.

Interrumpir 0 Sentido de control

ISC01

ISC00

Descripcin

El bajo nivel de INT0 genera una solicitud de interrupcin.

Cualquier cambio lgico en INT0 genera una solicitud de interrupcin.

El flanco de bajada de INT0 genera una solicitud de interrupcin.

El flanco ascendente de INT0 genera una solicitud de interrupcin.

71
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

12.2.2

EIMSK - Interrupcin externa Mask Register


Bit

0x1D (0x3D)

INT1

INT0

Lectura / Escritura

R/W

R/W

Valor inicial

EIMSK

Bit 7..2 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

Bit 1 - INT1: Interrupcin externa Solicitud 1 Habilitar


Cuando el bit se establece INT1 (uno) y la I-bit en el Registro de Estado (SREG) se establece (uno), la externamente
interrupcin pin nal est habilitada. La interrupcin Sense Control1 bits de 1/0 (ISC11 y ISC10) en el
Interrupcin externa Registro de Control A (EICRA) definir si se activa la interrupcin externa
al levantarse y / o descendente del pasador INT1 o nivel detectado. Actividad sobre el pasador causar una
solicitud de interrupcin INT1 incluso si est configurado como una salida. La interrupcin correspondiente Externo
Solicitud de interrupcin 1 se ejecuta desde la INT1 vector de interrupcin.

Bit 0 - INT0: Interrupcin externa Solicitud 0 Habilitar


Cuando el bit se establece INT0 (uno) y la I-bit en el Registro de Estado (SREG) se establece (uno), la externamente
interrupcin pin nal est habilitada. La interrupcin Sense Control0 bits de 1/0 (ISC01 y ISC00) en el
Interrupcin externa Registro de Control A (EICRA) definir si se activa la interrupcin externa
al levantarse y / o descendente del pasador INT0 o nivel detectado. Actividad sobre el pasador causar una
solicitud de interrupcin INT0 incluso si est configurado como una salida. La interrupcin correspondiente Externo
Solicitud de interrupcin 0 se ejecuta desde el INT0 vector de interrupcin.

12.2.3

EIFR - Bandera de Interrupcin Externa Registro


Bit

0x1C (0x3C)

INTF1

INTF0

Lectura / Escritura

R/W

R/W

Valor inicial

EIFR

Bit 7..2 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

Bit 1 - INTF1: Externa de la bandera de interrupcin 1


Cuando un borde o la lgica del cambio en el pin INT1 desencadena una solicitud de interrupcin, INTF1 cuaja
(Uno). Si el bit I en SREG y el bit INT1 en EIMSK se establecen (uno), la MCU saltar a la correspondiente
responder vector de interrupcin. La bandera se borra cuando se ejecuta la rutina de interrupcin.
Alternativamente, la bandera se puede borrar escribiendo un uno lgico para l. Esta bandera es siempre aclar
INT1 cuando se configura como una alarma de nivel.

Bit 0 - INTF0: Externa interrupcin Sealizar 0


Cuando un borde o la lgica del cambio en el pin INT0 desencadena una solicitud de interrupcin, INTF0 cuaja
(Uno). Si el bit I en SREG y el bit INT0 en EIMSK se establecen (uno), la MCU saltar a la correspondiente
responder vector de interrupcin. La bandera se borra cuando se ejecuta la rutina de interrupcin.
Alternativamente, la bandera se puede borrar escribiendo un uno lgico para l. Esta bandera es siempre aclar
cuando INT0 se configura como una alarma de nivel.

72
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


12.2.4

PCICR - Pin Cambio de control de interrupcin Registro


Bit

(0x68)

PCIE2

PCIE1

PCIE0

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

PCICR

Bit 7..3 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

Bit 2 - PCIE2: Pin Cambio habilitacin de interrupcin 2


Cuando el bit se establece PCIE2 (uno) y la I-bit en el Registro de Estado (SREG) se establece (uno), pin
se habilita el cambio de interrupcin 2. Cualquier cambio en cualquier pin PCINT23..16 habilitado causar una interrupt. La interrupcin correspondiente de Pin Cambio de solicitud de interrupcin se ejecuta desde el PCI2
Vector de interrupcin. Pasadores PCINT23..16 estn habilitados de forma individual por el Registro PCMSK2.

Bit 1 - PCIE1: Pin Cambio habilitacin de interrupcin 1


Cuando el bit se establece PCIE1 (uno) y la I-bit en el Registro de Estado (SREG) se establece (uno), pin
se habilita el cambio de interrupcin 1. Cualquier cambio en cualquier pin PCINT14..8 habilitado causar una interrupt. La interrupcin correspondiente de Pin Cambio de solicitud de interrupcin se ejecuta desde el PCI1
Vector de interrupcin. Pasadores PCINT14..8 estn habilitados de forma individual por el Registro PCMSK1.

Bit 0 - PCIE0: Pin Cambio habilitacin de interrupcin 0


Cuando el bit se establece PCIE0 (uno) y la I-bit en el Registro de Estado (SREG) se establece (uno), pin
se habilita el cambio de interrupcin 0. Cualquier cambio en cualquier pin PCINT7..0 habilitado causar una interrupcin.
La interrupcin correspondiente de Pin Cambio de solicitud de interrupcin se ejecuta desde el pci0 Internacional
rupt Vector. Pasadores PCINT7..0 estn habilitados de forma individual por el Registro PCMSK0.

12.2.5

PCIFR - Cambio de Pin de interrupcin de la bandera de


Registro
Bit

0x1B (0x3B)

PCIF2

PCIF1

PCIF0

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

PCIFR

Bit 7..3 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

Bit 2 - PCIF2: Cambio de Pin de interrupcin de la bandera 2


Cuando un cambio de lgica en cualquier pin PCINT23..16 desencadena una solicitud de interrupcin, PCIF2 cuaja
(Uno). Si el bit I en SREG y el bit PCIE2 en PCICR se establecen (uno), la MCU saltar a la
correspondiente vector de interrupcin. La bandera se borra cuando se ejecuta la rutina de interrupcin. Alternativo
de forma nativa, la bandera se puede borrar escribiendo un uno lgico para l.

Bit 1 - PCIF1: Cambio de Pin de interrupcin de la bandera 1


Cuando un cambio de lgica en cualquier pin PCINT14..8 desencadena una solicitud de interrupcin, PCIF1 cuaja
(Uno). Si el bit I en SREG y el bit PCIE1 en PCICR se establecen (uno), la MCU saltar a la
correspondiente vector de interrupcin. La bandera se borra cuando se ejecuta la rutina de interrupcin. Alternativo
de forma nativa, la bandera se puede borrar escribiendo un uno lgico para l.

73
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Bit 0 - PCIF0: Cambio de Pin de interrupcin de la bandera 0


Cuando un cambio de lgica en cualquier pin PCINT7..0 desencadena una solicitud de interrupcin, PCIF0 cuaja
(Uno). Si el bit I en SREG y el bit PCIE0 en PCICR se establecen (uno), la MCU saltar a la
correspondiente vector de interrupcin. La bandera se borra cuando se ejecuta la rutina de interrupcin. Alternativo
de forma nativa, la bandera se puede borrar escribiendo un uno lgico para l.

12.2.6

PCMSK2 - Pin Cambio Mscara Registro 2


Bit
(0x6D)
Lectura / Escritura

PCINT23

PCINT22

PCINT21

PCINT20

PCINT19

PCINT18

PCINT17

PCINT16

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

PCMSK2

Bit 7..0 - PCINT23..16: Pin Cambio Habilitar Mscara 23..16


Cada PCINT23..16 bits selecciona si el cambio pin de interrupcin est habilitada en el correspondiente E / S
pin. Si PCINT23..16 se establece y el bit PCIE2 en PCICR est establecido, el cambio pin de interrupcin est habilitada en
el correspondiente pin E / S. Si PCINT23..16 se borra, el cambio pin de interrupcin en el correspondiente
Pin E / S est desactivada.

12.2.7

PCMSK1 - Pin Cambio Mscara Registro 1


Bit

(0x6C)

PCINT14

PCINT13

PCINT12

PCINT11

PCINT10

PCINT9

PCINT8

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

PCMSK1

Bit 7 - Res: Reservado Bit


Este bit es un bit no utilizado en la ATmega48PA / 88PA / 168PA / 328P, y siempre lea como cero.
Bit 6..0 - PCINT14..8: Pin Cambio Habilitar Mscara 14..8
Cada PCINT14..8 bits selecciona si el cambio pin de interrupcin est habilitada en el correspondiente E / S
pin. Si PCINT14..8 se establece y el bit PCIE1 en PCICR est establecido, el cambio pin de interrupcin est habilitada en
el correspondiente pin E / S. Si PCINT14..8 se borra, el cambio pin de interrupcin en el correspondiente
Pin E / S est desactivada.

12.2.8

PCMSK0 - Pin Cambio Mscara Regstrate 0


Bit

(0x6B)

PCINT7

PCINT6

PCINT5

PCINT4

PCINT3

PCINT2

PCINT1

PCINT0

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

PCMSK0

Bit 7..0 - PCINT7..0: Pin Cambio Habilitar Mscara 7..0


Cada bit PCINT7..0 selecciona si el cambio pin de interrupcin est habilitada en el correspondiente E / S
pin. Si PCINT7..0 se establece y el bit PCIE0 en PCICR est establecido, el cambio pin de interrupcin est habilitada en el
pin de E / S correspondiente. Si PCINT7..0 se borra, el cambio pin de interrupcin en el correspondiente pin E / S
est deshabilitado.

74
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

13. I / O-Puertos
13.1

Visin de conjunto
Todos los puertos de AVR tienen verdadera funcionalidad lectura-modificacin-escritura cuando se usa como puertos generales de
E / S digitales.
Esto significa que la direccin de un pin del puerto se puede cambiar sin cambiar involuntariamente
la direccin de cualquier otro pasador con las instrucciones SBI y la ICC. Lo mismo se aplica al cambiar
ing valor unidad (si est configurado como salida) o la activacin / desactivacin de resistencias pull-up (si est configurado como
entrada). Cada bfer de salida tiene caractersticas de accionamiento simtricos tanto con alta fregadero y fuente
capacidad. El conductor pin es lo suficientemente fuerte como para controlar directamente los indicadores LED. Todos los pines
del puerto tienen indicacin
resistencias pull-up dualmente seleccionables con una resistencia invariante suministro voltaje. Todos los pines I / O tienen
diodos de proteccin tanto a VCC y tierra como se indica en Figura 13-1. Referirse a "Char- Elctrico
caracte- "en la pgina 313 para obtener una lista completa de parmetros.
Figura 13-1. I / O Pin Esquema Equivalente

Rpu
Lgica

Pxn

Cpin

Ver Figura
"General Digital I / O" para
Detalles

Todos los registros y referencias bits en esta seccin estn escritos en forma general. Una minscula "x" representan
senta la letra de numeracin para el puerto, y una minscula "n" representa el nmero de bit. Sin embargo,
cuando se utiliza el registro o poco define en un programa, debe utilizarse la forma precisa. Por ejemplo,
PORTB3 por poco no. 3 en Port B, aqu documentados generalmente como PORTxn. La E / S fsica Registros y ubicaciones de bits se enumeran en "Registrar Descripcin" en la pgina 92.

Tres de E / S ubicaciones de direccin de memoria son asignados para cada puerto, uno para el Registro de Datos
- Direccin PORTx, registro de datos - DDRx, y los pines de entrada del puerto - Pinx. Los pines del puerto de entrada
E / S ubicacin es de slo lectura, mientras que el registro de datos y la Direccin de Datos Registro son de lectura / escritura.
Sin embargo, escribiendo un uno lgico a un bit en el registro Pinx, se traducir en una palanca en la correspondiente
ing poco en el Registro de Datos. Adems, el pull-up Desactivar - poco PUD en MCUCR desactiva el
pull-up funcin para todos los pines en todos los puertos cuando se establece.

Usando el puerto de E / S como el General E / S digitales se describe en "Puertos como General E / S digital" en la pgina
76. La mayora de los pines del puerto son multiplexados con funciones alternativas para las funciones perifricas en el
dispositivo. Cmo cada funcin alternativa interfiere con el pin del puerto se describe en "Puerto alternativo
Funciones "en la pgina 80. Consulte las secciones de cada mdulo para obtener una descripcin completa de la alternativa
funciones nate.

75
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tenga en cuenta que la activacin de la funcin alternativa de algunos de los pines del puerto no afecta el uso de la
otros pines en el puerto como E / S digitales en general.

13.2

Puertos como General E / S digitales


Los puertos son bidireccionales puertos I / O con opcionales pull-ups internas. Figura 13-2 muestra una funcin
Descripcin cional de pin de E / S-puerto, aqu genricamente llamado Pxn.
Figura 13-2. General de E / S digital(1)

PUD

DDxn
Q CLR

WDX
REINICIO
RDX

DATOS DE
BUS

1
Q

Pxn

PORTxn
Q CLR

REINICIO
WRX
SLEEP

WPX

RRx

SINCRONIZADOR
RPx
D

PINxn
Q

clk I / O

PUD:
SUEO:
clkI / O:

Nota:

13.2.1

PULLUP DISABLE
CONTROL DE SUEO
I O CLOCK /

WDX:
RDX:
WRX:
RRx:
RPx:
WPX:

ESCRIBIR DDRx
LEER DDRx
ESCRIBIR PORTx
LEA PORTx REGISTRO
LEA PORTx PIN
ESCRIBIR Pinx REGISTRO

1. WRX, WPX, WDX, RRx, RPx y RDX son comunes a todos los pines en el mismo puerto. clkI / S,
SLEEP, y PUD son comunes a todos los puertos.

Configuracin del Pin


Cada pin del puerto se compone de tres bits de registro: DDxn, PORTxn y PINxn. Como se muestra en "Registro
Descripcin "en la pgina 92, los bits DDxn se accede a la direccin DDRx de E / S, los bits PORTxn
en el PORTx direccin E / S, y los bits PINxn en la direccin de PINX de E / S.
El bit DDxn en el Registro DDRx selecciona la direccin de este perno. Si DDxn est escrito uno lgico,
Pxn est configurado como un pin de salida. Si DDxn est escrito cero lgico, Pxn est configurado como una entrada
pin.
Si PORTxn est escrito uno lgico cuando el pasador est configurado como un pin de entrada, la resistencia pull-up es
activado. Para cambiar la resistencia de actuacin fuera, PORTxn tiene que ser cero lgico escrito o el pasador tiene que
ser configurado como un pin de salida. Los pines del puerto son tri declar cuando la condicin de reset se activa,
incluso si hay relojes estn ejecutando.

76
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Si PORTxn est escrito uno lgico cuando el pasador est configurado como un pin de salida, el pin del puerto es impulsado
alta (uno). Si PORTxn est escrito cero lgico cuando el pasador est configurado como un pin de salida, el puerto
pin es accionado bajo (cero).

13.2.2

Alternar el Pin
Escribir un uno lgico para PINxn cambia el valor de PORTxn, independiente del valor de DDRxn.
Tenga en cuenta que la instruccin OSE se puede utilizar para cambiar un solo bit en un puerto.

13.2.3

Cambiar entre entrada y salida


Al cambiar entre tri-estatal ({DDxn, PORTxn} = 0b00) y salida de alta ({DDxn, PORTxn}
= 0b11), un estado intermedio, ya sea con pull-up activado {DDxn, PORTxn} = 0b01) o de salida
baja ({DDxn, PORTxn} = 0b10) debe ocurrir. Normalmente, el estado de pull-up habilitado es totalmente aceptable
capaz, como un entorno de alta impedancia no notar la diferencia entre una fuerte alta
conductor y un pull-up. Si este no es el caso, el bit PUD en el Registro MCUCR se puede configurar para visualizar
capaces todos pull-ups en todos los puertos.

El cambio entre entrada con pull-up y bajo gasto genera el mismo problema. El usuario
debe utilizar el tri-estatal ({DDxn, PORTxn} = 0b00) o el alto estado de la salida ({DDxn, PORTxn}
= 0b11) como un paso intermedio.
Tabla 13-1 resume las seales de control para el valor pin.
Tabla 13-1.

13.2.4

Port Pin Configuraciones

DDxn

PORTxn

PUD
(En MCUCR)

I/O

Pull-up

Entrada

No

Tri-estatal (Hi-Z)

Entrada

Pxn ser fuente de corriente si ext. tirado bajo.

Entrada

No

Tri-estatal (Hi-Z)

Salida

No

Salida Baja (Sink)

Salida

No

Salida alta (Fuente)

Comentario

Leyendo el Valor Pin


Independientemente de la configuracin de la direccin de los datos poco DDxn, el pin del puerto se puede leer a travs de la
PINxn Registro mordi. Como se muestra en Figura 13-2, el bit PINxn Registro y la con- pestillo anterior
Instituto un sincronizador. Esto es necesario para evitar metaestabilidad si el pin fsico cambia de valor
cerca del borde del reloj interno, sino que tambin introduce un retardo. Figura 13-3 muestra un dilogo calendario
gramo de la sincronizacin cuando se lee un valor de pin aplicado externamente. El mximo y
retrasos mnimos de propagacin se denotan tpd, max y tpd, min, respectivamente.

77
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 13-3. Sincronizacin al leer un valor Pin Externamente Aplicada

SISTEMA CLK
INSTRUCCIONES

XXX

XXX

en r17, Pinx

SYNC LATCH
PINxn
r17

0x00

0xFF

t pd, mx
t pd, min

Considere el periodo de reloj comenzando poco despus de la primera flanco de bajada del reloj del sistema. El pestillo
se cierra cuando el reloj es baja, y va transparente cuando el reloj es alta, como se indica por la
regin sombreada de la seal "SYNC LATCH". El valor de la seal est bloqueada cuando el reloj del sistema
pasa a baja. Se registr en el Registro PINxn en el flanco de reloj positivo xito. Como indicacin
cado por las dos flechas tpd, Max y tpd, min, una sola transicin de la seal en el pin se retrasar
entre y 1 perodo reloj del sistema en funcin del momento de afirmacin.

Al leer de nuevo un software asignado valor pin, una instruccin nop debe insertarse como indicacin
indica en Figura 13-4. La instruccin a cabo pone la seal "SYNC LATCH" en el flanco positivo de
el reloj. En este caso, la demora tpd a travs del sincronizador es 1 periodo de reloj de sistema.

Figura 13-4. Sincronizacin Al leer un software asignadas Pin Valor

SISTEMA CLK
r16
INSTRUCCIONES

0xFF

fuera PORTx, r16

nop

en r17, Pinx

SYNC LATCH
PINxn
r17

0x00

0xFF

t pd

El ejemplo de cdigo siguiente se muestra cmo configurar los pines del puerto B 0 y 1 de alto, bajo 2 y 3, y definir
los pines del puerto 4-7 como entrada con pull-ups asignados a los pines del puerto 6 y 7. El pasador resultante
valores se leen de nuevo, pero como se mencion anteriormente, una instruccin NOP se incluye para poder
para leer el valor recientemente asignado a algunos de los pasadores.

78
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Cdigo Asamblea Ejemplo(1)
...
;Definir pull-ups y establecer salidas de alta
;Definir direcciones para pines del puerto

fuera

r16, (1 << PB7) | (1 << PB6) | (1 << PB1) | (1 <<


PB0)
r17, (1 << DDB3) | (1 << DDB2) | (1 << DDB1) | (1 <<
DDB0)
PORTB, r16

fuera

DDRB, r17

LDI
LDI

;Inserte nop para la sincronizacin


nop
;Leer pines del puerto
en

r16, PINB

...

Cdigo C Ejemplo
unsigned char yo;
...
/ * Definir pull-ups y establecer salidas de alta * /
/ * Definir direcciones para pines del puerto * /
PORTB = (1 << PB7) | (1 << PB6) | (1 << PB1) | (1 <<
PB0);
DDRB = (1 << DDB3) | (1 << DDB2) | (1 << DDB1) | (1 <<
DDB0);
/ * Inserte nop para la sincronizacin * /
__no_operation ();
/ * Leer pines del puerto * /
i = PINB;
...
Nota:

13.2.5

1. Para el programa de montaje, dos registros temporales se utilizan para minimizar el tiempo de pull
ups se establecen en los pines 0, 1, 6 y 7, hasta que los bits de direccin se establecen correctamente, que define el bit 2 y 3
los bits tan bajas y la redefinicin de 0 y 1 conductores de hasta fuertes.

Habilitar entrada digital y modos de espera


Como se muestra en Figura 13-2, la seal de entrada digital se puede sujetar a tierra en la entrada de la
Schmitt Trigger. La seal denotado SLEEP en la figura, es fijado por el controlador MCU Dormir en
El modo de apagado, el modo de ahorro de energa, y el modo en espera para evitar el alto consumo de energa si
algunas seales de entrada se quedan flotando, o tener un nivel de seal analgica cerca de VCC / 2.

SLEEP se anula para pines del puerto habilitados como pines de interrupcin externas. Si la interrupcin externa
solicitud no est habilitado, el sueo es activo tambin para estos pines. SLEEP tambin se sustituye por diversos
otras funciones alternativas como se describe en "Funciones puerto alternativo" en la pgina 80.
Si un nivel lgico alto ("uno") est presente en un pin de interrupcin externa asincrnica configurado como
"Interrumpir en Rising Edge, Falling Edge, o cualquier cambio de lgica en el Pin", mientras que la interrupcin externa
es no habilitado, el correspondiente indicador de interrupcin externa se ajustar al reanudar desde el
anteriormente el modo de suspensin mencionado, como la sujecin de stos modo de suspensin produce la solicitada
cambio de la lgica.

13.2.6

Prendedores inconexas
Si algunos pines estn sin uso, se recomienda asegurarse de que estos pines tienen un nivel definido. Incluso
aunque la mayora de las entradas digitales estn desactivadas en los modos de sueo profundo como se describi anteriormente, flotante

79
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


insumos ing se debe evitar para reducir el consumo de corriente en todos los dems modos de donde lo digital
entradas estn habilitadas (Reset, el modo activo y el modo inactivo).
El mtodo ms simple para asegurar un nivel definido de un pasador no utilizado, es permitir que el interior pull-up.
En este caso, el pull-up se desactivar durante el restablecimiento. Si baja el consumo de energa durante el reset es
importante, se recomienda utilizar una externa pull-up o pull-down. Conexin de pines no utilizados
directamente a VCC o GND no es recomendable, ya que esto puede causar corrientes excesivas si el pin es
accidentalmente configurado como una salida.

13.3

Funciones puerto alternativo


La mayora de los pines del puerto tienen funciones alternativas, adems de ser digital E / S general. Figura 13-5
muestra cmo las seales de control pin del puerto desde el simplificado Figura 13-2 en la pgina 76 puede ser excesiva
montado por funciones alternativas. Las seales imperiosas pueden no estar presentes en todos los pines del puerto, pero el
cifra sirve como una descripcin genrica aplicable a todos los pines del puerto en el microcontrolador AVR
familia.

Figura 13-5. Funciones puerto alternativo(1)


PUOExn
PUOVxn
1

PUD

DDOExn
DDOVxn
1
QD
DDxn

Q CLR

WDX
PVOExn

REINICIO
RDX

PVOVxn

DATOS DE
BUS

Pxn
Q

PORTxn

PTOExn
Q CLR

DIEOExn
DIEOVxn

WPX

REINICIO

WRX

RRx
0

SLEEP
SINCRONIZADOR
RPx
SET

PINxn
L

CLR

CLR

clk I / O

DIxn

AIOxn

PUOExn:
PUOVxn:
DDOExn:
DDOVxn:
PVOExn:
PVOVxn:
DIEOExn:
DIEOVxn:
SUEO:
PTOExn:

Nota:

Pxn PULL-UP ANULACIN HABILITAR


Pxn PULL-UP Reemplazar valor
Pxn DIRECCIN DE DATOS DE AUMENTO AL ACTIVAR
Pxn DIRECCIN DE DATOS DE ANULACIN DE VALOR
Pxn PORT Reemplazar valor HABILITAR
Pxn PORT VALOR DE AUMENTO VALOR
Pxn DIGITAL ENTRADA-HABILITAR HABILITAR ANULACIN
Pxn DIGITAL ENTRADA-ACTIVAR VALOR DE ANULACIN
CONTROL DE SUEO
Pxn, PUERTO DE PALANCA DE ANULACIN HABILITAR

PUD:
WDX:
RDX:
RRx:
WRX:
RPx:
WPX:
clkI / O:
DIxn:
AIOxn:

PULLUP DISABLE
ESCRIBIR DDRx
LEER DDRx
LEA PORTx REGISTRO
ESCRIBIR PORTx
LEA PORTx PIN
Pinx WRITE
I O CLOCK /
PIN DE ENTRADA DIGITAL n EN PORTx
ANALGICA ENTRADA / SALIDA PIN n EN PORTx

1. WRX, WPX, WDX, RRx, RPx y RDX son comunes a todos los pines en el mismo puerto. clkI / S,
SLEEP, y PUD son comunes a todos los puertos. Todas las dems seales son nicos para cada pin.

80
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 13-2 resume la funcin de las seales de polica. Los ndices de pasador y portuarios de HigoUre 13-5 en la pgina 80 no se muestran en las tablas siguientes. Las seales son primordiales
generado internamente en los mdulos tienen la funcin alternativa.
Tabla 13-2.

Descripcin genrica de Seales imperiosas para funciones alternativas

Nombre de la seal Nombre Completo

Descripcin

PUOE

Anulacin de Pull-up
Permitir

Si se establece esta seal, el pull-up permite es controlado por el PUOV


seal. Si esta seal est desactivada, el pull-up se activa cuando
{DDxn, PORTxn, PUD} = 0b010.

PUOV

Anulacin de Pull-up
Valor

Si PUOE se establece, el pull-up se activa / desactiva cuando PUOV es


set / despejado, independientemente de la configuracin de la DDxn, PORTxn,
y PUD Registro bits.

DDOE

Direccin de Datos
Anular Activar

Si se establece esta seal, el controlador de habilitacin de salida es controlada por la


Seal DDOV. Si esta seal est desactivada, el Controlador de salida es
habilitado por el DDxn Registro poco.

DDOV

Direccin de Datos
Valor de invalidacin

PVOE

Valor de puerto
Anular Activar

PVOV

Valor de puerto
Valor de invalidacin

PTOE

Puerto Toggle
Anular Activar

Si PTOE est establecido, la PORTxn Registro poco se invierte.

DIEOE

Entrada Digital
Habilitar Anulacin
Permitir

Si este bit est establecido, la entrada digital Enable es controlado por el


Seal DIEOV. Si esta seal se borra, Activar la entrada digital
est determinado por el estado MCU (modo normal, modo de suspensin).

DIEOV

Entrada Digital
Habilitar Anulacin
Valor

Si DIEOE est establecido, la entrada digital se activa / desactiva cuando


DIEOV se establece / despejado, independientemente del estado MCU (Normal
modo, el modo de suspensin).

DI

Entrada Digital

Esta es la entrada digital para funciones alternativas. En la figura, el


la seal est conectada a la salida de la Schmitt Trigger pero
antes de que el sincronizador. A menos que la entrada digital se utiliza como
fuente de reloj, el mdulo con la funcin alternativa har uso de su
propia sincronizador.

AIO

Analog
Entrada / Salida

Esta es la entrada analgica / salida a / de funciones alternativas. La


de seal est conectado directamente a la almohadilla, y se puede utilizar bidireccionalmente.

Si DDOE se establece, el Driver de salida se activa / desactiva cuando


DDOV se establece / despejado, independientemente de la configuracin de la
DDxn
Registrar poco.
Si esta seal se establece y el Driver de salida est activada, el puerto
valor es controlado por la seal de PVOV. Si PVOE se borra, y
el Driver de salida est activada, el valor del puerto es controlado por el
PORTxn Registro mordi.
Si PVOE est establecido, el valor del puerto se establece en PVOV,
independientemente de la
configuracin del Registro PORTxn mordi.

Las siguientes subsecciones describen brevemente las funciones alternativas para cada puerto, y se refieren al
seales insalvables para la funcin alternativa. Consulte la descripcin alternativa funcin para obtener ms
detalles.

81
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

13.3.1

Funciones alternativas de Puerto B


Los pines del puerto B con funciones alternativas se muestran en Tabla 13-3.
Tabla 13-3.
Port Pin

Funciones Puerto B prendedores Alternos


Funciones Alternos

PB7

XTAL2 (Chip Reloj Oscilador pin 2)


TOSC2 (Temporizador Oscilador pin 2)
PCINT7 (Pin Cambio de interrupcin 7)

PB6

(Pin chip de reloj oscilador 1 o entrada de reloj externo) XTAL1


TOSC1 (Temporizador Oscilador pin 1)
PCINT6 (Pin Cambio de interrupcin 6)

PB5

SCK (SPI Bus reloj Entrada Maestra)


PCINT5 (Pin Cambio de interrupcin 5)

PB4

MISO (SPI Bus Master de entrada / salida del esclavo)


PCINT4 (Pin Cambio de interrupcin 4)

PB3

MOSI (SPI Bus Master Output / Input Esclavo)


OC2A (Timer / Contador2 Output Compare coinciden con una salida)
PCINT3 (Pin Cambio de interrupcin 3)

PB2

SS (SPI Bus Master Slave seleccionar)


OC1B (Timer / Counter1 salida Comparar Partido B Salida)
PCINT2 (Pin Cambio de interrupcin 2)

PB1

OC1A (Timer / Counter1 Output Compare coinciden con una salida)


PCINT1 (Pin Cambio de interrupcin 1)

PB0

ICP1 (Timer / Counter1 entrada de captura de entrada)


CLKO (Partido Clock Output System)
PCINT0 (Pin Cambio de interrupcin 0)

La configuracin de pines alternativo es el siguiente:


XTAL2 / TOSC2 / PCINT7 - Puerto B, Bit 7
XTAL2: Chip pin oscilador de reloj 2. Se utiliza como pin de reloj para el oscilador de cristal o de baja frecuencia
cristal oscilador. Cuando se usa como un pasador de reloj, el pasador no puede ser utilizado como un pin de I / O.
TOSC2: Temporizador Oscilador pin 2. Se usa slo si es interno calibrado oscilador RC es seleccionado como el chip
fuente de reloj y el temporizador asncrono est activado por el ajuste correcto en ASSR. Cuando el
Bit AS2 en ASSR se establece (uno) y el bit EXCLK se borra (cero) para permitir sentido de las agujas asncrono
cin de temporizador / Contador2 usando el oscilador de cristal, pin PB7 se desconecta del puerto, y
se convierte en la salida inversora del amplificador del oscilador. En este modo, un oscilador de cristal es conconectado a esta clavija, y la clavija no se pueden utilizar como un pin de I / O.

PCINT7: Pin Cambiar fuente de interrupcin 7. El pasador PB7 puede servir como una fuente de interrupcin externa.
Si PB7 se utiliza como un pin de reloj, DDB7, PORTB7 y PINB7 ser todo ledo 0.
XTAL1 / TOSC1 / PCINT6 - Puerto B, Bit 6
XTAL1: Chip pin oscilador de reloj 1. Se utiliza para todas las fuentes de reloj de chip excepto interna calibrada RC
Oscilador. Cuando se usa como un pasador de reloj, el pasador no puede ser utilizado como un pin de I / O.
TOSC1: Temporizador Oscilador pin 1. Se usa slo si es interno calibrado oscilador RC es seleccionado como el chip
fuente de reloj y el temporizador asncrono est activado por el ajuste correcto en ASSR. Cuando el

82
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Poco AS2 en ASSR se establece (uno) para habilitar sincronizacin asncrona de Timer / Contador2, pines PB6 se visualiza
conectado desde el puerto, y se convierte en la entrada del amplificador oscilador inversora. En este
de modo, un oscilador de cristal est conectado a esta clavija, y la clavija no puede ser utilizado como un pin de I / O.
PCINT6: Pin Cambiar fuente de interrupcin 6. El pasador PB6 puede servir como una fuente de interrupcin externa.
Si PB6 se utiliza como un pin de reloj, DDB6, PORTB6 y PINB6 ser todo ledo 0.
SCK / PCINT5 - Puerto B, Bit 5
SCK: Salida de reloj maestro, Slave Clock pin de entrada para el canal SPI. Cuando el SPI est habilitado como un
Slave, este pin se configura como una entrada, independientemente del ajuste de DDB5. Cuando el SPI es
habilitado como un Maestro, la direccin de los datos de este pin es controlado por DDB5. Cuando se fuerza el pasador
por el SPI que sea una entrada, el pull-up todava puede ser controlado por el bit de PORTB5.

PCINT5: Pin Cambiar fuente de interrupcin 5. El pasador PB5 puede servir como una fuente de interrupcin externa.
MISO / PCINT4 - Puerto B, Bit 4
MISO: Entrada de datos maestros, pin de salida de datos del esclavo para el canal SPI. Cuando el SPI est habilitado como un
Maestro, este perno est configurado como una entrada, independientemente del ajuste de DDB4. Cuando el SPI es
habilitado como un esclavo, la direccin de los datos de este pin es controlado por DDB4. Cuando se fuerza el pasador
por el SPI que sea una entrada, el pull-up todava puede ser controlado por el bit de PORTB4.

PCINT4: Pin Cambiar fuente de interrupcin 4. El pin PB4 puede servir como una fuente de interrupcin externa.
MOSI / OC2 / PCINT3 - Puerto B, Bit 3
MOSI: Salida de datos Maestro SPI, la entrada de datos del esclavo para el canal SPI. Cuando el SPI est habilitado como un
Slave, este pin se configura como una entrada, independientemente del ajuste de DDB3. Cuando el SPI es
habilitado como un Maestro, la direccin de los datos de este pin es controlado por DDB3. Cuando se fuerza el pasador
por el SPI que sea una entrada, el pull-up todava puede ser controlado por el bit de PORTB3.

OC2, comparacin de salida de salida del partido: El pin PB3 puede servir como una salida externa para la
Timer / Contador2 Comparar Partido. El pin PB3 tiene que ser configurado como una salida (conjunto DDB3
(Uno)) para servir a esta funcin. El pasador OC2 es tambin el pin de salida para el temporizador del modo PWM
funcin.
PCINT3: Pin Cambiar fuente de interrupcin 3. El pin PB3 puede servir como una fuente de interrupcin externa.
SS / OC1B / PCINT2 - Puerto B, Bit 2
SS: Slave Select entrada. Cuando el SPI est habilitado como un esclavo, este pin se configura como una entrada
independientemente de la configuracin de DDB2. Como un esclavo, el SPI se activa cuando este pin es impulsado bajo.
Cuando el SPI est habilitado como un Maestro, la direccin de los datos de este pin es controlado por DDB2. Cundo
el pasador se ve obligado por el SPI ser una entrada, el pull-up todava puede ser controlado por el bit de PORTB2.

OC1B, comparacin de salida de salida del partido: El pin PB2 puede servir como una salida externa para la
Timer / Counter1 Comparar pin Partido B. El PB2 tiene que ser configurado como una salida (conjunto DDB2
(Uno)) para servir a esta funcin. El pasador OC1B es tambin el pin de salida para el temporizador del modo PWM
funcin.
PCINT2: Pin Cambiar fuente de interrupcin 2. El pin PB2 puede servir como una fuente de interrupcin externa.
OC1A / PCINT1 - Puerto B, Bit 1
OC1A, comparacin de salida de salida del partido: El pasador PB1 puede servir como una salida externa para la
Timer / Counter1 Comparar Partido A. El pasador PB1 tiene que ser configurado como una salida (conjunto DDB1

83
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


(Uno)) para servir a esta funcin. El pasador OC1A es tambin el pin de salida para el temporizador del modo PWM
funcin.
PCINT1: Pin Cambiar fuente de interrupcin 1. El pasador de PB1 puede servir como una fuente de interrupcin externa.
ICP1 / CLKO / PCINT0 - Puerto B, Bit 0
ICP1, Pin de captura de entrada: El pasador PB0 puede actuar como un Pin de captura de entrada para el temporizador /
Counter1.
CLKO, Reloj del Sistema Dividido: El reloj del sistema dividido puede ser la salida en el pin PB0. La
reloj del sistema ser dividido de salida si el CKOUT Fuse est programado, independientemente de la
PORTB0 y DDB0 ajustes. Tambin se emitir durante el restablecimiento.
PCINT0: Pin Cambiar fuente de interrupcin 0. El pasador PB0 puede servir como una fuente de interrupcin externa.
Tabla 13-4 y Tabla 13-5 en la pgina 85 relacionar las funciones alternativas de Puerto B a la imperiosa
seales se muestra en la Figura 13-5 en la pgina 80. SPI MSTR INPUT y SPI ESCLAVO DE SALIDA constuyen la seal MISO, MOSI mientras se divide en SPI MSTR SALIDA y SPI esclavo de entrada.

Tabla 13-4.

Seales imperiosas para funciones alternativas en PB7..PB4

Seal
Nombre

PB7 / XTAL2 /
TOSC2 / PCINT7(1)

PB6 / XTAL1 /
TOSC1 / PCINT6(1)

PB5 / SCK /
PCINT5

PB4 / MISO /
PCINT4

PUOE

INTRC EXTCK +
AS2

INTRC + AS2

SPE MSTR

SPE MSTR

PUOV

PORTB5 PUD

PORTB4 PUD

DDOE

INTRC EXTCK +
AS2

INTRC + AS2

SPE MSTR

SPE MSTR

DDOV

PVOE

SPE MSTR

SPE MSTR

PVOV

SALIDA SCK

SPI ESCLAVO
SALIDA

DIEOE

INTRC EXTCK +
AS2 + PCINT7
PCIE0

INTRC + AS2 +
PCINT6 PCIE0

PCINT5 PCIE0

PCINT4 PCIE0

DIEOV

(INTRC + EXTCK)
AS2

INTRC AS2

DI

PCINT7 ENTRADA

PCINT6 ENTRADA

PCINT5 ENTRADA
SCK ENTRADA

PCINT4 ENTRADA
SPI MSTR ENTRADA

AIO

Oscilador de salida

Oscilador / Reloj
Entrada

Notas:

1. INTRC significa que uno de los osciladores RC internos son seleccionados (por los fusibles CKSEL),
EXTCK significa que se selecciona el reloj externo (por los fusibles CKSEL)

84
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 13-5.

13.3.2

Seales imperiosas para funciones alternativas en PB3..PB0

Seal
Nombre

PB3 / MOSI /
OC2 / PCINT3

PB2 / SS /
OC1B / PCINT2

PB1 / OC1A /
PCINT1

PB0 / ICP1 /
PCINT0

PUOE

SPE MSTR

SPE MSTR

PUOV

PORTB3 PUD

PORTB2 PUD

DDOE

SPE MSTR

SPE MSTR

DDOV

PVOE

SPE MSTR +
OC2A HABILITAR

OC1B HABILITAR

OC1A HABILITAR

PVOV

SPI MSTR SALIDA


+ OC2A

OC1B

OC1A

DIEOE

PCINT3 PCIE0

PCINT2 PCIE0

PCINT1 PCIE0

PCINT0 PCIE0

DIEOV

DI

PCINT3 ENTRADA
SPI esclavo de entrada

PCINT2 ENTRADA
SPI SS

PCINT1 ENTRADA

PCINT0 ENTRADA
ICP1 ENTRADA

AIO

Funciones alternativas de Puerto C


Los pines del puerto C con funciones alternativas se muestran en Tabla 13-6.
Tabla 13-6.
Port Pin

Funciones Puerto C prendedores Alternos


Funcin Alterna

PC6

RESET (Restablecer pin)


PCINT14 (Pin Cambio de interrupcin 14)

PC5

(Canal ADC Input 5) ADC5


SCL (2 cables Serial Bus Line Reloj)
PCINT13 (Pin Cambio de interrupcin 13)

PC4

(Canal ADC Entrada 4) ADC4


SDA (2 hilos Entrada Serial Bus lnea de datos / salida)
PCINT12 (Pin Cambio de interrupcin 12)

PC3

(Canal ADC Input 3) ADC3


PCINT11 (Pin Cambio de interrupcin 11)

PC2

(Canal ADC Input 2) ADC2


PCINT10 (Pin Cambio de interrupcin 10)

PC1

(Canal ADC Input 1) ADC1


PCINT9 (Pin Cambio de interrupcin 9)

PC0

(Canal ADC de entrada 0) ADC0


PCINT8 (Pin Cambio de interrupcin 8)

85
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


La configuracin de pines alternativo es el siguiente:
RESET / PCINT14 - Puerto C, Bit 6
RESET, Restablecer pin: Cuando el RSTDISBL fusible est programado, este PIN funciona como una E / S normal
pin, y la parte tendrn que confiar en Power-on Reset y reinicio Brown-como sus fuentes de restablecimiento.
Cuando el RSTDISBL Fuse es no programado, el circuito de reset est conectado a la estaca, y la
PIN no se puede utilizar como un pin de I / O.

Si PC6 se utiliza como un pin de reset, DDC6, PORTC6 y PINC6 sern todos leer 0.
PCINT14: Pin Cambiar fuente de interrupcin 14. El pasador PC6 puede servir como una interrupcin externa
fuente.
SCL / ADC5 / PCINT13 - Puerto C, Bit 5
SCL, 2 hilos de reloj de interfaz Serial: Cuando el bit TWEN en TWCR se establece (uno) para que el 2cable de interfaz serie, pin PC5 se desconecta del puerto y se convierte en la serie del reloj de E / S
pines para el 2 hilos Interface serie. En este modo, hay un filtro de picos en el pasador para suprimir
clavos ms cortos de 50 ns en la seal de entrada, y el pasador es accionado por un conductor de drenaje abierto con
limitacin montn de tipos.

PC5 tambin se puede utilizar como entrada ADC Channel 5. Obsrvese que ADC canal de entrada 5 usos digitales
de energa.
PCINT13: Pin Cambiar fuente de interrupcin 13. El pin PC5 puede servir como una interrupcin externa
fuente.
SDA / ADC4 / PCINT12 - Puerto C, Bit 4
SDA, 2 cables de interfaz serie de datos: Cuando el bit TWEN en TWCR se establece (uno) para que el 2 hilos
Interfaz de serie, pin PC4 se desconecta del puerto y se convierte en la serie pin de datos de E / S para
el 2 hilos de interfaz serie. En este modo, hay un filtro de picos en el pasador para suprimir los picos
menor de 50 ns en la seal de entrada y el pin est impulsado por un motor de drenaje abierto con slewLmite de la tasa.

PC4 tambin se puede utilizar como entrada ADC Channel 4. Tenga en cuenta que ADC canal de entrada 4 usos digitales
de energa.
PCINT12: Pin Cambiar fuente de interrupcin 12. El pasador PC4 puede servir como una interrupcin externa
fuente.
ADC3 / PCINT11 - Puerto C, Bit 3
PC3 tambin se puede utilizar como entrada ADC Canal 3. Ntese que ADC canal de entrada 3 utiliza analgica
de energa.
PCINT11: Pin Cambiar fuente de interrupcin 11. El pasador PC3 puede servir como una interrupcin externa
fuente.
ADC2 / PCINT10 - Puerto C, Bit 2
PC2 tambin se puede utilizar como entrada ADC Canal 2. Obsrvese que ADC canal de entrada 2 utiliza analgica
de energa.
PCINT10: Pin Cambiar fuente de interrupcin 10. El pin PC2 puede servir como una interrupcin externa
fuente.

86
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

ADC1 / PCINT9 - Puerto C, Bit 1


PC1 tambin se puede utilizar como entrada ADC Channel 1. Ntese que ADC canal de entrada 1 utiliza analgica
de energa.
PCINT9: Pin Cambiar fuente de interrupcin 9. El pasador PC1 puede servir como una fuente de interrupcin externa.
ADC0 / PCINT8 - Puerto C, Bit 0
PC0 tambin se puede utilizar como entrada ADC Canal 0. Ntese que ADC canal de entrada 0 utiliza analgico
de energa.
PCINT8: Pin Cambiar fuente de interrupcin 8. El pasador PC0 puede servir como una fuente de interrupcin externa.
Tabla 13-7 y Tabla 13-8 relacionar las funciones alternativas de Puerto C a las seales primordiales
se muestra en la Figura 13-5 en la pgina 80.
Seales imperiosas para funciones alternativas en PC6..PC4 (1)

Tabla 13-7.
Seal
Nombre

PC6 / RESET / PCINT14

PC5 / SCL / ADC5 / PCINT13

PC4 / SDA / ADC4 / PCINT12

PUOE

RSTDISBL

TWEN

TWEN

PUOV

PORTC5 PUD

PORTC4 PUD

DDOE

RSTDISBL

TWEN

TWEN

DDOV

SCL_OUT

SDA_OUT

PVOE

TWEN

TWEN

PVOV

DIEOE

RSTDISBL + PCINT14
PCIE1

PCINT13 PCIE1 + ADC5D

PCINT12 PCIE1 + ADC4D

DIEOV

RSTDISBL

PCINT13 PCIE1

PCINT12 PCIE1

DI

PCINT14 ENTRADA

PCINT13 ENTRADA

PCINT12 ENTRADA

AIO

Entrada de reset

ADC5 ENTRADA / INPUT SCL

ADC4 ENTRADA / SDA ENTRADA

Nota:

1. Cuando se activa, el 2 hilos de interfaz Serial permite controles de velocidad de respuesta en el PC4 pines de salida
y PC5. Esto no se muestra en la figura. Adems, los filtros de espiga estn conectados entre el
AIO salidas mostradas en la figura puerto y de la lgica digital del mdulo TWI.

87
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 13-8.

13.3.3

Seales imperiosas para funciones alternativas en PC3..PC0

Seal
Nombre

PC3 / ADC3 /
PCINT11

PC2 / ADC2 /
PCINT10

PC1 / ADC1 /
PCINT9

PC0 / ADC0 /
PCINT8

PUOE

PUOV

DDOE

DDOV

PVOE

PVOV

DIEOE

PCINT11 PCIE1 +
ADC3D

PCINT10 PCIE1 +
ADC2D

PCINT9 PCIE1 +
ADC1D

PCINT8 PCIE1 +
ADC0D

DIEOV

PCINT11 PCIE1

PCINT10 PCIE1

PCINT9 PCIE1

PCINT8 PCIE1

DI

PCINT11 ENTRADA

PCINT10 ENTRADA

PCINT9 ENTRADA

PCINT8 ENTRADA

AIO

ADC3 ENTRADA

ADC2 ENTRADA

ADC1 ENTRADA

ADC0 ENTRADA

Funciones alternativas de Port D


Los pines del puerto D con funciones alternativas se muestran en Tabla 13-9.
Tabla 13-9.
Port Pin

Funciones Port D prendedores Alternos


Funcin Alterna

PD7

AIN1 (analgico Comparador entrada negativa)


PCINT23 (Pin Cambio de interrupcin 23)

PD6

AIN0 (Analog Input Positivo Comparador)


OC0A (Timer / Counter0 Output Compare coinciden con una salida)
PCINT22 (Pin Cambio de interrupcin 22)

PD5

T1 (temporizador / contador contador 1 Entrada externa)


OC0B (Timer / Counter0 salida Comparar Partido B Salida)
PCINT21 (Pin Cambio de interrupcin 21)

PD4

XCK (Entrada USART reloj externo / Salida)


T0 (Temporizador / Contador Contador 0 Entrada externa)
PCINT20 (Pin Cambio de interrupcin 20)

PD3

INT1 (interrupcin externa 1 entrada)


OC2B (Timer / Contador2 salida Comparar Partido B Salida)
PCINT19 (Pin Cambio de interrupcin 19)

PD2

INT0 (interrupcin externa 0 Entrada)


PCINT18 (Pin Cambio de interrupcin 18)

PD1

TXD (USART salida Pin)


PCINT17 (Pin Cambio de interrupcin 17)

PD0

RXD (USART Pin de entrada)


PCINT16 (Pin Cambio de interrupcin 16)

88
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


La configuracin de pines alternativo es el siguiente:
AIN1 / OC2B / PCINT23 - Port D, Bit 7
AIN1, comparador analgico de entrada negativo. Configurar el pin del puerto como entrada con la interna de pull-up
apagado para evitar la funcin de puerto digital de interferir con la funcin de la analgica
Comparador.
PCINT23: Pin Cambiar fuente de interrupcin pin 23. El PD7 puede servir como una interrupcin externa
fuente.
AIN0 / OC0A / PCINT22 - Port D, Bit 6
AIN0, comparador analgico de entrada positiva. Configurar el pin del puerto como entrada con la interna de pull-up
apagado para evitar la funcin de puerto digital de interferir con la funcin de la analgica
Comparador.
OC0A, comparacin de salida de salida del partido: El pasador PD6 puede servir como una salida externa para la
Timer / Counter0 Comparar pin Partido A. El PD6 tiene que ser configurado como una salida (conjunto DDD6
(Uno)) para servir a esta funcin. El pasador OC0A es tambin el pin de salida para el temporizador del modo PWM
funcin.
PCINT22: Pin Cambiar fuente de interrupcin pin 22. El PD6 puede servir como una interrupcin externa
fuente.
T1 / OC0B / PCINT21 - Port D, Bit 5
T1, fuente contador Temporizador / Counter1.
OC0B, comparacin de salida de salida del partido: El pin PD5 puede servir como una salida externa para la
Timer / Counter0 Comparar pin Partido B. El PD5 tiene que ser configurado como una salida (conjunto DDD5
(Uno)) para servir a esta funcin. El pasador OC0B es tambin el pin de salida para el temporizador del modo PWM
funcin.
PCINT21: Pin Cambiar fuente de interrupcin pin 21. El PD5 puede servir como una interrupcin externa
fuente.
XCK / T0 / PCINT20 - Port D, Bit 4
XCK, USART reloj externo.
T0, fuente contador Temporizador / Counter0.
PCINT20: Pin Cambiar fuente de interrupcin pin 20. La PD4 puede servir como una interrupcin externa
fuente.
INT1 / OC2B / PCINT19 - Port D, Bit 3
INT1, fuente de interrupcin externa 1: El pasador PD3 puede servir como una fuente de interrupcin externa.
OC2B, comparacin de salida de salida del partido: El pasador PD3 puede servir como una salida externa para la
Timer / Counter0 Comparar pin Partido B. El PD3 tiene que ser configurado como una salida (conjunto DDD3
(Uno)) para servir a esta funcin. El pasador OC2B es tambin el pin de salida para el temporizador del modo PWM
funcin.
PCINT19: Pin Cambiar fuente de interrupcin pin 19. El PD3 puede servir como una interrupcin externa
fuente.

89
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


INT0 / PCINT18 - Port D, Bit 2
INT0, interrupcin externa fuente 0: El pasador PD2 puede servir como una fuente de interrupcin externa.
PCINT18: Pin Cambiar fuente de interrupcin pin 18. El PD2 puede servir como una interrupcin externa
fuente.
TXD / PCINT17 - Port D, Bit 1
TXD, Transmitir datos (pin de salida de datos para el USART). Cuando el transmisor USART est activada,
este perno est configurado como una salida independientemente del valor de DDD1.
PCINT17: Pin Cambiar fuente de interrupcin pin 17. El PD1 puede servir como una interrupcin externa
fuente.
RXD / PCINT16 - Port D, Bit 0
RXD Recibir datos (pin de entrada de datos para el USART). Cuando el receptor USART se habilita esta
pin se configura como una entrada, independientemente del valor de DDD0. Cuando el USART obliga este pin
ser una entrada, el pull-up todava puede ser controlado por el bit de PORTD0.
PCINT16: Pin Cambiar fuente de interrupcin pin 16. El PD0 puede servir como una interrupcin externa
fuente.
Tabla 13-10 y Tabla 13-11 relacionar las funciones alternativas de Port D a las seales primordiales
se muestra en la Figura 13-5 en la pgina 80.

Tabla 13-10. Seales imperiosas para funciones alternativas PD7..PD4


Seal
Nombre

PD7 / AIN1
/ PCINT23

PD6 / AIN0 /
OC0A / PCINT22

PD5 / T1 / OC0B /
PCINT21

PD4 / XCK /
T0 / PCINT20

PUOE

PUO

DDOE

DDOV

PVOE

OC0A HABILITAR

OC0B HABILITAR

UMSEL

PVOV

OC0A

OC0B

XCK SALIDA

DIEOE

PCINT23 PCIE2

PCINT22 PCIE2

PCINT21 PCIE2

PCINT20 PCIE2

DIEOV

DI

PCINT23 ENTRADA

PCINT22 ENTRADA

PCINT21 ENTRADA
T1 ENTRADA

PCINT20 ENTRADA
XCK ENTRADA
T0 ENTRADA

AIO

AIN1 ENTRADA

AIN0 ENTRADA

90
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 13-11. Seales imperiosas para funciones alternativas en PD3..PD0


Seal
Nombre

PD3 / OC2B / INT1 /


PCINT19

PD2 / INT0 /
PCINT18

PD1 / TXD /
PCINT17

PD0 / RXD /
PCINT16

PUOE

TXEN

RXEN

PUO

PORTD0 PUD

DDOE

TXEN

RXEN

DDOV

PVOE

OC2B HABILITAR

TXEN

PVOV

OC2B

TXD

DIEOE

ACTIVAR INT1 +
PCINT19 PCIE2

ACTIVAR INT0 +
PCINT18 PCIE1

PCINT17 PCIE2

PCINT16 PCIE2

DIEOV

DI

PCINT19 ENTRADA
INT1 ENTRADA

PCINT18 ENTRADA
INT0 ENTRADA

PCINT17 ENTRADA

PCINT16 ENTRADA
RXD

AIO

91
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

13.4

Registro Descripcin

13.4.1

MCUCR - MCU Registro de Control


Bit

0x35 (0x55)

Lectura / Escritura

Valor inicial

BODSE

PUD

IVSEL

IVCE

R/W

R/W

R/W

Bods

MCUCR

Bit 4 - PUD: Pull-up Desactivar


Cuando este bit se escribe en uno, los pull-ups en los puertos de E / S estn inhabilitadas incluso si el DDxn y
PORTxn registros estn configurados para permitir a los pull-ups ({DDxn, PORTxn} = 0b01). Ver "Concalcular el Pin "en la pgina 76 para ms detalles sobre esta funcin.

13.4.2

PORTB - El registro de datos del puerto B


Bit
0x05 (0x25)
Lectura / Escritura
Valor inicial

13.4.3

0x04 (0x24)
Lectura / Escritura
Valor inicial

0x03 (0x23)
Lectura / Escritura
Valor inicial

13.4.6

13.4.7

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

PORTB

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

DDRB

PINB - La Direccin pines del puerto B de entrada


Bit

13.4.5

6
PORTB6

DDRB - La Direccin Registro puerto B Datos


Bit

13.4.4

7
PORTB7

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

PINB

PORTC - El registro de datos Puerto C


Bit

0x08 (0x28)

PORTC6

PORTC5

PORTC4

PORTC3

PORTC2

PORTC1

PORTC0

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

PORTC

DDRC - La Direccin Registro puerto C Datos


Bit

0x07 (0x27)

DDC6

DDC5

DDC4

DDC3

DDC2

DDC1

DDC0

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

DDRC

PINC - La Direccin pines del puerto de entrada C


Bit

0x06 (0x26)

PINC6

PINC5

PINC4

PINC3

PINC2

PINC1

PINC0

Lectura / Escritura

Valor inicial

N/A

N/A

N/A

N/A

N/A

N/A

N/A

PINC

92
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


13.4.8

PORTD - El D Registro de Datos Puerto


Bit
0x0B (0x2B)
Lectura / Escritura
Valor inicial

13.4.9

PORTD6

PORTD5

PORTD4

PORTD3

PORTD2

PORTD1

PORTD0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

PORTD

DDRD - La Direccin Registro Port D Datos


Bit
0x0A (0x2A)
Lectura / Escritura
Valor inicial

04.13.10

7
PORTD7

DDD7

DDD6

DDD5

DDD4

DDD3

DDD2

DDD1

DDD0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

DDRD

PIND - La Direccin pines del puerto de entrada D


Bit
0x09 (0x29)
Lectura / Escritura
Valor inicial

PIND7

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

PIND

93
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

14. Temporizador de 8-bit / Counter0 con PWM


14.1

Caractersticas

14.2

Dos unidades de salida Independiente Comparar


Salida de bfer doble Comparar Registros
Timer Borrar en Partido Comparar (Auto Reload)
Glitch gratuito, Fase de Pulso correcta modulador de ancho (PWM)
Periodo PWM variable
Generador de frecuencia
Tres fuentes de interrupcin Independientes (TOV0, OCF0A y OCF0B)

Visin de conjunto
Timer / Counter0 es un mdulo temporizador / contador de propsito general de 8 bits, con dos de salida independiente
Comparar unidades, y con el apoyo de PWM. Permite la ejecucin del programa de temporizacin precisa (evento mandato
gestin) y la generacin de ondas.
Un diagrama de bloques simplificado del 8-bit del temporizador / contador se muestra en Figura 14-1. Para el actual
colocacin de pines de E / S, consulte "Pinout ATmega48PA / 88PA / 168PA / 328P" en la pgina 2. UPC
acceso de E / S Registros, incluyendo bits de E / S y pines I / O, se muestran en negrita. El especfica dispositivo
I / O Registro y ubicaciones bits enumerados en la "Registrar Descripcin" en la pgina 106.
El bit en PRTIM0 "Minimizar el consumo de energa" en la pgina 42 debe ser por escrito a cero para
permitir mdulo temporizador / Counter0.

94
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 14-1. 8-bit del temporizador / contador Diagrama de bloques
Contar

Tovn
(Int.Req.)

Claro
Logic Control
Direccin

clkTn

Reloj Seleccione
Borde
Detector

TOP

Tn

INFERIOR
(De Precontador)

Timer / Contador
TCNTn

=0
OCnA
(Int.Req.)
Waveform
Generacin

OCnA

OCRnA

DATOS DE
BUS

Fijo
TOP
Valor

OCnB
(Int.Req.)
Waveform
Generacin

OCnB

OCRnB

TCCRnA

14.2.1

TCCRnB

Definiciones
Muchas referencias de registro y de bits en esta seccin estn escritos en forma general. Una minscula "n"
reemplaza el nmero del temporizador / contador, en este caso 0. Una minscula "x" sustituye a la Comisin de salida
pare Unidad, en este caso Comparar Unidad A o Comparar Unidad B. Sin embargo, cuando se utiliza el registro o
bit define en un programa, la forma precisa debe ser utilizado, es decir, para acceder a TCNT0
Timer / Counter0 valor del contador y as sucesivamente.

Las definiciones en Tabla 14-1 Tambin se utilizan ampliamente en todo el documento.


Tabla 14-1.

14.2.2

Definiciones

INFERIOR

El contador llega al fondo cuando se convierte en 0x00.

MAX

El contador alcanza su mximo cuando se convierte en 0xFF (decimal 255).

TOP

El contador llega a la cima cuando se hace igual al valor ms alto de la


contar secuencia. El valor TOP puede ser asignado a ser el valor fijo 0xFF
(MAX) o el valor almacenado en el registro OCR0A. La asignacin es dependiente
abolladura en el modo de funcionamiento.

Registros
El temporizador / contador (TCNT0) y salida Compara Registros (OCR0A y OCR0B) son de 8 bits
registros. Solicitud de interrupcin (abreviado Int.Req. En la figura) seales son visibles en el
Interrupcin de temporizador Bandera Registro (TIFR0). Todas las interrupciones estn enmascaradas por separado con el
temporizador Internacional
rupt Mask Register (TIMSK0). TIFR0 y TIMSK0 no se muestran en la figura.

95
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


El temporizador / contador puede ser ajustado internamente, a travs de la pre-escalador, o por una fuente externa de reloj en
el pasador T0. Los controles de bloque lgico Reloj posicin Seleccione el reloj fuente y el borde del Timer / Contador
utiliza para aumentar (o disminuir) su valor. El temporizador / contador est inactivo si no hay fuente de reloj
est seleccionada. La salida de la lgica Reloj Seleccione se conoce como el reloj temporizador (clkT0).
La salida de doble buffer Comparar Registros (OCR0A y OCR0B) se comparan con los
Valor Timer / Contador en todo momento. El resultado de la comparacin puede ser utilizado por la forma de onda Gerador para generar un PWM o salida de frecuencia variable de la salida de comparacin pasadores (OC0A y
OC0B). Vea la seccin "15.7.3" en la pgina 123. para ms detalles. Tambin fijar el evento partido comparar la
Comparar Flag (OCF0A o OCF0B) que se puede utilizar para generar una salida de interrupcin Comparar
peticin.

14.3

Temporizador / contador Fuentes de reloj


El temporizador / contador puede ser ajustado a un interno o una fuente de reloj externa. La fuente de reloj
se selecciona por la lgica Reloj Seleccione el cual es controlado por el reloj Seleccione (CS02: 0) bits
situado en el Registro de Control de temporizador / contador (TCCR0B). Para ms detalles sobre las fuentes de reloj y la presin
Caler, consulte "Timer / Counter0 y Timer / Counter1 Prescalers" en la pgina 141.

14.4

Unidad de contador
La parte principal de la 8-bit del temporizador / contador es la unidad de contador bidireccional programable. Figura
14-2 muestra un diagrama de bloques del contador y sus alrededores.
Figura 14-2. Unidad contra el Diagrama de bloques
Tovn
(Int.Req.)

DATOS DE BUS

Reloj Seleccione
contar
claro

TCNTn

clkTn

Borde
Detector

Tn

Logic Control

direccin
(De Precontador)
fondo

superior

Descripcin de seales (seales internas):


contar

Aumentar o disminuir TCNT0 por 1.

direccin

Seleccione entre incremento y decremento.

claro

TCNT0 Claro (poner todos los bits a cero).

clkTn

Timer / Contador reloj, conocido como clkT0 en la siguiente.

superior

Sealizar que TCNT0 ha alcanzado el valor mximo.

fondo

Sealizar que TCNT0 ha alcanzado el valor mnimo (cero).

Dependiendo del modo de operacin utilizado, el contador se borra, incrementa o decrementa


en cada reloj temporizador (clkT0). clkT0 puede generarse a partir de una fuente de reloj externa o interna,
seleccionado por los bits Reloj Select (CS02: 0). Cuando se selecciona ninguna fuente de reloj (CS02: 0 = 0) la
temporizador se detiene. Sin embargo, el valor TCNT0 se puede acceder por la CPU, independientemente de
si clkT0 est presente o no. A las anulaciones de escritura del procesador (tiene prioridad sobre) todo contador clara o
contar las operaciones.

96
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


La secuencia de conteo se determina por el ajuste de los bits WGM01 y WGM00 ubicados en
el Registro Timer / Contador Control (TCCR0A) y el bit WGM02 ubicado en el Timer / Contador
Registro de Control B (TCCR0B). Existen estrechos vnculos entre el comportamiento del contador
(recuento) y cmo se generan formas de onda en la salida de comparacin salidas OC0A y OC0B.
Para ms detalles acerca de las secuencias de conteo avanzadas y generacin de formas de onda, consulte "Modos de
Operacin "en la pgina 99.

El / Contador Bandera desbordamiento Timer (TOV0) se establece en funcin del modo de funcionamiento seleccionado por
la WGM02: 0 bits. TOV0 se puede utilizar para generar una interrupcin de la CPU.

14.5

Salida Unidad Comparar


El comparador 8-bit compara continuamente TCNT0 con la salida de comparacin Registros
(OCR0A y OCR0B). Siempre es igual TCNT0 OCR0A o OCR0B, el comparador seala una
partido. Un partido marcar la comparacin de salida de la bandera (OCF0A o OCF0B) en la prxima reloj temporizador
ciclo. Si la interrupcin correspondiente est activada, la comparacin de salida Bandera genera una salida
Comparar interrumpir. La comparacin de salida de la bandera se borra automticamente cuando la interrupcin es ejerecortado. Alternativamente, la bandera se puede borrar software escribiendo un uno lgico para su bit I / O
ubicacin. El generador de forma de onda utiliza la seal de correspondencia para generar una salida de acuerdo con
modo de funcionamiento establecido por el WGM02: 0 bits y comparar Modo de salida (COM0x1: 0) bits. El mximo
y seales de fondo son utilizados por el generador de forma de onda para el manejo de los casos especiales de la
valores extremos en algunos modos de funcionamiento ("Modos de la operacin "en la pgina 99).

Figura 14-3 muestra un diagrama de bloques de la unidad de salida de comparacin.


Figura 14-3. Comparar Unidad de salida, Diagrama de bloques

DATOS DE BUS

OCRnx

TCNTn

=(Comparador 8-bit)
OCFnx (Int.Req.)

superior
fondo

Generador de onda

OCnx

FOCn

WGMn1: 0

COMnx1: 0

Los registros se almacenan OCR0x doble al utilizar cualquiera de la modulacin por ancho de pulso
(PWM) modos. Para el temporizador normal y Clear en Comparar (CTC) modos de funcionamiento, la duplica
buffering ble est desactivado. El doble bfer sincroniza la actualizacin de la OCR0x Comparar
Se registra en la parte superior o inferior de la secuencia de conteo. La sincronizacin evita la
ocurrencia de longitud impar, pulsos PWM no simtricas, con lo que la salida de glitch-libre.

97
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


El OCR0x Registro de acceso puede parecer complejo, pero este no es el caso. Cuando el doble buffer
est activada, la CPU tiene acceso a la Memoria de Registro OCR0x, y si el doble bfer se visualiza
habilitada la CPU acceder al OCR0x directamente.

14.5.1

Fuerza de comparacin de salida


En los modos de generacin de forma de onda no PWM, la salida del comparador partido puede ser forzado por
escribiendo un uno a la salida de la Fuerza Comparar (FOC0x) bits. Forzar partido comparar no fijar el
Bandera OCF0x o recargar / borrar el contador de tiempo, pero el pasador OC0x se actualizar como si una verdadera comparacin
partido haba ocurrido (el COM0x1: ajustes de 0 bits definen si el pin OC0x se establece, borra o
conmutado).

14.5.2

Comparar Partido bloqueo por TCNT0 Escribir


Todas las operaciones de la CPU de escritura en el Registro TCNT0 bloquearn cualquier comparar partido que se producen en el
siguiente ciclo de reloj temporizador, incluso cuando se detiene el temporizador. Esta caracterstica permite OCR0x sea inicializacin
zado para el mismo valor que TCNT0 sin desencadenar una interrupcin cuando el reloj / Contador Timer es
habilitado.

14.5.3

El uso de la unidad de salida de comparacin


Desde que escrib TCNT0 en cualquier modo de operacin bloquear todos comparar resultados para uno reloj temporizador
ciclo, existen riesgos al cambiar TCNT0 cuando se utiliza la comparacin de salida de la unidad,
independientemente de que el temporizador / contador est funcionando o no. Si el valor escrito para TCNT0
es igual al valor OCR0x, el partido comparar echar de menos, lo que resulta en forma de onda incorrecta
generacin. Del mismo modo, no escriba el valor TCNT0 igual a fondo cuando el contador se
conteo regresivo.

La configuracin de la OC0x se debe realizar antes de la Direccin Registro de datos para el


pin puerto de salida. La manera ms fcil de establecer el valor OC0x es utilizar la salida de la Fuerza Comisin
pare bits (FOC0x) estroboscpicas en el modo Normal. Los registros OC0x mantienen incluso cuando sus valores
cambiar entre los modos de forma de onda Generacin.
Tenga en cuenta que la COM0x1: 0 bits no se doble almacenamiento junto con el valor de comparacin.
Cambio de la COM0x1: 0 bits tendrn efecto inmediatamente.

14.6

Comparar Unidad de salida Partido


El modo de salida de comparacin (COM0x1: 0) Los bits tiene dos funciones. Los usos Waveform Generator
la COM0x1: 0 bits para definir la salida de comparacin (OC0x) estado en el prximo partido de comparar.
Adems, el COM0x1: 0 bits controlan la fuente de salida de pin OC0x. Figura 14-4 muestra una simplificado
esquemtico de la lgica afectada por el COM0x1: 0 entorno poco. La E / S de registros, E / S de bits, y E / S
alfileres en la figura se muestran en negrita. Slo las partes de los registros de control general de puerto de E / S (DDR
y PORT) que se ven afectados por el COM0x1: se muestran 0 bits. Al referirse a la OC0x
estado, la referencia es para el OC0x Registro interno, no el pin OC0x. Si se produce un reinicio del sistema,
el Registro OC0x se pone a "0".

98
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 14-4. Comparar Unidad de salida Partido, Esquema

COMnx1
COMnx0
FOCn

Waveform
Generador

Q
1

OCnx

OCnx
Perno
0

DATOS DE
BUS
PORT

DDR
clk I / O

La funcin de puerto de E / S generales es invalidada por la salida de comparacin (OC0x) de la forma de onda
Generador si alguna de las COM0x1: se establecen los bits 0. Sin embargo, la direccin OC0x pines (entrada o salida
put) todava est controlada por el registro de direccin de datos (DDR) para el pin del puerto. La Direccin de Datos
Registrar poco para el pasador OC0x (DDR_OC0x) se debe establecer como salida antes de que el valor OC0x es visible en el pasador. La funcin de anulacin puerto es independiente del modo de forma de onda Generation.

El diseo de la lgica pin de salida de comparacin permite la inicializacin del estado OC0x antes de la salida
put est habilitada. Tenga en cuenta que algunos COM0x1: ajustes de 0 bits estn reservados para ciertos modos de
operacin. Vea la seccin "14.9" en la pgina 106.

14.6.1

Comparar Modo de salida y de forma de onda Generacin


El Generador de forma de onda utiliza el COM0x1: 0 bits diferente en Normal, CTC, y los modos PWM.
Para todos los modos, estableciendo el COM0x1: 0 = 0 indica al generador de forma de onda que ninguna accin en el
OC0x Registro se va a realizar en el prximo partido comparar. Para acciones de salida de comparar en el
modos no PWM se refieren a Tabla 14-2 en la pgina 106. Para el modo PWM rpido, consulte Tabla 14-3 en
pgina 106, y para la fase correcta PWM consulte Tabla 14-4 en la pgina 107.

Un cambio de la COM0x1: 0 bits estado tendr efecto en el primer partido despus de comparar los bits son
por escrito. Para los modos no-PWM, la accin puede ser forzada a tener efecto inmediato mediante el uso de la
Pedacitos estroboscpicas FOC0x.

14.7

Modos de funcionamiento
El modo de funcionamiento, es decir, el comportamiento del temporizador / contador y la salida Comparar pines, es
definido por la combinacin del modo de forma de onda Generacin (WGM02: 0) y comparar salida
modo (COM0x1: 0) bits. Los bits de modo de comparacin de salida no afectan a la secuencia de conteo,
mientras que los bits de modo Waveform Generacin hacen. El COM0x1: 0 bits controlan si el PWM salida
put generada debe ser invertida o no (invertida o PWM no invertido). Para los modos no PWM
la COM0x1: 0 bits de control si la salida se debe establecer, borra, o alternar en una comparacin
partido (Ver Seccin "14.6" en la pgina 98.).

Para obtener informacin detallada momento consulte "Timer / Contador diagramas de tiempo" en la pgina 104.

99
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


14.7.1

Modo Normal
El modo ms simple de funcionamiento es el modo normal (WGM02: 0 = 0). En este modo el conteo
direccin es siempre hacia arriba (incremento), y ningn contador clara se realiza. El contador simplemente
sobrecostos cuando pasa a su valor de 8 bits mxima (TOP = 0xFF) y luego se reiniciar desde la parte inferior
tom (0x00). En funcionamiento normal, el / Contador Bandera desbordamiento Timer (TOV0) se encuentra en la misma
ciclo de reloj temporizador como el TCNT0 se convierte en cero. La bandera TOV0 en este caso se comporta como un noveno
bit, excepto que slo se establece, no se aclar. Sin embargo, combinado con el desbordamiento del temporizador de interrupcin
que borra automticamente la Bandera TOV0, la resolucin del temporizador se puede aumentar mediante software.
No hay casos especiales a tener en cuenta en el modo Normal, un nuevo valor del contador se puede escribir
en cualquier momento.

La unidad de salida de comparacin se puede utilizar para generar interrupciones en algn momento dado. El uso de las Salidas
put Comparar generar no se recomienda formas de onda en el modo Normal, ya que esta voluntad
ocupar demasiado del tiempo de CPU.

14.7.2

Timer Borrar en Match (CTC) Modo Comparar


En temporizador Borrar en el modo CTC Comparar o (WGM02: 0 = 2), el Registro OCR0A se utiliza para
manipular la resolucin del contador. En el modo de CTC el contador se pone a cero cuando el contador
valor (TCNT0) coincide con el OCR0A. El OCR0A define el valor superior para el mostrador, por lo tanto,
tambin su resolucin. Este modo permite un mayor control de la frecuencia de salida partido comparar. Ella
que tambin simplifica la operacin de contar eventos externos.

El diagrama de tiempos para el modo de CTC se muestra en Figura 14-5. El valor del contador (TCNT0)
aumenta hasta que se produce una coincidencia comparar entre TCNT0 y OCR0A, y luego contador
(TCNT0) se borra.

Figura 14-5. Modo de CTC, diagrama de tiempos


OCnx interrupcin Flag Set

TCNTn

OCn
(Cambiar)
Perodo

(COMnx1: 0 = 1)

Una interrupcin puede ser generada cada vez que el valor del contador alcanza el valor TOP mediante el uso de la
Bandera OCF0A. Si la interrupcin se habilita, la rutina de manejador de interrupcin se puede utilizar para la actualizacin
el valor TOP. Sin embargo, el cambio de TOP a un valor cercano a abajo cuando el contador est en marcha
cin con ninguno o un valor bajo prescaler debe hacerse con cuidado ya que el modo de CTC no
tienen la caracterstica de doble buffer. Si el nuevo valor escrito en OCR0A es inferior a la corriente
valor de TCNT0, el contador se perder el partido comparar. El contador entonces tendr que contar hasta
su valor mximo (0xFF) y envolver alrededor a partir de 0x00 antes del partido comparar posible
ocurrir.

Para generar una salida de forma de onda en el modo de CTC, la salida OC0A se puede configurar para cambiar su lgica
nivel en cada partido comparar estableciendo los bits de modo de salida Comparar con el modo de alternar
(COM0A1: 0 = 1). El valor OC0A no ser visible en el pin de puerto a menos que la direccin de datos del

100
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


el pasador se establece en la salida. La forma de onda generada tendr una frecuencia mxima de fOC0 =
fclk_I / O / 2 cuando OCR0A se ajusta a cero (0x00). La frecuencia de la forma de onda se define por la siguiente
ecuacin:
F clk_I / S
-f OCnx = -----------------------------------------------2 N ( 1+OCRnx )
La Nvariable representa el factor de preescala (1, 8, 64, 256, o 1024).
Como para el modo normal de funcionamiento, la Bandera TOV0 se encuentra en el mismo ciclo de reloj temporizador que la
contador cuenta de MAX a 0x00.
14.7.3

Modo PWM rpido


El pulso rpido modulacin de ancho o el modo PWM rpido (WGM02: 0 = 3 o 7) proporciona una alta frecuencia PWM opcin de generacin de forma de onda. El PWM rpido difiere de la otra opcin PWM por
su funcionamiento una sola pendiente. El contador cuenta desde abajo hacia arriba y luego se reinicia desde llas
TOM. TOP se define como 0xFF cuando WGM2: 0 = 3, y cuando OCR0A WGM2: 0 = no 7. En
invirtiendo Comparar modo de Salida, la salida de comparacin (OC0x) se despeja en el partido comparar
entre TCNT0 y OCR0x, y establecer en la parte inferior. En invirtiendo Comparar modo de salida, la salida
put se encuentra en partido comparar y se aclar en la parte inferior. Debido a la operacin de una sola pendiente, la
frecuencia de funcionamiento del modo PWM rpido puede ser dos veces tan alta como la fase correcta PWM
modo que utilice la operacin de doble pendiente. Esta alta frecuencia hace que el modo PWM rpido adecuado
para la regulacin de potencia, rectificacin y aplicaciones CAD. De alta frecuencia permite fsicamente pequeo
componentes de tamao externas (bobinas, condensadores), y por lo tanto reduce el coste total del sistema.

En el modo PWM rpido, el contador se incrementa hasta el valor del contador coincide con el valor SUPERIOR.
El contador se borra a continuacin en el siguiente ciclo de reloj temporizador. El diagrama de temporizacin para la rpida
El modo PWM se muestra en Figura 14-6. El valor TCNT0 est en el diagrama de temporizacin que muestra como una histogram para ilustrar la operacin de una sola pendiente. El diagrama incluye la no invertida y
salidas PWM invertida. Las pequeas marcas de lneas horizontales en las laderas TCNT0 representan comparan
partidos entre OCR0x y TCNT0.

Figura 14-6. PWM de modo rpido, diagrama de tiempos


OCRnx interrupcin Flag Set

OCRnx Actualizacin y
Tovn interrupcin Flag Set

TCNTn

OCnx

(COMnx1: 0 = 2)

OCnx

(COMnx1: 0 = 3)

Perodo

La bandera de desbordamiento del temporizador / contador (TOV0) se establece cada vez que el contador llegue a TOP. Si el interrupt est activado, la rutina de controlador de interrupcin se puede utilizar para actualizar el valor de comparacin.

101
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


En el modo PWM rpido, la unidad de comparacin permite la generacin de formas de onda PWM en los pines OC0x.
Ajuste del COM0x1: 0 bits para dos producir un PWM no invertida y una salida PWM invertida
se puede generar mediante el establecimiento de la COM0x1: 0 a tres: Ajuste de la COM0A1: 0 bits a uno permite
el pasador OC0A para alternar en Matches Compara si el bit WGM02 se establece. Esta opcin no est disponible
para el pasador OC0B (ver Tabla 14-6 en la pgina 107). El valor real OC0x slo ser visible en
el pin de puerto si la direccin de datos para el pin del puerto se configura como salida. La forma de onda PWM se genera
lizacin creada por el establecimiento (o compensacin) el Registro OC0x en el partido de comparar entre OCR0x y
TCNT0, y la limpieza (o configuracin) del Registro OC0x en el ciclo de reloj temporizador del contador es
despejados (cambios de arriba a abajo).

La frecuencia PWM para la salida se puede calcular por la siguiente ecuacin:


F clk_I / S
f OCnxPWM = -----------------N 256
La Nvariable representa el factor de preescala (1, 8, 64, 256, o 1024).
Los valores extremos para el Registro OCR0A representa casos especiales cuando se genera un PWM
forma de onda de salida en el modo PWM rpido. Si el OCR0A se fija igual a abajo, la salida
ser un pico estrecho para cada ciclo de reloj temporizador MAX + 1. Ajuste del OCR0A igual a MAX resultar
en una salida constantemente alta o baja (dependiendo de la polaridad de la salida establecido por el COM0A1: 0
los bits.)

Una frecuencia (con 50% de ciclo de trabajo) de salida de forma de onda en el modo PWM rpido se puede lograr por ajuste
ting OC0x para cambiar su nivel lgico en cada compara partido (COM0x1: 0 = 1). La forma de onda
generado tendr una frecuencia mxima de fOC0 = fclk_I / O / 2 cuando OCR0A se establece en cero. Este
caracterstica es similar a la de palanca OC0A en el modo de CTC, excepto la caracterstica de doble tampn de las Salidas
put unidad de comparacin se activa en el modo PWM rpido.

14.7.4

Fase Modo PWM correcta


El modo de fase correcta PWM (WGM02: 0 = 1 o 5) proporciona una fase de alta resolucin correcta
Opcin de generacin de forma de onda PWM. El modo PWM de fase correcta se basa en una doble pendiente
operacin. El contador cuenta repetidamente desde abajo hacia arriba y luego de arriba a abajo
TOM. TOP se define como 0xFF cuando WGM2: 0 = 1, y cuando OCR0A WGM2: 0 = no 5. En
invirtiendo Comparar modo de Salida, la salida de comparacin (OC0x) se despeja en el partido comparar
entre TCNT0 y OCR0x mientras conteo progresivo, y situado en el partido comparar mientras downcounting. En invirtiendo salida modo Comparar, se invierte la operacin. La operacin de doble pendiente tiene
menor frecuencia mxima operacin de la sola operacin pendiente. Sin embargo, debido a la symmetric caracterstica de los modos PWM de doble pendiente, se prefieren estos modos de control del motor
aplicaciones.

En el modo PWM de fase correcta el contador se incrementa hasta el valor del contador coincide TOP.
Cuando el contador llegue arriba, cambia el sentido de contaje. El valor TCNT0 ser igual
Hacia la parte superior de un ciclo de reloj temporizador. El diagrama de tiempos para el modo PWM de fase correcta se muestra
en Figura 14-7. El valor TCNT0 est en el diagrama de temporizacin se muestra como un histograma para ilustrar
la operacin de doble pendiente. El diagrama incluye salidas no invertidas e invertidas PWM. La
pequeas marcas de lneas horizontales en las laderas TCNT0 representan comparan partidos entre OCR0x
y TCNT0.

102
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 14-7. Fase PWM de modo correcto, diagrama de tiempos
OCnx interrupcin Flag Set

OCRnx Actualizacin

Tovn interrupcin Flag Set

TCNTn

OCnx

(COMnx1: 0 = 2)

OCnx

(COMnx1: 0 = 3)

Perodo

La bandera de desbordamiento del temporizador / contador (TOV0) se establece cada vez que el contador llegue a FONDO. La
Interrupcin de la bandera se puede utilizar para generar una interrupcin cada vez que el contador alcanza el fondo
valor.
En el modo PWM de fase correcta, la unidad de comparacin permite la generacin de formas de onda PWM en el
Pasadores OC0x. Ajuste del COM0x1: 0 bits para dos producir un PWM no invertida. Un invertida
Salida PWM se puede generar mediante el establecimiento de la COM0x1: 0 a tres: Configuracin de los bits a COM0A0
uno permite que el pasador OC0A para alternar en Matches Compara si el bit WGM02 se establece. Esta opcin es
no est disponible para el pasador OC0B (ver Tabla 14-7 en la pgina 108). El valor real OC0x slo ser
visible en el pin de puerto si la direccin de datos para el pin del puerto se configura como salida. La forma de onda PWM es
generada en la limpieza (o ajuste) del Registro OC0x en el partido de comparar entre OCR0x y
TCNT0 cuando el contador se incrementa, y el ajuste (o compensacin) el Registro OC0x a comparar
partido entre OCR0x y TCNT0 cuando el contador disminuye. La frecuencia PWM para el
de salida cuando se utiliza la fase PWM correcto se puede calcular por la siguiente ecuacin:

F clk_I / S
f OCnxPCPWM = -----------------N 510
La variable N representa el factor de preescala (1, 8, 64, 256, o 1024).
Los valores extremos para el Registro OCR0A representan casos especiales cuando se genera un PWM
forma de onda de salida en el modo PWM de fase correcta. Si el OCR0A se fija igual a abajo, las
salida ser continua baja y si se fija igual a MAX la salida ser continuamente alto para
no invertida modo PWM. Para PWM invertida la salida tendr los valores lgicos opuestos.
En el comienzo del perodo de 2 en Figura 14-7 OCnx tiene una transicin de alta a baja, aunque
No existe Compare Match. El punto de esta transicin es garantizar la simetra alrededor llas
TOM. Hay dos casos que dan una transicin sin Partido Comparar.
OCRnx cambia su valor de MAX, como en Figura 14-7. Cuando el valor es OCR0A MAX el
OCn valor pin es el mismo que el resultado de un conteo regresivo Compare Match. Para asegurar

103
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


simetra alrededor INFERIOR el valor OCnx en MAX debe corresponder al resultado de una ascendente
contando Compare Match.
El temporizador empieza a contar a partir de un valor ms alto que el de OCRnx, y por esa razn
no alcanza la comparacin Partido y de ah el cambio OCnx que habra ocurrido en el
camino hacia arriba.

14.8

Timer / Contador diagramas de tiempo


El temporizador / contador es, por tanto, un diseo sncrono y el reloj temporizador (clkT0) se muestra como un
reloj seal de habilitacin en las siguientes figuras. Las cifras incluyen informacin sobre cundo interrumpir
banderas se establecen. Figura 14-8 contiene datos de temporizacin para el funcionamiento bsico del temporizador / contador.
La cifra
muestra la secuencia de recuento cerca del valor MAX en todos los modos distintos de fase correcta PWM
de modo.
Figura 14-8. Temporizador / contador Cronograma, no preescala
clkI / S

clkTn
(ClkI / S / 1)

TCNTn

MAX - 1

MAX

INFERIOR

INFERIOR + 1

Tovn

Figura 14-9 muestra los mismos datos de temporizacin, pero con el prescaler habilitado.
Figura 14-9. Temporizador / contador Cronograma, con Precontador (fclk_I / S / 8)
clkI / S

clkTn
(ClkI / S / 8)

TCNTn

MAX - 1

MAX

INFERIOR

INFERIOR + 1

Tovn

Figura 14-10 muestra la configuracin de OCF0B en todos los modos y OCF0A en todos los modos excepto CTC
el modo y el modo PWM, donde OCR0A es TOP.

104
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 14-10. Temporizador / contador Cronograma, Ajuste de OCF0x, con Precontador (fclk_I / S / 8)
clkI / S

clkTn
(ClkI / S / 8)

TCNTn

OCRnx - 1

OCRnx

OCRnx

OCRnx + 1

OCRnx + 2

OCRnx Valor

OCFnx

Figura 14-11 muestra la configuracin de OCF0A y la limpieza de TCNT0 en modo CTC y rpido
Modo PWM donde OCR0A es TOP.
Figura 14-11. Temporizador / contador Cronograma, Borrar contador en el modo de ajuste de comparacin, con Precaler (fclk_I / S / 8)
clkI / S

clkTn
(ClkI / S / 8)

TCNTn
(CTC)

OCRnx

TOP - 1

TOP

INFERIOR

INFERIOR + 1

TOP

OCFnx

105
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

14.9

Registro Descripcin

14.9.1

TCCR0A - Temporizador / Contador Registro de Control A


Bit
0x24 (0x44)
Lectura / Escritura
Valor inicial

COM0A1

COM0A0

COM0B1

COM0B0

WGM01

WGM00

R/W

R/W

R/W

R/W

R/W

R/W

TCCR0A

Bits 7: 6 - COM0A1: 0: Comparar salida Partido A Modo


Estos bits controlan la comparacin de salida pin (OC0A) comportamiento. Si uno o ambos de los COM0A1: 0
bits se establecen, la salida OC0A anula la funcionalidad del puerto normal del pin E / S est conectado
a. Sin embargo, tenga en cuenta que la Direccin de Registro de Datos (DDR) bit correspondiente al pin OC0A
se debe establecer con el fin de permitir que el controlador de salida.

Cuando OC0A est conectado a la clavija, la funcin de la COM0A1: 0 bits depende de la


WGM02: ajuste bit 0. Tabla 14-2 muestra la COM0A1: 0 La funcionalidad de bit cuando el WGM02: 0 bits
se establece en un (no-PWM) normal o modo de CTC.
Tabla 14-2.

Comparar Modo de salida, de modo que no PWM

COM0A1

COM0A0

Descripcin

Operacin portuaria Normal, OC0A desconectado.

Alternar OC0A en Partido Comparar

OC0A Borrar en Partido Comparar

Establecer OC0A en Partido Comparar

Tabla 14-3 Muestra el COM0A1: 0 La funcionalidad de bit cuando el WGM01: 0 bits se establecen en PWM rpido
de modo.
Tabla 14-3.

Comparar Modo de salida, Modo PWM rpido(1)

COM0A1

COM0A0

Operacin portuaria Normal, OC0A desconectado.

WGM02 = 0: Normal operaciones portuarias, OC0A Desconectado.


WGM02 = 1: Activar OC0A el Partido Comparar.

OC0A Borrar en Partido de comparacin, establecer OC0A En el fondo,


(Modo no inversor).

Establecer OC0A en Partido Compare, OC0A claro en el fondo,


(Modo inversora).

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR0A equivale TOP y COM0A1 se establece. En este caso, la Comisin
pare Partido se ignora, pero el conjunto o claro se hace en la parte inferior. Ver "Modo PWM Rpida" en la
pgina 101 para ms detalles.

106
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 14-4 muestra la COM0A1: 0 La funcionalidad de bit cuando el WGM02: 0 bits se ponen a la fase correspondiente
el modo PWM rect.
Tabla 14-4.

Comparar Modo de salida, Fase Modo PWM correcta(1)

COM0A1

COM0A0

Operacin portuaria Normal, OC0A desconectado.

WGM02 = 0: Normal operaciones portuarias, OC0A Desconectado.


WGM02 = 1: Activar OC0A el Partido Comparar.

OC0A Borrar en Partido Comparar cuando de conteo. Establecer OC0A en


Comparar Partido cuando abajo de conteo.

Establecer OC0A en Partido Comparar cuando de conteo. OC0A Borrar en


Comparar Partido cuando abajo de conteo.

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR0A equivale TOP y COM0A1 se establece. En este caso, la Comisin
pare Partido se ignora, pero el conjunto o claro se hace en la parte superior. Ver "Fase PWM de modo correcto" en la
pgina 128 para ms detalles.

Bits 5: 4 - COM0B1: 0: Comparar Modo B Salida Partido


Estos bits controlan la comparacin de salida pin (OC0B) comportamiento. Si uno o ambos de los COM0B1: 0
bits se establecen, la salida OC0B anula la funcionalidad del puerto normal del pin E / S est conectado
a. Sin embargo, tenga en cuenta que la Direccin de Registro de Datos (DDR) bit correspondiente al pin OC0B
se debe establecer con el fin de permitir que el controlador de salida.

Cuando OC0B est conectado a la clavija, la funcin de la COM0B1: 0 bits depende de la


WGM02: ajuste bit 0. Tabla 14-5 muestra la COM0B1: 0 La funcionalidad de bit cuando el WGM02: 0 bits
se establece en un (no-PWM) normal o modo de CTC.
Tabla 14-5.

Comparar Modo de salida, de modo que no PWM

COM0B1

COM0B0

Descripcin

Operacin portuaria Normal, OC0B desconectado.

Alternar OC0B en Partido Comparar

OC0B Borrar en Partido Comparar

Establecer OC0B en Partido Comparar

Tabla 14-6 Muestra el COM0B1: 0 La funcionalidad de bit cuando el WGM02: 0 bits se establecen en PWM rpido
de modo.
Tabla 14-6.

Comparar Modo de salida, Modo PWM rpido(1)

COM0B1

COM0B0

Operacin portuaria Normal, OC0B desconectado.

Reservado

Claro OC0B en Partido Compare, establecer OC0B En el fondo,


(Modo no inversora)

Establecer OC0B en Partido Compare, OC0B claro en el fondo,


(Modo inversora).

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR0B equivale TOP y COM0B1 se establece. En este caso, la Comisin
pare Partido se ignora, pero el conjunto o claro se hace en la parte superior. Ver "Modo PWM rpido" en la pgina 101
para ms detalles.

107
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 14-7 muestra la COM0B1: 0 La funcionalidad de bit cuando el WGM02: 0 bits se ponen a la fase correspondiente
el modo PWM rect.
Tabla 14-7.

Comparar Modo de salida, Fase Modo PWM correcta(1)

COM0B1

COM0B0

Operacin portuaria Normal, OC0B desconectado.

Reservado

OC0B Borrar en Partido Comparar cuando de conteo. Establecer OC0B en


Comparar Partido cuando abajo de conteo.

Establecer OC0B en Partido Comparar cuando de conteo. OC0B Borrar en


Comparar Partido cuando abajo de conteo.

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR0B equivale TOP y COM0B1 se establece. En este caso, la Comisin
pare Partido se ignora, pero el conjunto o claro se hace en la parte superior. Ver "Fase PWM de modo correcto" en la
pgina 102 para ms detalles.

Bits 3, 2 - Res: Bits Reservados


Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Bits 1: 0 - WGM01: 0: Modo Waveform Generacin


En combinacin con el bit WGM02 encontrado en el Registro TCCR0B, estos bits de control de la cuenta
secuencia del contador, la fuente para el mximo (TOP) valor del contador, y qu tipo de onda
formar generacin para ser utilizado, consulte Tabla 14-8. Modos de operacin soportados por el Timer / Contador
unidad son: Modo normal (contador), Timer Borrar en el modo de comparacin del partido (CTC), y dos tipos de
Pulso modos de modulacin de ancho (PWM) (vase "Modos de funcionamiento" en la pgina 99).

Tabla 14-8.

Modo de generacin de forma de onda Bit Descripcin


Timer / Contador
Modo de
Operacin

TOP

Actualizacin
OCRx en
Inmediato

Modo

WGM02

WGM01

WGM00

Normal

0xFF

PWM, Fase
Correcto

0xFF

CTC

PWM rpido

Notas:

OCRA

TOP

Bandera TOV
Ubicado en(1) (2)
MAX
INFERIOR

Inmediato

MAX

0xFF

INFERIOR

MAX

Reservado

PWM, Fase
Correcto

OCRA

TOP

INFERIOR

Reservado

PWM rpido

OCRA

INFERIOR

TOP

1. MAX = 0xFF
2. INFERIOR = 0x00

108
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

14.9.2

TCCR0B - Temporizador / Contador Registro de Control B


Bit

FOC0A

FOC0B

WGM02

CS02

CS01

CS00

Lectura / Escritura

R/W

R/W

R/W

R/W

Valor inicial

0x25 (0x45)

TCCR0B

Bit 7 - FOC0A: Fuerza de comparacin de salida A


El bit FOC0A slo se activa cuando los bits WGM especifican un modo no PWM.
Sin embargo, para asegurar la compatibilidad con dispositivos futuros, este bit debe ponerse a cero cuando
TCCR0B se escribe cuando se trabaja en modo PWM. Al escribir un uno lgico en el bit FOC0A,
una inmediata Comparar Partido es forzado en la unidad de forma de onda Generacin. La salida es OC0A
cambiado de acuerdo a su COM0A1: ajuste 0 bits. Tenga en cuenta que el bit de FOC0A se implementa como una
estroboscpica. Por lo tanto, es el valor presente en el COM0A1: 0 bits que determina el efecto de la
forzado comparar.

Un estroboscpico FOC0A no generar ninguna interrupcin, ni va a borrar el temporizador en el modo CTC usando
OCR0A como TOP.
El bit FOC0A siempre se lee como cero.
Bit 6 - FOC0B: Fuerza de comparacin de salida B
El bit FOC0B slo se activa cuando los bits WGM especifican un modo no PWM.
Sin embargo, para asegurar la compatibilidad con dispositivos futuros, este bit debe ponerse a cero cuando
TCCR0B se escribe cuando se trabaja en modo PWM. Al escribir un uno lgico en el bit FOC0B,
una inmediata Comparar Partido es forzado en la unidad de forma de onda Generacin. La salida es OC0B
cambiado de acuerdo a su COM0B1: ajuste 0 bits. Tenga en cuenta que el bit de FOC0B se implementa como una
estroboscpica. Por lo tanto, es el valor presente en el COM0B1: 0 bits que determina el efecto de la
forzado comparar.

Un estroboscpico FOC0B no generar ninguna interrupcin, ni va a borrar el temporizador en el modo CTC usando
OCR0B como TOP.
El bit FOC0B siempre se lee como cero.
Bits 5: 4 - Res: Bits Reservados
Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Bit 3 - WGM02: Modo de generacin de forma de onda


Vea la descripcin en el "TCCR0A - Temporizador / Contador Registro de Control A" en la pgina 106.
Bits 2: 0 - CS02: 0: Reloj Select
Los tres Reloj seleccionar bits seleccionar la fuente de reloj para ser utilizado por el temporizador / contador.

109
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 14-9.

Reloj Seleccione Bit Descripcin

CS02

CS01

CS00

Descripcin

Ninguna fuente de reloj (temporizador / contador parado)

clkI / O / (No preescala)

clkI / S / 8 (De prescaler)

clkI / S / 64 (De prescaler)

clkI / S / 256 (De prescaler)

clkI / S / 1024 (De prescaler)

Fuente de reloj externa en el pin T0. Reloj en el flanco descendente.

Fuente de reloj externa en el pin T0. Reloj en flanco ascendente.

Si los modos de pines externos se utilizan para el Timer / Counter0, las transiciones en el reloj T0 pin voluntad del
contador incluso si el pasador est configurado como una salida. Esta caracterstica permite el control del software de la
contando.

14.9.3

TCNT0 - Temporizador / Contador Registro


Bit

Lectura / Escritura
Valor inicial

TCNT0 [7: 0]

0x26 (0x46)

TCNT0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

El temporizador / contador Registro da acceso directo, tanto para operaciones de lectura y escritura, a la
Unidad de temporizador / contador de 8 bits mostrador. Escribiendo a los bloques TCNT0 Registro (elimina) la comparacin
Coinciden en el siguiente reloj temporizador. Modificacin del contador (TCNT0), mientras que el contador se est ejecutando,
introduce un riesgo de perder un partido de comparacin entre TCNT0 y los Registros OCR0x.

14.9.4

OCR0A - comparacin de salida Registro A


Bit

Lectura / Escritura
Valor inicial

OCR0A [7: 0]

0x27 (0x47)

OCR0A

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

La salida de comparacin registro A contiene un valor de 8 bits que se compara continuamente con el
valor del contador (TCNT0). Un partido se puede utilizar para generar una salida Comparar interrumpir, o para
generar una salida de forma de onda en el pin OC0A.

14.9.5

OCR0B - comparacin de salida Registro B


Bit

Lectura / Escritura
Valor inicial

OCR0B [7: 0]

0x28 (0x48)

OCR0B

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

La salida de comparacin Registro B contiene un valor de 8 bits que se compara continuamente con el
valor del contador (TCNT0). Un partido se puede utilizar para generar una salida Comparar interrumpir, o para
generar una salida de forma de onda en el pin OC0B.

110
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

14.9.6

TIMSK0 - Temporizador / Contador interrupcin Mscara Registro


Bit

(0x6E)

OCIE0B

OCIE0A

TOIE0

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

TIMSK0

Los bits 7..3 - Res: Bits Reservados


Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Bit 2 - OCIE0B: Temporizador / Contador de salida Comparar Partido B habilitacin de interrupcin


Cuando el bit OCIE0B se escribe en uno, y el I-bit en el registro de estado se establece, el
Timer / Contador Comparar Partido B interrupcin est habilitada. La interrupcin correspondiente se ejecuta si
Comparar un Match en temporizador / contador se produce, es decir, cuando el bit OCF0B se encuentra en el Timer / Contador
Interrupcin Bandera Registro - TIFR0.

Bit 1 - OCIE0A: Temporizador / Counter0 salida Comparar Partido Una habilitacin de interrupcin
Cuando el bit OCIE0A se escribe en uno, y el I-bit en el registro de estado se establece, el
Timer / Counter0 Comparar coinciden con una interrupcin est habilitada. Se ejecuta la interrupcin correspondiente
si una comparacin Partido en Timer / Counter0 ocurre, es decir, cuando el bit OCF0A se encuentra en el
Timer / Contador 0 Interrupcin Bandera Registro - TIFR0.

Bit 0 - TOIE0: Temporizador / Counter0 desbordamiento habilitacin de interrupcin


Cuando el bit TOIE0 se escribe en uno, y el I-bit en el registro de estado se establece, el
Timer / Counter0 desbordamiento de interrupcin est habilitada. La interrupcin correspondiente se ejecuta si un
desbordamiento en el Timer / Counter0 se produce, es decir, cuando el bit TOV0 se encuentra en el Timer / Contador 0 Interrupt Bandera Registro - TIFR0.

14.9.7

TIFR0 - Temporizador / Contador 0 Interrupcin Bandera Registro


Bit

0x15 (0x35)

OCF0B

OCF0A

TOV0

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

TIFR0

Los bits 7..3 - Res: Bits Reservados


Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Bit 2 - OCF0B: Temporizador / Contador 0 Salida Comparar B Match Flag


El bit OCF0B se establece cuando un Compara Partido se produce entre el temporizador / contador y los datos en
OCR0B - Salida Comparar Registrar0 B. OCF0B es despejado por hardware al ejecutar el correspondiente
responder vector de interrupcin. Alternativamente, OCF0B se borra escribiendo un uno lgico para
la bandera. Cuando el bit I en SREG, OCIE0B (Temporizador / Contador Comparar B Partido habilitacin de interrupcin),
y OCF0B se establece, el temporizador / contador Comparar Partido interrupcin se ejecuta.

Bit 1 - OCF0A: Temporizador / Contador 0 Salida Comparar Una Bandera Partido


El bit OCF0A se establece cuando se produce una coincidencia de comparacin entre el Timer / Counter0 y los datos
en OCR0A - comparacin de salida Registrar0. OCF0A es despejado por hardware al ejecutar el correspondiente
responder vector de interrupcin. Alternativamente, OCF0A se borra escribiendo un uno lgico para

111
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


la bandera. Cuando el bit I en SREG, OCIE0A (Timer / Counter0 Comparar Partido habilitacin de interrupcin),
y OCF0A se establecen, el temporizador / Counter0 Comparar Partido interrupcin se ejecuta.
Bit 0 - TOV0: Temporizador / Counter0 bandera de desbordamiento
El TOV0 bit se establece cuando se produce un desbordamiento en el Timer / Counter0. TOV0 es despejado por hardware
al ejecutar el correspondiente vector de interrupcin. Alternativamente, TOV0 se borra
escribiendo un uno lgico a la bandera. Cuando el SREG I-bit, TOIE0 (Timer / Counter0 desbordamiento de interrupcin
Habilitar), y TOV0 se establecen, se ejecuta la interrupcin del Timer / Counter0 desbordamiento.

El ajuste de este indicador depende de la WGM02: ajuste bit 0. Referirse a Tabla 14-8 ", de forma de onda
Modo Generacin Bit Descripcin "en la pgina 108.

112
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

15. Temporizador de 16 bits / Counter1 con PWM


15.1

Caractersticas

15.2

Verdadero diseo de 16 bits (es decir, permite 16 bits PWM)


Dos unidades de salida independiente Comparar
Salida de bfer doble Comparar Registros
Una Unidad de Captura de entrada
Entrada Canceler Captura de ruido
Timer Borrar en Partido Comparar (Auto Reload)
Sin saltos, Fase de Pulso correcta modulador de ancho (PWM)
Periodo PWM variable
Generador de frecuencia
Contador de eventos externos
Cuatro fuentes de interrupcin independientes (TOV1, OCF1A, OCF1B, y ICF1)

Visin de conjunto
La unidad de temporizador / contador de 16 bits permite momento de ejecucin del programa precisa (gestin de eventos),
generacin de ondas, y la medicin de frecuencia de la seal.
La mayora de las referencias de registro y de bits en esta seccin estn escritos en forma general. Una minscula "n"
reemplaza el nmero / Contador Temporizador y una minscula "x" sustituye a la comparacin de salida unidad
canal. Sin embargo, cuando se utiliza el registro o el bit define en un programa, la forma precisa debe ser
utilizado, es decir, TCNT1 para acceder Timer / Counter1 valor del contador y as sucesivamente.
Un diagrama de bloques simplificado de la 16-bit temporizador / contador se muestra en la Figura 15-1. Para el actual
colocacin de pines de E / S, consulte "Pinout ATmega48PA / 88PA / 168PA / 328P" en la pgina 2. UPC
acceso de E / S Registros, incluyendo bits de E / S y pines I / O, se muestran en negrita. El especfica dispositivo
I / O Registro y ubicaciones bits enumerados en la "Registrar Descripcin" en la pgina 134.
El bit en PRTIM1 "PRR - Potencia Reduccin registro" en la pgina 45 debe ser por escrito a cero para
permitir mdulo temporizador / Counter1.

113
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 15-1. 16-bit del temporizador / contador Diagrama de bloques(1)
Contar

Tovn
(Int.Req.)

Claro
Logic Control
Direccin

clkTn

Reloj Seleccione
Borde
Detector

TOP

Tn

INFERIOR
(De Precontador)

Timer / Contador
TCNTn

=0
OCnA
(Int.Req.)
Waveform
Generacin

OCnA

OCRnA

DATOS DE
BUS

OCnB
(Int.Req.)

Fijo
TOP
Valores

Waveform
Generacin

=
OCRnB

OCnB

(De analgico
Comparador Ouput)
ICFn (Int.Req.)
Borde
Detector

ICRN

Ruido
Canceler
ICPN

TCCRnA

Nota:

15.2.1

TCCRnB

1. Consulte Figura 1-1 en la pgina 2, Tabla 13-3 en la pgina 82 y Tabla 13-9 en la pgina 88 para
Timer / Counter1 colocacin de los clavos y la descripcin.

Registros
La Timer / Contador (TCNT1), Registros de salida de comparacin (OCR1A / B), y Regis- Captura entrada
ter (ICR1) son todos los registros de 16 bits. Los procedimientos especiales deben seguirse cuando se accede a la 16registros de bits. Estos procedimientos se describen en la seccin "Acceso a los Registros de 16 bits" en la
pgina 115. La Temporizador / contador de registros de control (TCCR1A / B) son registros de 8 bits y no tienen
Restricciones de acceso de la CPU. Las solicitudes de interrupcin (abreviado Int.Req. En la figura) seales son todos
visible en el Interrupcin de temporizador Bandera Registro (TIFR1). Todas las interrupciones estn enmascarados
individualmente con
la Interrupcin de temporizador Mscara Registro (TIMSK1). TIFR1 y TIMSK1 no se muestran en la figura.
El temporizador / contador puede ser ajustado internamente, a travs de la pre-escalador, o por una fuente externa de reloj en
el pasador T1. Los controles de bloque lgico Reloj posicin Seleccione el reloj fuente y el borde del Timer / Contador
utiliza para aumentar (o disminuir) su valor. El temporizador / contador est inactivo si no hay fuente de reloj
est seleccionada. La salida de la lgica Reloj Seleccione se conoce como el reloj temporizador (clkT1).
La salida de doble buffer Comparar Registros (OCR1A / B) se comparan con el temporizador / Convalor ter en todo momento. El resultado de la comparacin puede ser utilizado por el generador de forma de onda de
generar un PWM o salida de frecuencia variable en el pin de salida de comparacin (OC1A / B). Ver "Output

114
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


poner Comparar unidades "en la pgina 122. El evento comparar partido tambin establecer la comparacin Partido
Flag (OCF1A / B) que se puede utilizar para generar una comparacin de salida de peticin de interrupcin.
El Registro de Entrada de captura puede capturar el valor del temporizador / contador en una externa (borde dado de disparador
Gered) evento ya sea en el pin de captura de entrada (ICP1) o en los pines de comparador analgico (Ver
"Comparador analgico" en la pgina 246) La unidad de captura de entrada incluye una unidad de filtrado digital (Ruido
Canceler) para reducir la posibilidad de capturar picos de ruido.
El valor de TOP, o el mximo valor del temporizador / contador, pueden en algunos modos de funcionamiento se definirn
ya sea por el Registro OCR1A, el Registro ICR1, o por un conjunto de valores fijos. Cuando se usa
OCR1A como valor TOP en un modo PWM, el Registro OCR1A no se puede utilizar para generar una
Salida PWM. Sin embargo, el valor TOP ser en este caso se doble amortiguada permitiendo el TOP
valor a modificar en tiempo de ejecucin. Si se requiere un valor superior fija, el Registro ICR1 se puede utilizar
como una alternativa, liberando la OCR1A para ser utilizado como salida PWM.

15.2.2

Definiciones
Las siguientes definiciones se utilizan ampliamente en toda la seccin:

15.3

INFERIOR

El contador alcanza el INFERIOR cuando se convierte en 0x0000.

MAX

El contador alcanza su MXima cuando se convierte en 0xFFFF (decimal 65535).

TOP

El contador alcanza el TOP cuando se hace igual al valor ms alto en el recuento


secuencia. El valor TOP puede ser asignado a uno de los valores fijos: 0x00FF, 0x01FF,
o 0x03FF, o al valor almacenado en la OCR1A o ICR1 Registro. La asignacin es
depende del modo de operacin.

Acceso a los registros de 16 bits


El TCNT1, OCR1A / B, y ICR1 son registros de 16 bits que se puede acceder por la CPU a travs de AVR
el bus de datos de 8 bits. El registro de 16 bits debe ser byte accede mediante dos operaciones de lectura o escritura.
Cada temporizador de 16 bits tiene un nico registro de 8 bits para el almacenamiento temporal del byte alto de la de 16 bits
el acceso. El mismo registro temporal se comparte entre todos los registros de 16 bits dentro de cada uno de 16 bits
temporizador. Acceso al byte bajo desencadena la 16 bits de lectura o escritura operacin. Cuando el byte bajo de un
16-bit de registro est escrito por el CPU, el byte alto almacenado en el registro temporal, y la baja
byte escrito son ambos copia en el registro de 16 bits en el mismo ciclo de reloj. Cuando el byte bajo de
un registro de 16 bits es ledo por la CPU, el byte alto del registro de 16 bits se copia en la temporegistro ral en el mismo ciclo de reloj que el byte bajo se lee.

No todos los 16 bits accede utiliza el registro temporal para el byte alto. La lectura de la OCR1A / B 16
registros bits no implica la utilizacin del registro temporal.
Para hacer un 16-bit de escritura, el byte alto debe ser escrito antes de que el byte bajo. Para una de 16 bits de lectura, la baja
byte debe ser ledo antes el byte alto.
Los siguientes ejemplos de cdigo muestran cmo acceder a los 16 bits de temporizador Registros suponiendo que no
interrupciones actualiza el registro temporal. El mismo principio se puede utilizar directamente para acceder
la OCR1A / B y ICR1 Registros. Tenga en cuenta que cuando se utiliza "C", el compilador se encarga de la 16-bit
el acceso.

115
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Ejemplos de cdigo Asamblea(1)


...
;Establecer TCNT1 a 0x01FF
LDI r17,0x01
LDI r16,0xFF
fuera TCNT1H, r17
fuera TCNT1L, r16
; Leer TCNT1 en r17: r16
en r16, TCNT1L
en r17, TCNT1H
...

Ejemplos de cdigo C(1)


unsigned int yo;
...
/ * Establecer TCNT1 a 0x01FF * /
TCNT1 = 0x1FF;
/ * Leer TCNT1 en i * /
i = TCNT1;
...
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.


Para E / S Registros situado en mapa ampliado de E / S, "IN", "OUT", "SBIS", "SBIC", "CBI", y "OSE"
instrucciones deben ser reemplazadas con las instrucciones que permiten el acceso a la E / S extendida. Tpicamente
"LDS" y "STS" en combinacin con "SBRS", "SBRC", "SBR", y "CBR".

El ejemplo de cdigo montaje devuelve el valor TCNT1 en el r17: r16 registran par.
Es importante notar que el acceso registros de 16 bits son operaciones atmicas. Si una interrupcin
se produce entre las dos instrucciones con el acceso a registro de 16 bits, y el cdigo de interrupcin
actualiza el registro temporal mediante el acceso a la misma o cualquier otra de la 16-bit de temporizacin Registros, a continuacin, se daarn el resultado del acceso fuera de la interrupcin. Por lo tanto, cuando ambos
el cdigo principal y el cdigo de interrupcin actualizar el registro temporal, el cdigo principal debe desactivar
las interrupciones durante el acceso de 16 bits.

Los siguientes ejemplos de cdigo muestran cmo hacer una lectura atmico de los contenidos TCNT1 Registro.
La lectura de cualquiera de los OCR1A / B o ICR1 Registros se puede hacer utilizando el mismo principio.

116
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo(1)


TIM16_ReadTCNT1:
;Ahorre indicador global de interrupcin
en r18, SREG
;Deshabilitar las interrupciones
cli
; Leer TCNT1 en r17: r16
en r16, TCNT1L
en r17, TCNT1H
;Restaurar indicador global de interrupcin
fuera SREG, r18
enriar

Cdigo C Ejemplo(1)
unsigned int TIM16_ReadTCNT1 ( vaco )
{
unsigned char sreg;
unsigned int yo;
/ * Ahorre indicador global de interrupcin * /
sreg = SREG;
/ * Deshabilitar las interrupciones * /
_CLI ();
/ * Leer TCNT1 en i * /
i = TCNT1;
/ * Restaurar indicador global de interrupcin * /
SREG = sreg;
retorno yo;
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.


Para E / S Registros situado en mapa ampliado de E / S, "IN", "OUT", "SBIS", "SBIC", "CBI", y "OSE"
instrucciones deben ser reemplazadas con las instrucciones que permiten el acceso a la E / S extendida. Tpicamente
"LDS" y "STS" en combinacin con "SBRS", "SBRC", "SBR", y "CBR".

El ejemplo de cdigo montaje devuelve el valor TCNT1 en el r17: r16 registran par.
Los siguientes ejemplos de cdigo muestran cmo hacer una escritura atmica de los contenidos TCNT1 Registro.
Escribir cualquiera de los OCR1A / B o ICR1 Registros se puede hacer utilizando el mismo principio.

117
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo(1)


TIM16_WriteTCNT1:
;Ahorre indicador global de interrupcin
en r18, SREG
;Deshabilitar las interrupciones
cli
;Establecer TCNT1 a r17: r16
fuera TCNT1H, r17
fuera TCNT1L, r16
;Restaurar indicador global de interrupcin
fuera SREG, r18
enriar

Cdigo C Ejemplo(1)
vaco TIM16_WriteTCNT1 ( unsigned int i )
{
unsigned char sreg;
unsigned int yo;
/ * Ahorre indicador global de interrupcin * /
sreg = SREG;
/ * Deshabilitar las interrupciones * /
_CLI ();
/ * Establecer TCNT1 a i * /
TCNT1 = i;
/ * Restaurar indicador global de interrupcin * /
SREG = sreg;
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.


Para E / S Registros situado en mapa ampliado de E / S, "IN", "OUT", "SBIS", "SBIC", "CBI", y "OSE"
instrucciones deben ser reemplazadas con las instrucciones que permiten el acceso a la E / S extendida. Tpicamente
"LDS" y "STS" en combinacin con "SBRS", "SBRC", "SBR", y "CBR".

El ejemplo de cdigo montaje requiere que el r17: r16 par de registro contiene el valor a ser escrito
diez a TCNT1.
15.3.1

15.4

Reutilizando el Alto Byte Registro Temporal


Si escribir a ms de un registro de 16 bits donde el byte alto es el mismo para todos los registros escritos,
entonces el byte alto slo necesita ser escrita una vez. Sin embargo, tenga en cuenta que la misma regla de atmica
operacin descrita anteriormente tambin se aplica en este caso.

Temporizador / contador Fuentes de reloj


El temporizador / contador puede ser ajustado a un interno o una fuente de reloj externa. La fuente de reloj
se selecciona por la lgica Reloj Seleccione la cual es controlada por el Reloj Seleccione (CS12: 0) bits
situado en el Temporizador / contador de control Registro B (TCCR1B). Para ms detalles sobre las fuentes de reloj y
prescaler, consulte "Timer / Counter0 y Timer / Counter1 Prescalers" en la pgina 141.

118
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


15.5

Unidad de contador
La parte principal de la 16-bit temporizador / contador es la 16-bit unidad de contador bidireccional programable.
Figura 15-2 muestra un diagrama de bloques del contador y sus alrededores.
Figura 15-2. Unidad contra el Diagrama de bloques
(8 bits)
DATOS DE BUS
Tovn
(Int.Req.)
TEMP (8 bits)
Reloj Seleccione
Contar
TCNTnH (8 bits)

TCNTnL (8 bits)

Claro

clkTn

Borde
Detector

Tn

Logic Control
Direccin

TCNTn (Contador de 16 bits)

(De Precontador)
TOP

INFERIOR

Descripcin de seales (seales internas):


Contar

Aumentar o disminuir TCNT1 por 1.

Direccin

Seleccione entre incremento y decremento.

Claro

TCNT1 Claro (poner todos los bits a cero).

clkT1

Cronmetro / reloj contador.

TOP

Sealizar que TCNT1 ha alcanzado el valor mximo.

INFERIOR

Sealizar que TCNT1 ha alcanzado el valor mnimo (cero).

El contador de 16 bits es mapeado en dos posiciones de memoria de 8 bits de E / S: Contador de alta (TCNT1H) conque contiene los ocho bits superiores del mostrador, y Contador Baja (TCNT1L) que contiene el menor de ocho
Bits. El Registro TCNT1H slo se puede acceder indirectamente por la CPU. Cuando la CPU hace una
el acceso a la ubicacin TCNT1H I / O, la CPU accede a la registro temporal byte alto (TEMP).
El registro temporal se actualiza con el valor TCNT1H cuando se lee el TCNT1L, y
TCNT1H se actualiza con el valor del registro temporal cuando TCNT1L est escrito. Esto permite que el
CPU leer ni escribir todo el valor del contador de 16 bits dentro de un ciclo de reloj a travs del bus de datos de 8 bits.
Es importante notar que hay casos especiales de la escritura al Registro TCNT1 cuando el
contador est contando que dar resultados impredecibles. Los casos especiales se describen en la
secciones donde ellos son de importancia.

Dependiendo del modo de operacin utilizado, el contador se borra, incrementa o decrementa


en cada reloj temporizador (ClkT1). El clkT1 se puede generar a partir de una fuente de reloj externa o interna,
seleccionado por el Reloj Seleccione bits (CS12: 0). Cuando se selecciona ninguna fuente de reloj (CS12: 0 = 0) la
temporizador se detiene. Sin embargo, el valor TCNT1 se puede acceder por la CPU, independiente de
si clkT1 est presente o no. A las anulaciones de escritura del procesador (tiene prioridad sobre) todo contador clara o
contar las operaciones.

La secuencia de conteo se determina por el ajuste de la Modo Waveform Generacin pedacitos


(WGM13: 0) situado en el Temporizador / contador de registros de control A y B (TCCR1A y TCCR1B).
Existen estrechas conexiones entre cmo se comporta el contador (cuenta) y cmo las formas de onda
se generan en las salidas de salida Comparar OC1x. Para ms detalles sobre el conteo avanzada
secuencias y la generacin de forma de onda, ver "Modos de funcionamiento" en la pgina 125.

119
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


El / Contador Bandera desbordamiento Timer (TOV1) se establece en funcin del modo de funcionamiento seleccionado por
la WGM13: 0 bits. TOV1 se puede utilizar para generar una interrupcin de la CPU.

15.6

Unidad de Captura de
entrada
El temporizador / contador incorpora una unidad de captura de entrada que puede capturar eventos externos y dar
ellos un sello de tiempo que indica el momento del suceso. La seal exterior que indique un evento, o multieventos tiple, se pueden aplicar a travs de la clavija de ICP1 o, alternativamente, a travs de la unidad analgica-comparador. La
sellos de tiempo se pueden utilizar para calcular la frecuencia, ciclo de trabajo, y otras caractersticas de la seal
nal aplica. Alternativamente, los sellos de tiempo pueden ser utilizados para la creacin de un registro de los eventos.

La unidad de captura de entrada se ilustra por el diagrama de bloques mostrado en la Figura 15-3. Los elementos de
el diagrama de bloques que no son directamente una parte de la unidad de captura de entrada estn sombreadas en gris. La
pequeo "n" en nombres de registro y bits indica el nmero del temporizador / contador.

Figura 15-3. Captura entrada Unidad Diagrama de bloques


DATOS DE BUS
(8 bits)

TEMP (8 bits)

ICRnH (8 bits)
ESCRIBIR

ICRnL (8 bits)

TCNTnH (8 bits)

ICRN (16-bit Register)

ACO *
Analog
Comparador

TCNTnL (8 bits)

TCNTn (Contador de 16 bits)

ACIC *

ICNC

CIEM

Ruido
Canceler

Borde
Detector

ICFn (Int.Req.)

ICPN

Cuando se produce un cambio del nivel de la lgica (un evento) en el Pin de captura de entrada (ICP1), en su defecto
en el Salida analgica Comparador (ACO), y este cambio confirma a la configuracin del borde
detector, se disparar una captura. Cuando se dispara una captura, el valor de 16 bits del contador
(TCNT1) se escribe en el Input Capture Registro (ICR1). La Capturar la bandera de entrada (ICF1) se fija en
el mismo reloj del sistema como el valor TCNT1 se copia en ICR1 Registro. Si est habilitado (ICIE1 = 1),
Captura la Bandera de entrada genera una interrupcin de captura de entrada. La bandera ICF1 es automticamente
borra cuando se ejecuta la interrupcin. Como alternativa, la bandera ICF1 puede borrar software
escribiendo un uno lgico a su ubicacin bit I / O.

Leyendo el valor de 16 bits en el Input Capture Registro (ICR1) se realiza mediante la primera lectura, el bajo
byte (ICR1L) y luego el byte alto (ICR1H). Cuando se lee el byte bajo el byte alto se copia
en el registro temporal byte alto (TEMP). Cuando la CPU lee la ubicacin ICR1H I / O lo har
acceder al Registro TEMP.
El Registro ICR1 slo se puede escribir cuando se utiliza un modo de generacin de forma de onda que utiliza
el Registro ICR1 para definir el valor superior de la barra. En estos casos el Waveform Generation

120
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


modo de la (WGM13: 0) Los bits se debe establecer antes el valor TOP puede ser escrito a la ICR1
Registrar. Al escribir el Registro ICR1 el byte alto debe ser escrito a la ICR1H I lugar / O
antes de que el byte bajo se escribe en ICR1L.
Para obtener ms informacin sobre cmo acceder a la de 16 bits registros se refieren a "Acceso a los Registros de 16 bits"
en la pgina 115.
15.6.1

Captura de entrada de disparador Fuente


La fuente principal desencadenante de la unidad de captura de entrada es la Pin de captura de entrada (ICP1).
Timer / Counter1 no puede utilizar alternativamente la salida de comparador analgico como fuente de disparo para el
Unidad de captura de entrada. El comparador analgico se selecciona como fuente de disparo mediante el establecimiento de la Analog
Comparador de captura de entrada (ACIC) poco en el Comparador Analgico Control y Registro de Estado
(ACSR). Tenga en cuenta que el cambio de fuente de disparo puede desencadenar una captura. La bandera de captura de entrada
por lo tanto debe ser limpiado despus del cambio.

Tanto el Pin de captura de entrada (ICP1) y el Salida analgica Comparador (ACO) entradas se muestrean
utilizando la misma tcnica que para el pasador de T1 (figura 16-1 en la pgina 141). El detector de borde es tambin
idntica. Sin embargo, cuando el cancelador de ruido est habilitado, la lgica adicional se inserta antes de la
detector de borde, lo que aumenta el retraso de cuatro ciclos de reloj del sistema. Tenga en cuenta que la entrada de la
cancelador de ruido y detector de bordes siempre est activada a menos que el temporizador / contador se encuentra en una
Waveform
formar modo de generacin que utiliza ICR1 definir TOP.
Una captura de entrada puede ser activado por el software mediante el control del puerto de la clavija de ICP1.
15.6.2

Supresor de ruido
El cancelador de ruido mejora la inmunidad al ruido mediante el uso de un sistema de filtrado digital simple. La
cancelador de ruido de entrada se monitoriza durante cuatro muestras, y los cuatro debe ser igual para el cambio de la
salida que a su vez se utiliza por el detector de borde.
El cancelador de ruido se habilita estableciendo la Entrada Canceler Captura de ruido (ICNC1) poco en
Timer / Contador Registro de Control B (TCCR1B). Cuando se activa el cancelador de ruido introduce Adems
cionales cuatro ciclos de reloj del sistema de retardo de un cambio aplicada a la entrada, a la actualizacin de la
ICR1 Registro. El cancelador de ruido utiliza el reloj del sistema y por lo tanto no se ve afectada por la
prescaler.

15.6.3

Uso de la unidad de captura de entrada


El principal reto a la hora de utilizar la unidad de captura de entrada es asignar suficiente capacidad de procesador
para el manejo de los eventos entrantes. El tiempo entre dos eventos es crtica. Si el procesador tiene
No lea el valor capturado en el Registro ICR1 antes de que ocurra el prximo evento, el ICR1 ser
sobrescrito con un nuevo valor. En este caso el resultado de la captura ser incorrecta.

Al utilizar la interrupcin de captura de entrada, el Registro ICR1 debe leerse como temprano en la interrutina de controlador rupt posible. A pesar de que la interrupcin de captura de entrada tiene relativamente alta
prioridad, el mximo de interrupcin tiempo de respuesta es dependiente de la cantidad mxima de reloj
ciclos que se necesita para manejar cualquiera de las otras solicitudes de interrupcin.
Uso de la unidad de captura de entrada en cualquier modo de operacin cuando el valor TOP (resolucin) es
cambiado de forma activa durante la operacin, no se recomienda.
Medicin de ciclo de trabajo de una seal externa requiere que la inclinacin de disparo se cambia despus
cada captura. Cambio de la deteccin de borde debe hacerse lo ms pronto posible despus de la ICR1
Registro ha sido ledo. Despus de un cambio del borde, la bandera de captura de entrada (ICF1) debe estar

121
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


despejado por software (escribiendo un uno lgico a la ubicacin de bit I / O). Para la medicin de la frecuencia solamente,
No se requiere la limpieza de la Bandera ICF1 (si se utiliza un manejador de interrupciones).

15.7

Unidades de salida de
comparacin
El comparador 16-bit compara continuamente con el TCNT1 Comparacin de salida Registro
(OCR1x). Si TCNT equivale OCR1x comparador indica un fsforo. Un partido fijar el Salida
Comparar Bandera (OCF1x) en el prximo ciclo de reloj temporizador. Si est habilitado (OCIE1x = 1), la Comisin de salida
pare Bandera genera una comparacin de salida de interrupcin. La bandera OCF1x se borra automticamente
cuando se ejecuta la interrupcin. Como alternativa, la bandera OCF1x puede borrar software por escrito
ing un uno lgico a su ubicacin bit I / O. El Generador de forma de onda utiliza la seal de partida para
generar una salida de acuerdo al modo de funcionamiento establecido por el Modo Waveform Generacin
(WGM13: 0) y los bits Comparar modo de Salida (COM1x1: 0) bits. Las seales de superior e inferior
son utilizados por el generador de forma de onda para el manejo de los casos especiales de los valores extremos en
algunos modos de operacin (Ver Seccin "15.9" en la pgina 125.)

Una caracterstica especial de comparacin de salida unidad A le permite definir el valor del temporizador / contador TOP (es
decir,
resolucin del contador). Adems de la resolucin del contador, el valor TOP define el perodo de tiempo
para formas de onda generada por el generador de forma de onda.
Figura 15-4 muestra un diagrama de bloques de la unidad de salida de comparacin. El pequeo "n" en el registro y
nombres bits indica el nmero de dispositivo (n = 1 para Timer / Contador 1), y la "x" indica la salida
Comparar unidad (A / B). Los elementos del diagrama de bloques que no son directamente parte de la salida
Comparar unidad estn sombreadas en gris.

Figura 15-4. Comparar Unidad de salida, Diagrama de bloques


(8 bits)
DATOS DE BUS

TEMP (8 bits)

OCRnxH Buf. (8 bits)

OCRnxL Buf. (8 bits)

TCNTnH (8 bits)

OCRnx Buffer (16 bits Registro)

OCRnxH (8 bits)

TCNTnL (8 bits)

TCNTn (Contador de 16 bits)

OCRnxL (8 bits)

OCRnx (16-bit Register)

=(Comparador 16-bit)
OCFnx (Int.Req.)
TOP
INFERIOR

Generador de onda

WGMn3: 0

OCnx

COMnx1: 0

El Registro OCR1x es amortiguada doble al utilizar cualquiera de los doce Pulso de Amplitud Modulada
(PWM) modos. Para la Normal y Timer Borrar en comparacin (CTC) modos de operacin, el
doble bfer est desactivado. El doble bfer sincroniza la actualizacin de la OCR1x Comisin
pare Registro ya sea superior o inferior de la secuencia de conteo. La sincronizacin

122
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


previene la aparicin de longitud impar, pulsos PWM no simtricas, con lo que la salida
poner libre de saltos.
El OCR1x Registro de acceso puede parecer complejo, pero este no es el caso. Cuando el doble buffer
est activada, la CPU tiene acceso a la Memoria de Registro OCR1x, y si el doble bfer se visualiza
habilitada la CPU acceder al OCR1x directamente. El contenido de la OCR1x (tampn o de comparacin)
Registro slo se cambia por una operacin de escritura (el temporizador / contador no actualiza este registro
automticamente como el Registro TCNT1 y ICR1). Por lo tanto OCR1x no se lee a travs del byte alto
registro temporal (TEMP). Sin embargo, es una buena prctica para leer el byte bajo primero como cuando
acceder a otros registros de 16 bits. Escribiendo los Registros OCR1x debe hacerse a travs de la TEMP ReglaIster ya que la comparacin de todos los 16 bits se realiza de forma continua. El byte alto (OCR1xH) tiene que ser
escrito primero. Cuando el lugar de E / S de alta byte est escrito por el CPU, el Registro TEMP ser
actualizado por el valor escrito. Luego, cuando el byte bajo (OCR1xL) se escribe en los ocho bits inferiores,
el byte alto se copiar en los 8 bits superiores de ambos el buffer OCR1x o OCR1x Comparar
Registrar en el mismo ciclo de reloj del sistema.

Para obtener ms informacin de cmo acceder a los registros de 16 bits se refieren a "Acceso a los Registros de 16 bits"
en la pgina 115.
15.7.1

Fuerza de comparacin de salida


En los modos de no-PWM Waveform generacin, la salida del comparador partido puede ser forzado por
escribiendo un uno a la Fuerza de comparacin de salida (FOC1x) bits. Forzar partido comparar no fijar el
Bandera OCF1x o recargar / borrar el contador de tiempo, pero el pasador OC1x se actualizar como si una verdadera comparacin
partido haba ocurrido (el COM11: ajustes de 0 bits definen si el pin OC1x se establece, borra o
conmutado).

15.7.2

Comparar Partido bloqueo por TCNT1 Escribir


Todos CPU escribe en el Registro TCNT1 bloquear cualquier comparar partido que se produce en el siguiente temporizador
ciclo de reloj, incluso cuando se detiene el temporizador. Esta caracterstica permite OCR1x que ser inicializado a la
mismo valor que TCNT1 sin provocar una interrupcin cuando el reloj / Contador Temporizador est activada.

15.7.3

El uso de la unidad de salida de comparacin


Desde que escrib TCNT1 en cualquier modo de operacin bloquear todos comparar resultados para uno reloj temporizador
ciclo, existen riesgos al cambiar TCNT1 al utilizar cualquiera de la comparacin de salida
canales, independientemente de si el temporizador / contador est funcionando o no. Si el valor escrito
TCNT1 es igual al valor OCR1x, el partido comparar echar de menos, lo que resulta en onda incorrecta
generacin formulario. No escriba el TCNT1 igual a TOP en los modos PWM con variables TOP
valores. El partido comparar para el TOP ser ignorado y el contador continuar a 0xFFFF.
Del mismo modo, no escriba el valor TCNT1 igual a fondo cuando el contador se conteo regresivo.

La configuracin de la OC1x se debe realizar antes de la Direccin Registro de datos para el


pin puerto de salida. La manera ms fcil de establecer el valor OC1x es utilizar la salida de la Fuerza Comisin
pare bits (FOC1x) estroboscpicas en el modo Normal. El Registro OC1x mantiene su valor, incluso cuando
cambiar entre los modos de forma de onda Generacin.
Tenga en cuenta que la COM1x1: 0 bits no se doble almacenamiento junto con el valor de comparacin.
Cambio de la COM1x1: 0 bits tendrn efecto inmediatamente.

123
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


15.8

Comparar Unidad de salida Partido


La Comparar modo de Salida (COM1x1: 0) Los bits tienen dos funciones. Los usos Waveform Generator
la COM1x1: 0 bits para definir la salida de comparacin (OC1x) estado en el prximo partido de comparar.
En segundo lugar la COM1x1: 0 bits de control de la fuente de salida pin OC1x. Figura 15-5 muestra una simplificado
esquemtico de la lgica afectada por el COM1x1: 0 entorno poco. La E / S de registros, E / S de bits, y E / S
alfileres en la figura se muestran en negrita. Slo las partes del yo general de E / S del puerto de registros de control
(DDR y PORT) que se ven afectados por el COM1x1: 0 bits se muestran. Al referirse a la
Estado OC1x, la referencia es para el OC1x Registro interno, no el pin OC1x. Si un restablecimiento del sistema
ocurrir, el Registro OC1x se pone a "0".

Figura 15-5. Comparar Unidad de salida Partido, Esquema

COMnx1
COMnx0
FOCnx

Waveform
Generador

Q
1

OCnx

D
DATOS DE
BUS

OCnx
Perno
0

PORT

DDR
clk I / O

La funcin de puerto de E / S generales es invalidada por la salida de comparacin (OC1x) de la forma de onda
Generador si alguna de las COM1x1: se establecen los bits 0. Sin embargo, la direccin OC1x pines (entrada o salida
put) todava est controlada por el Direccin Registro de Datos (DDR) para el pin del puerto. La Direccin de Datos
Registrar poco para el pasador OC1x (DDR_OC1x) se debe establecer como salida antes de que el valor OC1x es visible en el pasador. La funcin de anulacin de puerto es generalmente independiente de la generacin de formas de onda
modo, pero hay algunas excepciones. Referirse a Tabla 15-1, Tabla 15-2 y Tabla 15-3 para
detalles.

El diseo de la lgica pin de salida de comparacin permite la inicializacin del estado OC1x antes de la salida
put est habilitada. Tenga en cuenta que algunos COM1x1: ajustes de 0 bits estn reservados para ciertos modos de
operacin. Vea la seccin "15.11" en la pgina 134.
Los COM1x1: 0 bits no tienen efecto en la unidad de captura de entrada.
15.8.1

Comparar Modo de salida y de forma de onda Generacin


El Generador de forma de onda utiliza el COM1x1: 0 bits de manera diferente en los modos normal, CTC, y PWM.
Para todos los modos, estableciendo el COM1x1: 0 = 0 indica al generador de forma de onda que ninguna accin en el
OC1x Registro se va a realizar en el prximo partido comparar. Para acciones de salida de comparar en el

124
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


modos no PWM se refieren a Tabla 15-1 en la pgina 134. Para el modo PWM rpido consulte Tabla 15-2 en
pgina 135, y para la fase correcta y fase y frecuencia PWM correcto referirse a Tabla 15-3 en
pgina 135.
Un cambio de la COM1x1: 0 bits estado tendr efecto en el primer partido despus de comparar los bits son
por escrito. Para los modos no-PWM, la accin puede ser forzada a tener efecto inmediato mediante el uso de la
Pedacitos estroboscpicas FOC1x.

15.9

Modos de funcionamiento
El modo de funcionamiento, es decir, el comportamiento del temporizador / contador y la salida Comparar pines, es
definido por la combinacin de la Modo Waveform Generacin (WGM13: 0) y Comparar salida
modo (COM1x1: 0) bits. Los bits de modo de comparacin de salida no afectan a la secuencia de conteo,
mientras que los bits de modo Waveform Generacin hacen. El COM1x1: 0 bits controlan si el PWM salida
put generada debe ser invertida o no (invertida o PWM no invertido). Para los modos no PWM
la COM1x1: 0 bits de control si la salida se debe establecer, borra o alternar en una comparacin
partido (Ver Seccin "15.8" en la pgina 124.)

Para obtener informacin detallada momento consulte "Timer / Contador diagramas de tiempo" en la pgina 132.
15.9.1

Modo Normal
El modo ms simple de operacin es la Modo normal (WGM13: 0 = 0). En este modo el conteo
direccin es siempre hacia arriba (incremento), y ningn contador clara se realiza. El contador simplemente
excesos cuando pasa a su valor de 16 bits mxima (MAX = 0xFFFF) y luego se reinicia desde el
INFERIOR (0x0000). En funcionamiento normal, el Timer / Contador bandera de desbordamiento (TOV1) se establecer en
el mismo ciclo de reloj temporizador como el TCNT1 se convierte en cero. La bandera TOV1 en este caso se comporta
como un poco 17a, excepto que slo se establece, sin despachar. Sin embargo, combinado con el desbordamiento del temporizador
interrupcin que borra automticamente la Bandera TOV1, la resolucin del temporizador se puede aumentar mediante softWare. No hay casos especiales a tener en cuenta en el modo Normal, un nuevo valor del contador puede ser
por escrito en cualquier momento.

La unidad de captura de entrada es fcil de usar en el modo Normal. Sin embargo, tenga en cuenta que el mximo
intervalo entre los acontecimientos externos no debe superar la resolucin del contador. Si el intervalo
entre los eventos son demasiado largos, el desbordamiento de la interrupcin de temporizador o el prescaler debe ser usado para
ampliar la resolucin para la unidad de captura.
Las unidades de salida de comparacin se pueden utilizar para generar interrupciones en algn momento dado. Utilizando el
Comparacin de salida para generar formas de onda no se recomienda en el modo Normal, ya que esta voluntad
ocupar demasiado del tiempo de CPU.

15.9.2

Timer Borrar en Match (CTC) Modo Comparar


En Timer Borrar en comparacin o el modo de CTC (WGM13: 0 = 4 o 12), el OCR1A o ICR1 Registro
se utilizan para manipular la resolucin del contador. En el modo de CTC el contador se pone a cero cuando
el valor del contador (TCNT1) coincide con ya sea la OCR1A (WGM13: 0 = 4) o la ICR1 (WGM13: 0 =
12). El OCR1A o ICR1 definen el valor superior para el mostrador, por lo tanto, tambin su resolucin. Este
modo permite un mayor control de la frecuencia de salida partido comparar. Tambin simplifica la operacin
cin de contar los acontecimientos externos.

El diagrama de tiempos para el modo de CTC se muestra en Figura 15-6. El valor del contador (TCNT1)
aumenta hasta un partido de comparar se produce, ya sea con o OCR1A ICR1, y luego contador (TCNT1)
se borra.

125
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 15-6. Modo de CTC, diagrama de tiempos
OCnA interrupcin Flag Set
o ICFn interrupcin Flag Set
(Interrupcin en TOP)

TCNTn

OCnA
(Cambiar)
Perodo

(COMnA1: 0 = 1)

Una interrupcin se puede generar en cada momento el valor del contador alcanza el valor TOP por cualquiera
utilizando el OCF1A o bandera ICF1 segn el registro utilizado para definir el valor TOP. Si el
interrupcin est habilitada, la rutina de manejador de interrupcin se puede utilizar para actualizar el valor TOP. Cmonunca, cambiando el TOP a un valor cercano a abajo cuando el contador est corriendo con ninguno o un
valor bajo prescaler debe hacerse con cuidado ya que el modo de CTC no tiene la doble memoria intermedia
Ering funcin. Si el nuevo valor escrito en OCR1A o ICR1 es menor que el valor actual de
TCNT1, el contador se perder el partido comparar. El contador entonces tendr que contar a su maxvalor imum (0xFFFF) y envolver a partir de 0x0000 antes de que ocurra el partido comparar.
En muchos casos, esta caracterstica no es deseable. Una alternativa ser entonces utilizar el modo PWM rpido
utilizando OCR1A para definir TOP (WGM13: 0 = 15) ya que el OCR1A entonces ser el doble buffer.

Para generar una salida de forma de onda en el modo de CTC, la salida OC1A se puede configurar para cambiar su lgica
nivel en cada partido comparar estableciendo los bits de modo de salida Comparar con el modo de alternar
(COM1A1: 0 = 1). El valor OC1A no ser visible en el pin de puerto a menos que la direccin de datos del
el pasador se establece en la salida (DDR_OC1A = 1). La forma de onda generada tendr un mximo cuencia
cuencia de fOC1A = fclk_I / O / 2 cuando OCR1A se ajusta a cero (0x0000). La frecuencia de forma de onda es
definido por la siguiente ecuacin:

F clk_I / S
-f OCnA = ------------------------------------------------ 2 N ( 1+OCRnA )
La Nvariable representa el factor de pre-escalador (1, 8, 64, 256, o 1024).
Como para el modo normal de funcionamiento, la Bandera TOV1 se encuentra en el mismo ciclo de reloj temporizador que la
contador cuenta de MAX a 0x0000.
15.9.3

Modo PWM rpido


La Pulso rpido modulacin de ancho o en el modo PWM rpido (WGM13: 0 = 5, 6, 7, 14, o 15) proporciona una
opcin de generacin de forma de onda PWM de alta frecuencia. El PWM rpido difiere de la otra PWM
opciones de su operacin una sola pendiente. El contador cuenta desde abajo hacia arriba y luego se reinicia
De abajo. En no inversora Comparar modo de Salida, la comparacin de salida (OC1x) se borra
en el partido de comparar entre TCNT1 y OCR1x, y establecer en la parte inferior. En inversora Comparar
Salida del modo de salida se encuentra en partido comparar y aclar en la parte inferior. Debido a la pendiente solo
operacin, la frecuencia de funcionamiento del modo PWM rpido puede ser dos veces tan alta como la fase de correlacin
rect y modos PWM correctas de fase y frecuencia que utilizan la operacin de doble pendiente. Este alto
frecuencia hace que el modo PWM rpido muy adecuado para la regulacin de potencia, rectificacin, y DAC
aplicaciones. De alta frecuencia permite que los componentes externos de tamao fsicamente pequeos (bobinas, capacitancia
res), por lo tanto, reduce el costo total del sistema.

126
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


La resolucin PWM para PWM rpido se puede fijar a 8, 9, o 10 bits, o define por cualquiera o ICR1
OCR1A. La resolucin mnima permitida es de 2 bits (ICR1 o OCR1A establecen en 0x0003), y el Maxresolucin imum es de 16 bits (ICR1 o OCR1A ponen a MAX). La resolucin PWM en bits puede ser
calculado utilizando la siguiente ecuacin:
log (TOP +1)
R fPWM = ---------------------------------log (2)
En el modo PWM rpido se incrementa el contador hasta que el valor del contador coincide con cualquiera de la
0x00FF valores fijos, 0x01FF, o 0x03FF (WGM13: 0 = 5, 6, o 7), el valor en ICR1 (WGM13: 0 =
14), o el valor en OCR1A (WGM13: 0 = 15). El contador se borra a continuacin, en el siguiente temporizador
ciclo de reloj. El diagrama de tiempos para el modo PWM se muestra en la rpida Figura 15-7. La cifra
muestra el modo PWM rpido cuando se utiliza OCR1A o ICR1 definir TOP. El valor TCNT1 est en el
de temporizacin diagrama que se muestra como un histograma para ilustrar la operacin de una sola pendiente. El diagrama
incluye salidas no invertidas e invertidas PWM. La pequea lnea horizontal marca en la TCNT1
laderas representan comparan partidos entre OCR1x y TCNT1. La interrupcin de la bandera OC1x voluntad
se establece cuando se produce una coincidencia comparar.

Figura 15-7. PWM de modo rpido, diagrama de tiempos


OCRnx / TOP Actualizacin y
Bandera tovn interrupcin Set y
OCnA interrupcin Flag Set
o ICFn interrupcin Flag Set
(Interrupcin en TOP)

TCNTn

OCnx

(COMnx1: 0 = 2)

OCnx

(COMnx1: 0 = 3)

Perodo

La bandera de desbordamiento del temporizador / contador (TOV1) se establece cada vez que el contador llegue a TOP.
Adicionalmente
la Bandera OC1A o ICF1 se fij en el mismo ciclo de reloj temporizador como TOV1 se establece cuando sea OCR1A
o ICR1 se utiliza para definir el valor de TOP. Si una de las interrupciones estn habilitadas, el Han- interrupcin
Dler rutina se puede usar para la actualizacin de la parte superior y comparar los valores.
Al cambiar el valor TOP programa debe garantizar que el nuevo valor de TOP es ms alta o
igual al valor de todos los Registros comparar. Si el valor TOP es menor que cualquiera de las
Comparar Registros, un partido comparar nunca ocurrir entre el TCNT1 y la OCR1x.
Tenga en cuenta que cuando se utiliza TOP fijo valora los bits no utilizados se enmascaran a cero cuando cualquiera de los
OCR1x registros estn escritos.

El procedimiento para actualizar ICR1 difiere de OCR1A actualizar cuando se utiliza para definir el TOP
valor. El Registro ICR1 no es el doble buffer. Esto significa que si ICR1 se cambia a una baja
valor cuando el contador se est ejecutando con ninguno o un valor bajo prescaler, existe el riesgo de que el nuevo
ICR1 valor escrito es menor que el valor actual de TCNT1. El resultado ser entonces que el
contador se perder el partido de comparar el valor TOP. El contador entonces tendr que contar con la
Valor MAX (0xFFFF) y envolver a partir de 0x0000 antes de que ocurra el partido comparar.
El Registro OCR1A sin embargo, es de doble buffer. Esta caracterstica permite la localizacin OCR1A I / O

127
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


a ser escrito en cualquier momento. Cuando la ubicacin OCR1A E / S se escribe el valor escrito ser puesto en
el Buffer Register OCR1A. El OCR1A Comparar Registro Entonces se actualiza con el valor
en el Registro de bfer en el siguiente ciclo de reloj temporizador el TCNT1 coincide TOP. La actualizacin se realiza
al mismo ciclo de reloj temporizador como el TCNT1 se borra y la Bandera TOV1 se establece.
Usando el Registro ICR1 para definir TOP funciona bien cuando el uso de valores superior fija. Mediante el uso de
ICR1, el Registro OCR1A es libre de ser usado para generar una salida PWM en OC1A. Sin embargo,
si la frecuencia de PWM base se cambi activamente (cambiando el valor TOP), utilizando el OCR1A
como TOP es claramente una mejor opcin debido a su caracterstica de doble bfer.
En el modo PWM rpido, las unidades permiten comparar la generacin de formas de onda PWM en los pines OC1x.
Ajuste del COM1x1: 0 bits para dos producir un PWM invertida y una salida no invertida PWM
se puede generar mediante el establecimiento de la COM1x1: 0 a tres (vase Tabla en la pgina 135). El OC1x real
valor slo ser visible en el pin de puerto si la direccin de datos para el pin del puerto se configura como salida
(DDR_OC1x). La forma de onda PWM se genera mediante el establecimiento (o eliminar) el Registro OC1x en
el partido comparar entre OCR1x y TCNT1, y la limpieza (o configuracin) del Registro OC1x en
el ciclo de reloj temporizador del contador se borra (cambios de arriba a abajo).

La frecuencia PWM para la salida se puede calcular por la siguiente ecuacin:


F clk_I / S
f OCnxPWM = ---------------------------------N ( 1+TOP )
La variable N representa el divisor prescaler (1, 8, 64, 256, o 1024).
Los valores extremos para el Registro OCR1x representa casos especiales cuando se genera un PWM
forma de onda de salida en el modo PWM rpido. Si el OCR1x se iguala a INFERIOR (0x0000) la salida
put ser un pico estrecho para cada ciclo de reloj temporizador TOP + 1. Ajuste del OCR1x igual a TOP
dar lugar a una salida de alta o baja constante (dependiendo de la polaridad de la salida establecido por el
COM1x1: 0 bits).

Una frecuencia (con 50% de ciclo de trabajo) de salida de forma de onda en el modo PWM rpido se puede lograr por ajuste
ting OC1A para cambiar su nivel lgico en cada compara partido (COM1A1: 0 = 1). Esto se aplica slo
Si OCR1A se utiliza para definir el valor TOP (WGM13: 0 = 15). La forma de onda generada tendr
una frecuencia mxima de fOC1A = fclk_I / O / 2 cuando OCR1A se ajusta a cero (0x0000). Esta caracterstica es
similar a la palanca OC1A en modo CTC, excepto la funcin doble de amortiguamiento de la salida sin
pare la unidad est activada en el modo PWM rpido.

15.9.4

Fase Modo PWM correcta


La fase de impulso correcta modulacin de ancho o en el modo PWM de fase correcta (WGM13: 0 = 1, 2, 3,
10, o 11) proporciona una opcin de generacin de forma de onda PWM correcta fase de alta resolucin. La
el modo PWM de fase correcta es, como el modo de fase y la frecuencia PWM correcta, basado en un dual
operacin pendiente. El contador cuenta repetidamente desde INFERIOR (0x0000) para arriba y luego de
De arriba a abajo. En no inversora Comparar modo de Salida, la comparacin de salida (OC1x) es
despejado en el partido de comparar entre TCNT1 y OCR1x mientras conteo progresivo, y situado en la
comparar partido mientras conteo regresivo. En la inversin de modo de salida de comparacin, la operacin es
invertida. La operacin de doble pendiente tiene menor frecuencia mxima de operacin sola pendiente
operacin. Sin embargo, debido a la caracterstica simtrica de los modos de PWM de doble pendiente, estos modos
se prefieren para aplicaciones de control de motor.

La resolucin PWM para el modo de fase correcta PWM se puede fijar a 8, 9, o 10 bits, o define
por cualquiera de ICR1 o OCR1A. La resolucin mnima permitida es de 2 bits (ICR1 o OCR1A establece en

128
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


0x0003), y la resolucin mxima es de 16 bits (ICR1 o OCR1A ponen a MAX). La resolucin PWM
cin en bits se puede calcular utilizando la siguiente ecuacin:
log (TOP +1)
-R PCPWM
= ---------------------------------log (2)
En el modo PWM de fase correcta el contador se incrementa hasta el valor del contador coincide con cualquiera
uno de los valores fijos 0x00FF, 0x01FF, o 0x03FF (WGM13: 0 = 1, 2, o 3), el valor en ICR1
(WGM13: 0 = 10), o el valor en OCR1A (WGM13: 0 = 11). El contador ha alcanzado entonces el
TOP y cambia la direccin de conteo. El valor TCNT1 ser igual a TOP por un reloj temporizador
ciclo. El diagrama de tiempos para el modo PWM de fase correcta se muestra en Figura 15-8. La cifra
muestra el modo PWM de fase correcta cuando se utiliza OCR1A o ICR1 definir TOP. El TCNT1
valor est en el diagrama de temporizacin se muestra como un histograma para ilustrar la operacin de doble pendiente. La
diagrama incluye salidas no invertidas e invertidas PWM. La pequea lnea horizontal marca en
las laderas TCNT1 representan comparar partidos entre OCR1x y TCNT1. El OC1x Internacional
Bandera rupt se establece cuando se produce una coincidencia comparar.

Figura 15-8. Fase PWM de modo correcto, diagrama de tiempos


OCRnx / TOP Actualizacin y
OCnA interrupcin Flag Set
o ICFn interrupcin Flag Set
(Interrupcin en TOP)

Tovn interrupcin Flag Set


(Interrupcin en la parte inferior)

TCNTn

OCnx

(COMnx1: 0 = 2)

OCnx

(COMnx1: 0 = 3)

Perodo

La bandera de desbordamiento del temporizador / contador (TOV1) se establece cada vez que el contador llegue a FONDO.
Cundo
ya sea OCR1A o ICR1 se utiliza para definir el valor de TOP, el OC1A o bandera ICF1 se establece de acuerdo
vez ms en el mismo ciclo de reloj temporizador como los Registros OCR1x se actualizan con el doble bfer
valor (en la parte superior). Las banderas de interrupcin se pueden utilizar para generar una interrupcin cada vez que el contador
llega a la cima o el valor INFERIOR.
Al cambiar el valor TOP programa debe garantizar que el nuevo valor de TOP es ms alta o
igual al valor de todos los Registros comparar. Si el valor TOP es menor que cualquiera de las
Comparar Registros, un partido comparar nunca ocurrir entre el TCNT1 y la OCR1x.
Tenga en cuenta que cuando se utilizan los valores superior fija, los bits no utilizados se enmascaran a cero cuando cualquiera de
los
OCR1x registros estn escritos. Como el tercer perodo se muestra en Figura 15-8 ilustra, el cambio de la
TOP activamente mientras el temporizador / contador se est ejecutando en el modo correcto de fase puede dar lugar a una
salida asimtrica. La razn de esto se puede encontrar en el momento de la actualizacin de la OCR1x Reglanistro. Desde la actualizacin OCR1x se produce en la parte superior, el perodo de PWM comienza y termina en la parte superior.
Este

129
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


implica que la longitud de la pendiente descendente se determina por el valor TOP anterior, mientras que la
longitud de la pendiente ascendente se determina por el nuevo valor TOP. Cuando estos dos valores difieren de la
dos pendientes de la poca, varan en longitud. La diferencia en la longitud da la asimtrico
resultado en la salida.
Se recomienda utilizar la fase y modo correcto de frecuencia en lugar de la fase correcta
modo cuando se cambia el valor TOP mientras el temporizador / contador est en ejecucin. Al utilizar un esttico
Valor TOP prcticamente no hay diferencias entre los dos modos de funcionamiento.
En el modo PWM de fase correcta, la comparan unidades permiten la generacin de formas de onda PWM en el
Pasadores OC1x. Ajuste del COM1x1: 0 bits para dos producir un PWM no invertida y una invertida
Salida PWM se puede generar mediante el establecimiento de la COM1x1: 0 a tres (Ver Tabla en la pgina 135). La
valor real OC1x slo ser visible en el pin de puerto si la direccin de datos para el pin del puerto se establece como
de salida (DDR_OC1x). La forma de onda PWM se genera mediante el establecimiento (o eliminar) la OC1x Register en el partido de comparar entre OCR1x y TCNT1 cuando el contador se incrementa, y
compensacin (o configuracin) del Registro OC1x en partido comparar entre OCR1x y TCNT1 cuando
el contador disminuye. La frecuencia PWM para la salida cuando se utiliza la fase correcta PWM puede
se calcula mediante la siguiente ecuacin:

F clk_I / S
-f OCnxPCPWM = -------------------------2 N TOP
La variable N representa el divisor prescaler (1, 8, 64, 256, o 1024).
Los valores extremos para el Registro OCR1x representan casos especiales cuando se genera un PWM
forma de onda de salida en el modo PWM de fase correcta. Si el OCR1x se iguala a la PARTE INFERIOR
salida ser continua baja y si se fija igual a encabezan la salida ser continuamente alto para
no invertida modo PWM. Para PWM invertida la salida tendr los valores lgicos opuestos. Si
OCR1A se utiliza para definir el valor TOP (WGM13: 0 = 11) y COM1A1: 0 = 1, la salida OC1A
alternar con un ciclo de trabajo del 50%.

15.9.5

Modo Fase y Frecuencia PWM correcta


La fase y frecuencia de pulso correcta modulacin de ancho, o fase y frecuencia PWM correcta
modo (WGM13: 0 = 8 o 9) proporciona una fase de resolucin alta y PWM correcta frecuencia de onda
formar opcin generacin. El modo de fase y de frecuencia PWM es correcta, como la fase correcta
El modo PWM, basado en una operacin de doble pendiente. El contador cuenta repetidamente desde INFERIOR
(0x0000) para arriba y luego de arriba a abajo. En no inversora Comparar modo de Salida, el
Salida Comparar (OC1x) se despeja en el partido comparar entre TCNT1 y OCR1x mientras
contaje, y situado en el partido comparar mientras conteo regresivo. En invirtiendo Comparar salida
modo, se invierte la operacin. La operacin de doble pendiente da una cuencia mxima operacin menor
cia en comparacin con la operacin de una sola pendiente. Sin embargo, debido a la caracterstica simtrica de la
modos PWM de doble pendiente, se prefieren estos modos para aplicaciones de control de motores.

La principal diferencia entre la fase correcta, y la fase y la frecuencia PWM correcta


modo es el momento en que el Registro OCR1x es actualizada por el Buffer Register OCR1x, (ver Figura 158y Figura 15-9).
La resolucin PWM para el modo de fase y de frecuencia PWM correcta puede ser definida por cualquiera de las
ICR1 o OCR1A. La resolucin mnima permitida es de 2 bits (ICR1 o OCR1A establece en 0x0003), y

130
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


la resolucin mxima es de 16 bits (ICR1 o OCR1A ponen a MAX). La resolucin PWM en bits puede
se calcula utilizando la siguiente ecuacin:
log (TOP +1)
R PFCPWM = ---------------------------------log (2)
En el modo de fase y de frecuencia PWM correcta el contador se incrementa hasta que el valor del contador
partidos, ya sea el valor en ICR1 (WGM13: 0 = 8), o el valor en OCR1A (WGM13: 0 = 9). La
mostrador, entonces ha llegado a la cima, y cambia la direccin de conteo. El valor TCNT1 ser
igual a la parte superior para un ciclo de reloj temporizador. El diagrama de tiempos para la fase correcta y la frecuencia
modo PWM correcta se muestra en Figura 15-9. La figura muestra la fase y frecuencia correcta
Modo PWM cuando se utiliza OCR1A o ICR1 definir TOP. El valor TCNT1 est en el dilogo calendario
gramo se muestra como un histograma para ilustrar la operacin de doble pendiente. El diagrama incluye no
salidas PWM invertidas e invertidas. La pequea lnea horizontal marca en las pistas representan TCNT1
enviaron comparan partidos entre OCR1x y TCNT1. La interrupcin de la bandera OC1x se establece cuando un
Comparar partido se produce.

Figura 15-9. Fase y Frecuencia PWM de modo correcto, diagrama de tiempos


OCnA interrupcin Flag Set
o ICFn interrupcin Flag Set
(Interrupcin en TOP)

OCRnx / TOP Updateand


Tovn interrupcin Flag Set
(Interrupcin en la parte inferior)

TCNTn

OCnx

(COMnx1: 0 = 2)

OCnx

(COMnx1: 0 = 3)

Perodo

El / Contador Bandera desbordamiento Timer (TOV1) se fij en el mismo ciclo de reloj temporizador como el OCR1x
Los registros se actualizan con el valor del buffer de matrimonio (en el fondo). Cuando cualquiera OCR1A o ICR1
se utiliza para definir el valor de TOP, el OC1A o bandera ICF1 establecen cuando TCNT1 ha alcanzado TOP.
Las banderas de interrupcin se pueden utilizar para generar una interrupcin cada vez que el contador alcanza el
TOP o valor INFERIOR.

Al cambiar el valor TOP programa debe garantizar que el nuevo valor de TOP es ms alta o
igual al valor de todos los Registros comparar. Si el valor TOP es menor que cualquiera de las
Comparar Registros, un partido comparar nunca ocurrir entre el TCNT1 y la OCR1x.
Como Figura 15-9 muestra la salida generada es, en contraste con el modo de fase correcta, simtrica
cal en todos los perodos. Desde los Registros OCR1x se actualizan en el fondo, la longitud de la creciente
y las laderas que caen siempre sern iguales. Esto da pulsos de salida simtricas y por lo tanto es
frecuencia correcta.

131
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Usando el Registro ICR1 para definir TOP funciona bien cuando el uso de valores superior fija. Mediante el uso de
ICR1, el Registro OCR1A es libre de ser usado para generar una salida PWM en OC1A. Sin embargo,
si la frecuencia de PWM base se cambi activamente cambiando el valor TOP, usando el OCR1A como
TOP es claramente una mejor opcin debido a su caracterstica de doble bfer.
En la fase y el modo PWM correcta frecuencia, la comparan unidades permiten la generacin de PWM de onda
formas en las clavijas OC1x. Ajuste del COM1x1: 0 bits para dos producir un PWM no invertida y
una salida PWM invertida puede ser generada mediante el establecimiento de la COM1x1: 0 a tres (Ver Tabla de
pgina 135). El valor real OC1x slo ser visible en el pin de puerto si la direccin de datos para el
pin puerto est configurado como salida (DDR_OC1x). La forma de onda PWM se genera mediante el establecimiento (o borrar)
el Registro OC1x en el partido de comparar entre OCR1x y TCNT1 cuando el contador incremental
tos, y claro (o configuracin) del Registro OC1x en partido comparar entre OCR1x y
TCNT1 cuando el contador disminuye. La frecuencia PWM para la salida al utilizar fase
y la frecuencia PWM correcto se puede calcular por la siguiente ecuacin:

F clk_I / S
-f OCnxPFCPWM = -------------------------2 N TOP
La variable N representa el divisor prescaler (1, 8, 64, 256, o 1024).
Los valores extremos para el Registro OCR1x representa casos especiales cuando se genera un PWM
forma de onda de salida en el modo PWM de fase correcta. Si el OCR1x se iguala a la PARTE INFERIOR
salida ser continua baja y si se fija igual a encabezan la salida se establece en alto para no
el modo PWM invertida. Para PWM invertida la salida tendr los valores lgicos opuestos. Si OCR1A
se utiliza para definir el valor TOP (WGM13: 0 = 9) y COM1A1: 0 = 1, la salida OC1A alternar
con un ciclo de trabajo del 50%.

15.10 Timer / Contador diagramas de tiempo


El temporizador / contador es, por tanto, un diseo sncrono y el reloj temporizador (clkT1) se muestra como un
reloj seal de habilitacin en las siguientes figuras. Las cifras incluyen informacin sobre cundo interrupcin
Los indicadores se definen, y cuando el Registro OCR1x se actualiza con el valor del buffer OCR1x (slo para
modos que utilizan el doble buffer). Figura 15-10 muestra un diagrama de tiempos para el establecimiento de OCF1x.

Figura 15-10. Temporizador / contador Cronograma, Ajuste de OCF1x, no preescala

clkI / S
clkTn
(ClkI / S / 1)

TCNTn

OCRnx

OCRnx - 1

OCRnx

OCRnx + 1

OCRnx + 2

OCRnx Valor

OCFnx

Figura 15-11 muestra los mismos datos de temporizacin, pero con el prescaler habilitado.

132
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 15-11. Temporizador / contador Cronograma, Ajuste de OCF1x, con Precontador (fclk_I / S / 8)

clkI / S
clkTn
(ClkI / S / 8)

TCNTn

OCRnx - 1

OCRnx

OCRnx

OCRnx + 1

OCRnx + 2

OCRnx Valor

OCFnx

Figura 15-12 muestra la secuencia de cuenta cerca de TOP en varios modos. Cuando se usa la fase y
frecuencia del modo PWM correcta el Registro OCR1x se actualiza en la parte inferior. Los diagramas de temporizacin
ser el mismo, pero TOP debe ser reemplazado por abajo, arriba-1 por INFERIOR + 1 y as sucesivamente.
El mismo cambio de nombre se aplica para los modos que marcan la bandera TOV1 en la parte inferior.

Figura 15-12. Temporizador / contador Cronograma, no preescala


clkI / S
clkTn
(ClkI / S / 1)

TCNTn
(CTC y fPWM)

TCNTn
(PC y PFC PWM)

TOP - 1

TOP

TOP - 1

TOP

INFERIOR

TOP - 1

INFERIOR + 1

TOP - 2

Tovn (fPWM)
y ICFn (si se utiliza
como TOP)

OCRnx
(Update en TOP)

Antiguo OCRnx Valor

Nueva OCRnx Valor

133
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 15-13 muestra los mismos datos de temporizacin, pero con el prescaler habilitado.
Figura 15-13. Temporizador / contador Cronograma, con Precontador (fclk_I / S / 8)

clk
I/O
clk
(CLK
Tn/ 8) de E / S

TCNTn
(CTC y fPWM)

TCNTn
(PC y PFC PWM)

TOP - 1

TOP

TOP - 1

TOP

INFERIOR

INFERIOR + 1

TOP - 1

TOP - 2

Tovn (fPWM)
e ICF n (si se utiliza
como TOP)

OCRnx

Antiguo OCRnx Valor

(Update en TOP)

Nueva OCRnx Valor

15.11 Registro Descripcin


15.11.1

TCCR1A - Temporizador / Counter1 Registro de Control A


Bit
(0x80)
Lectura / Escritura
Valor inicial

COM1A1

COM1A0

COM1B1

COM1B0

WGM11

WGM10

R/W

R/W

R/W

R/W

R/W

R/W

TCCR1A

Bit 7: 6 - COM1A1: 0: Comparar Modo de salida para el canal A


Bit 5: 4 - COM1B1: 0: Comparar Modo de salida para el Canal B
El COM1A1: 0 y COM1B1: 0 Control de la comparacin de salida pasadores (OC1A y OC1B respectivo
tivamente) comportamiento. Si uno o ambos de los COM1A1: 0 bits se escriben a uno, la salida OC1A
anula la funcionalidad puerto normal del pin I / O est conectado a. Si uno o ambos de la
COM1B1: 0 bits se escriben en una, la salida OC1B anula la funcionalidad normal del puerto
Pin I / O se conecta a. Sin embargo, tenga en cuenta que la Direccin Registro de Datos (DDR) correspondiente bit
cin a la OC1A o OC1B pin debe ajustarse a fin de que el controlador de salida.

Cuando el OC1A o OC1B est conectado a la clavija, la funcin de la COM1x1: 0 bits es dependiente
dente de la WGM13: Seleccin inicial 0 bits. Tabla 15-1 muestra la COM1x1: 0 La funcionalidad de bit cuando el
WGM13: 0 bits se establecen en un normal o un modo de CTC (no-PWM).
Tabla 15-1.

Comparar Modo de salida, no PWM

COM1A1 / COM1B1

COM1A0 / COM1B0

Descripcin

Operacin portuaria Normal, OC1A / OC1B desconectado.

Alternar OC1A / OC1B en Partido Comparar.

Claro OC1A / OC1B en Partido Comparar (Ajuste de salida a


bajo nivel).

Establecer OC1A / OC1B en Partido Comparar (Ajuste de salida a


nivel alto).

134
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 15-2 muestra la COM1x1: 0 La funcionalidad de bit cuando el WGM13: 0 bits se establecen en el ayuno
El modo PWM.
Comparar Modo de salida, PWM rpido(1)

Tabla 15-2.

COM1A1 / COM1B1

COM1A0 / COM1B0

Operacin portuaria Normal, OC1A / OC1B desconectado.

WGM13: 0 = 14 o 15: Toggle OC1A en comparacin


Partido, desconectado (operacin portuaria normal) OC1B.
Para todos los dems ajustes WGM1, operacin portuaria normal,
OC1A / OC1B desconectado.

Claro OC1A / OC1B en Partido Compare, establecer


OC1A / OC1B En el fondo (no invertida modo)

Establecer OC1A / OC1B en Partido Compare, claro


OC1A / OC1B En el fondo (modo de inversin)

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR1A / OCR1B equivale TOP y COM1A1 / COM1B1 se establece. En
este caso el partido de comparar se ignora, pero el conjunto o claro se hace en la parte inferior. Vea la Seccin
"15.9.3" en la pgina 126. para ms detalles.

Tabla 15-3 muestra el COM1x1: 0 La funcionalidad de bit cuando el WGM13: 0 bits se establece en la fase
correcta o la fase y la frecuencia correcta, el modo PWM.
Tabla 15-3.

Comparar Modo de salida, Fase correcta y Fase y Frecuencia correcta


PWM(1)

COM1A1 / COM1B1

COM1A0 / COM1B0

Operacin portuaria Normal, OC1A / OC1B desconectado.

WGM13: 0 = 9 o 11: Toggle OC1A en comparacin


Partido, desconectado (operacin portuaria normal) OC1B.
Para todos los dems ajustes WGM1, operacin portuaria normal,
OC1A / OC1B desconectado.

Claro OC1A / OC1B en Partido Comparar cuando arriba


contando. Establecer OC1A / OC1B en Partido Comparar cuando
conteo regresivo.

Establecer OC1A / OC1B en Partido Comparar cuando arriba


contando. Claro OC1A / OC1B en Partido Comparar
cuando conteo regresivo.

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR1A / OCR1B equivale TOP y COM1A1 / COM1B1 se establece. Ver
Seccin "15.9.4" en la pgina 128. para ms detalles.

Bit 1: 0 - WGM11: 0: Modo Waveform Generacin


Combinado con el WGM13: 2 bits que se encuentran en el Registro TCCR1B, estos bits controlan el conteo
secuencia del contador, la fuente para el mximo (TOP) valor del contador, y qu tipo de onda
formar generacin para ser utilizado, consulte Tabla 15-4. Modos de operacin soportados por el Timer / Contador
unidad son: Modo normal (contador), en partido Comparar modo Borrar temporizador (CTC), y tres tipos
de ancho de pulso modulacin (PWM) modos. (Ver Seccin "15.9" en la pgina 125.).

135
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Modo de generacin de forma de onda Bit Descripcin(1)

Tabla 15-4.
Modo

WGM13

WGM12
(CTC1)

WGM11
(PWM11)

WGM10
(PWM10)

Modo Temporizador / Contador de


Operacin
TOP

Actualizacin
OCR1x en

Bandera TOV1
Ubicado en

Normal

0xFFFF

Inmediato

MAX

PWM, fase correcta, 8-bit

0x00FF

TOP

INFERIOR

PWM, fase correcta, 9-bit

0x01FF

TOP

INFERIOR

PWM, fase correcta, 10-bit

0x03FF

TOP

INFERIOR

CTC

OCR1A

Inmediato

MAX

Fast PWM, 8-bit

0x00FF

INFERIOR

TOP

PWM rpido, 9-bit

0x01FF

INFERIOR

TOP

PWM rpido, 10-bit

0x03FF

INFERIOR

TOP

PWM, fase y frecuencia


Correcto

ICR1

INFERIOR

INFERIOR

PWM, fase y frecuencia


Correcto

OCR1A

INFERIOR

INFERIOR

10

PWM, Fase correcta

ICR1

TOP

INFERIOR

11

PWM, Fase correcta

OCR1A

TOP

INFERIOR

12

CTC

ICR1

Inmediato

MAX

13

(Reservado)

14

PWM rpido

ICR1

INFERIOR

TOP

PWM rpido

OCR1A

INFERIOR

TOP

15
Nota:

1. Los CTC1 y PWM11: nombres de definicin 0 bits son obsoletos. Utilice los WGM12: 0 definiciones. Sin embargo, la funcionalidad y
ubicacin de estos bits son compatibles con las versiones anteriores del temporizador.

15.11.2

TCCR1B - Temporizador / Counter1 Registro de Control B


Bit
(0x81)
Lectura / Escritura
Valor inicial

ICNC1

ICES1

WGM13

WGM12

CS12

CS11

CS10

R/W

R/W

R/W

R/W

R/W

R/W

R/W

TCCR1B

Bit 7 - ICNC1: Captura de entrada Canceler Ruido


Al activar este bit (a uno) activa el ruido de captura de entrada Canceler. Cuando el cancelador de ruido es
activado, la entrada de la clavija de entrada de captura (ICP1) se filtra. La funcin de filtro requiere de cuatro
sucesivas muestras iguales valoradas del pin ICP1 para cambiar su salida. La captura de entrada es
por lo tanto, un retraso de cuatro ciclos del oscilador cuando el cancelador de ruido est activada.

Bit 6 - ICES1: Captura de entrada Edge Select


Este bit se selecciona para que el borde en el pasador de captura de entrada (ICP1) que se utiliza para desencadenar una captura
evento. Cuando el bit ICES1 est escrito a cero, un flanco descendente (negativo) se utiliza como disparador, y
cuando el bit ICES1 se escribe en uno, un flanco ascendente (positivo) disparar la captura.
Cuando una captura se activa segn el ajuste ICES1, el valor del contador se copia en la
Captura de entrada Registro (ICR1). El evento tambin establecer el indicador de captura de entrada (ICF1), y esto
puede ser usado para causar capturar una entrada de interrupcin, si esta interrupcin est habilitada.

136
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Cuando el ICR1 se utiliza como valor de TOP (ver descripcin del WGM13: 0 bits ubicadas en el
TCCR1A y el Registro TCCR1B), el ICP1 se desconecta y en consecuencia la entrada de Captura funcin est desactivada.
Bit 5 - Reservado Bit
Este bit est reservado para uso futuro. Para asegurar la compatibilidad con dispositivos futuros, este bit debe ser
escrito a cero cuando TCCR1B est escrito.

Bit 4: 3 - WGM13: 2: Modo Waveform Generacin


Ver TCCR1A Registro descripcin.
Bit 2: 0 - CS12: 0: Reloj Select
Los tres Reloj seleccionar bits seleccionar la fuente de reloj para ser utilizado por el temporizador / contador, ver Figura
15-10 y Figura 15-11.
Tabla 15-5.

Reloj Seleccione Bit Descripcin

CS12

CS11

CS10

Descripcin

Ninguna fuente de reloj (temporizador / contador parado).

clkI / S / 1 (No preescala)

clkI / S / 8 (De prescaler)

clkI / S / 64 (De prescaler)

clkI / S / 256 (De prescaler)

clkI / S / 1024 (De prescaler)

Fuente de reloj externa en el pin T1. Reloj en el flanco descendente.

Fuente de reloj externa en el pin T1. Reloj en flanco ascendente.

Si los modos de pines externos se utilizan para el Timer / Counter1 transiciones en el reloj T1 pin voluntad del
contador incluso si el pasador est configurado como una salida. Esta caracterstica permite el control del software de la
contando.

15.11.3

TCCR1C - Temporizador / Counter1 Registro de Control C


Bit
(0x82)
Lectura / Escritura
Valor inicial

FOC1A

FOC1B

0
-

R/W

R/W

TCCR1C

Bit 7 - FOC1A: Fuerza de comparacin de salida para el canal A


Bit 6 - FOC1B: Fuerza de comparacin de salida para el Canal B
Los bits FOC1A / FOC1B slo estn activos cuando el WGM13: 0 bits especifica un modo no-PWM.
Al escribir un uno lgico en el bit FOC1A / FOC1B, una comparacin de partido inmediato se ve obligado a
la unidad de forma de onda Generation. La salida OC1A / OC1B se cambia de acuerdo a su COM1x1: 0
estableciendo los bits. Tenga en cuenta que los bits FOC1A / FOC1B se implementan como luces estroboscpicas. Por lo tanto, es
el
valor presente en el COM1x1: 0 bits que determinan el efecto de la comparacin de forzado.
Un estroboscpico FOC1A / FOC1B no generar ninguna interrupcin ni va a borrar el contador de tiempo en Borrar contador
en el modo de juego de comparacin (CTC) utilizando OCR1A como TOP. Los FOC1A bits / FOC1B son siempre
leer como cero.

137
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


15.11.4

TCNT1H y TCNT1L - Temporizador / Counter1


Bit

(0x85)

TCNT1 [15: 8]

(0x84)

TCNT1 [7: 0]

Lectura / Escritura
Valor inicial

0
TCNT1H
TCNT1L

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Los dos Timer / Contador E / S ubicaciones (TCNT1H y TCNT1L, combinado TCNT1) dar directo
acceso, tanto para lectura como para las operaciones de escritura, a la unidad de temporizador / contador contador de 16 bits. A
asegurar que tanto los bytes alto y bajo se leen y escriben simultneamente cuando la CPU
accesos estos registros, que se realiza el acceso mediante un temporal Registro Byte alto de 8 bits
(TEMP). Este registro temporal es compartida por todos los dems registros de 16 bits. Vea la seccin "15.3" en la
pgina 115.

Modificacin del contador (TCNT1) mientras que el contador est ejecutando introduce un riesgo de perder una compare partido entre TCNT1 y uno de los Registros OCR1x.
Escribiendo a los bloques TCNT1 Registro (elimina) el partido comparar en el siguiente reloj temporizador
para todos comparar unidades.
15.11.5

OCR1AH y OCR1AL - comparacin de salida Registrar 1 A


Bit

OCR1A [15: 8]

(0x88)

OCR1A [7: 0]

Lectura / Escritura
Valor inicial

15.11.6

(0x89)

0
OCR1AH
OCR1AL

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

OCR1BH y OCR1BL - comparacin de salida Registrar 1 B


Bit

(0x8B)

OCR1B [15: 8]

(0x8A)

OCR1B [7: 0]

Lectura / Escritura
Valor inicial

OCR1BH
OCR1BL

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Los registros de salida de comparacin contienen un valor de 16 bits que se compara continuamente con el
valor del contador (TCNT1). Un partido se puede utilizar para generar una salida Comparar interrumpir, o para
generar una salida de forma de onda en el pin OC1x.
Los registros de salida de comparacin son de 16 bits de tamao. Para asegurarse de que tanto los bytes altos y bajos son
escrito simultneamente cuando la CPU escribe en estos registros, se realiza el acceso utilizando una
8-bit Registro Byte alto temporal (TEMP). Este registro temporal es compartida por todos los dems
Registros de 16 bits. Vea la seccin "15.3" en la pgina 115.

15.11.7

ICR1H y ICR1L - Captura de entrada Regstrese 1


Bit

(0x87)

ICR1 [15: 8]

(0x86)

ICR1 [7: 0]

Lectura / Escritura
Valor inicial

0
ICR1H
ICR1L

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

La captura de entrada se actualiza con el contador (TCNT1) valor cada vez que se produce un evento en el
Pin ICP1 (u opcionalmente en la salida analgica Comparador de Timer / Counter1). La captura de entrada
se puede utilizar para definir el valor del contador TOP.

138
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


El Registro de captura de entrada es de 16 bits de tamao. Para asegurarse de que tanto los bytes altos y bajos se leen
simultneamente cuando el CPU accede a estos registros, se realiza el acceso mediante un 8-bit
Alta temporal Byte Register (TEMP). Este registro temporal es compartida por todos los otros 16 bits
registros. Vea la seccin "15.3" en la pgina 115.

15.11.8

TIMSK1 - Temporizador / Counter1 interrupcin Mask Register


Bit

(0x6F)

ICIE1

OCIE1B

OCIE1A

TOIE1

Lectura / Escritura

R/W

R/W

R/W

R/W

Valor inicial

TIMSK1

Bit 7, 6 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

Bit 5 - ICIE1: Temporizador / Counter1 Captura de entrada de interrupcin Habilitar


Cuando este bit se escribe en uno, y el I-bandera en el Registro de Estado se establece (interrumpe a nivel mundial
habilitado), la interrupcin de captura de entrada Temporizador / Counter1 est habilitada. La interrupcin correspondiente
Vector (ver "interrupciones" en la pgina 57) se ejecuta cuando la bandera ICF1, situado en TIFR1, se establece.

Bit 4, 3 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

Bit 2 - OCIE1B: Temporizador / Counter1 comparacin de salida B Partido habilitacin de interrupcin


Cuando este bit se escribe en uno, y el I-bandera en el Registro de Estado se establece (interrumpe a nivel mundial
habilitado), la salida del temporizador / Counter1 Comparar interrupcin Partido B est habilitada. El correspondiente
Vector de interrupcin (ver "Alarmas" en la pgina 57) se ejecuta cuando la bandera OCF1B, situado en
TIFR1, se establece.

Bit 1 - OCIE1A: Temporizador / Counter1 comparacin de salida Una interrupcin Partido Habilitar
Cuando este bit se escribe en uno, y el I-bandera en el Registro de Estado se establece (interrumpe a nivel mundial
habilitado), la salida del temporizador / Counter1 Comparar Una interrupcin del partido est habilitada. El correspondiente
Vector de interrupcin (ver "Alarmas" en la pgina 57) se ejecuta cuando la bandera OCF1A, situado en
TIFR1, se establece.

Bit 0 - TOIE1: Temporizador / Counter1 desbordamiento habilitacin de interrupcin


Cuando este bit se escribe en uno, y el I-bandera en el Registro de Estado se establece (interrumpe a nivel mundial
habilitado), la interrupcin del Timer / Counter1 desbordamiento est habilitada. La interrupcin correspondiente Vector
(Ver "Alarmas" en la pgina 57) se ejecuta cuando la bandera TOV1, situado en TIFR1, se establece.

15.11.9

TIFR1 - Temporizador / Counter1 interrupcin Bandera Registro


Bit

0x16 (0x36)

ICF1

OCF1B

OCF1A

TOV1

Lectura / Escritura

R/W

R/W

R/W

R/W

Valor inicial

TIFR1

Bit 7, 6 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

139
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Bit 5 - ICF1: Temporizador / Counter1 Captura de entrada de la bandera
Esta bandera se establece cuando un evento de captura se produce en el pin ICP1. Cuando Captura la entrada de Registro
(ICR1) es fijado por el WGM13: 0 para ser utilizado como el valor TOP, la Bandera ICF1 se establece cuando el pas
ter alcanza el valor de TOP.
ICF1 se borra automticamente cuando se ejecuta la captura de entrada de interrupcin vectorial. Alternativamente,
ICF1 se puede borrar escribiendo un uno lgico a su ubicacin poco.
Bit 4, 3 - Res: Bits Reservados
Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

Bit 2 - OCF1B: Temporizador / Counter1 Output Compare B Match Flag


Esta bandera se encuentra en el ciclo de reloj temporizador despus de que el contador (TCNT1) valor coincide con la salida
Comparar Registro B (OCR1B).
Tenga en cuenta que una salida forzada Comparar (FOC1B) estroboscpica no fijar la bandera OCF1B.
OCF1B se borra automticamente cuando la comparacin de salida Partido B vector de interrupcin es ejerecortado. Alternativamente, se puede borrar OCF1B escribiendo un uno lgico a su ubicacin poco.
Bit 1 - OCF1A: Temporizador / Counter1 comparacin de salida una bandera del partido
Esta bandera se encuentra en el ciclo de reloj temporizador despus de que el contador (TCNT1) valor coincide con la salida
Comparar Registro A (OCR1A).
Tenga en cuenta que una salida forzada Comparar (FOC1A) estroboscpica no fijar la bandera OCF1A.
OCF1A se borra automticamente cuando la comparacin de salida Partido Un vector de interrupcin es ejerecortado. Alternativamente, se puede borrar OCF1A escribiendo un uno lgico a su ubicacin poco.
Bit 0 - TOV1: Temporizador / Counter1, Bandera de desbordamiento
El ajuste de este indicador depende de la WGM13: Seleccin inicial 0 bits. En los modos Normal y CTC,
la Bandera TOV1 se establece cuando el temporizador se desborda. Referirse a Tabla 15-4 en la pgina 136 para la TOV1
El comportamiento de la bandera cuando se utiliza otra WGM13: ajuste bit 0.
TOV1 se borra automticamente cuando se ejecuta el temporizador / Counter1 desbordamiento vector de interrupcin.
Alternativamente, se puede borrar TOV1 escribiendo un uno lgico a su ubicacin poco.

140
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

16. Timer / Counter0 y Timer / Counter1 Prescalers


"8-bit del temporizador / Counter0 con PWM" en la pgina 94 y "16-bit del temporizador / Counter1 con PWM" en la pgina
113 compartir el mismo mdulo de pre-escalador, pero los Timer / contadores pueden tener diferente ajuste prescaler
ajustes. La siguiente descripcin se aplica a ambos Timer / Counter1 y Timer / Counter0.

16.1

Reloj interno Fuente


El temporizador / contador puede ser ajustado directamente por el reloj del sistema (ajustando el CSN2: 0 = 1). Este
proporciona el funcionamiento ms rpido, con un mximo del temporizador / contador de frecuencia de reloj igual al sistema
frecuencia de reloj (fCLK_I / O). Alternativamente, uno de los cuatro grifos de la pre-escalador se puede utilizar como una
fuente de reloj. El reloj de preescalado tiene una frecuencia de cualquiera de fCLK_I / O / 8, fCLK_I / O / 64, fCLK_I / O / 256, o
fCLK_I / O / 1024.

16.2

Precontador Restablecer
El prescaler se marcha libre, es decir, funciona de manera independiente de la lgica Reloj Seleccione de la
Timer / Contador, y que es compartida por Timer / Counter1 y Timer / Counter0. Dado que el prescaler es
no se ve afectado por el reloj del temporizador / contador de seleccin, el estado de la pre-escalador tendr implicaciones
para situaciones donde se utiliza un reloj de preescalado. Un ejemplo de artefactos preescala se produce cuando
el temporizador est activado y sincronizado por el prescaler (6> Csn2: 0> 1). El nmero de reloj del sistema
ciclos de cuando el temporizador est habilitado para el primer conteo se produce puede ser de 1 a N + 1 sistema de
ciclos de reloj, donde N es igual al divisor prescaler (8, 64, 256, o 1024).

Es posible utilizar el reinicio prescaler para la sincronizacin del temporizador / contador para programar ejecucin
cin. Sin embargo, se debe tener cuidado si el otro temporizador / contador que comparte el mismo prescaler
tambin utiliza preescala. Un restablecimiento prescaler afectar el perodo pre-escalador para todos Timer / contadores que es
conectado.

16.3

Externo Fuente de reloj


Una fuente de reloj externa aplicada al pin T1 / T0 se puede utilizar como temporizador contador de reloj /
(ClkT1 / clkT0). El pasador de T1 / T0 se muestrea una vez cada ciclo de reloj del sistema por la sincronizacin pin
la lgica. La seal sincronizada (muestreada) se pasa entonces a travs del detector de borde. Figura 16-1
muestra un diagrama de bloques equivalente funcional del detector de T1 / T0 y el borde de sincronizacin
la lgica. Los registros estn sincronizados en el flanco positivo del reloj interno del sistema (clkI / O). El pestillo
es transparente en el periodo alto del reloj interno del sistema.

El detector de borde genera un pulso clkT1 / clkT0 para cada positivo (CSN2: 0 = 7) o negativo
(CSN2: 0 = 6) de borde que detecta.
Figura 16-1. Muestreo T1 / T0 Pin

Tn

Tn_sync
(Para Reloj
Seleccione Logic)

LE
clk I / O
Sincronizacin

Detector Edge

La lgica de sincronizacin y el borde detector introduce un retardo de 2,5 a 3,5 ciclos de reloj del sistema
desde un borde se ha aplicado a la clavija de T1 / T0 para el contador se actualiza.

141
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Activacin y desactivacin de la entrada de reloj que se debe hacer cuando T1 / T0 se ha mantenido estable durante al menos
ciclo de reloj de un sistema, de lo contrario se corre el riesgo de que se genere un / pulso Contador reloj falso temporizador.
Cada medio perodo del reloj externo aplicado debe ser de ms de un ciclo de reloj del sistema para
garantizar un muestreo correcto. El reloj externo debe ser la garanta de tener menos de la mitad de la ma
frecuencia de reloj de sistema (fExtClk <fclk_I / S / 2) dado un ciclo de trabajo del 50/50%. Puesto que los usos detector de bordes
de muestreo, la frecuencia mxima de un reloj externo que puede detectar es la mitad de la toma de muestras cuencia
cuencia (Nyquist teorema de muestreo). Sin embargo, debido a la variacin de la frecuencia de reloj del sistema
y ciclo de trabajo causada por fuentes oscilador (cristal, resonador, y condensadores) tolerancias, es
recomienda que la frecuencia mxima de una fuente de reloj externa es menor que fclk_I / S / 2.5.

Una fuente de reloj externo no se puede preescalado.


Figura 16-2. Prescaler para el temporizador / Counter0 y Timer / Counter1 (1)
clk I / O
Claro

PSRSYNC

T0
Sincronizacin
T1
Sincronizacin

clkT1

Nota:

clkT0

1. La lgica de sincronizacin en los pines de entrada (T1 / T0) se muestra en Figura 16-1.

142
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

16.4

Registro Descripcin

16.4.1

GTCCR - Temporizador general / Contador Registro de Control


Bit

0x23 (0x43)

TSM

PSRASY

PSRSYNC

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

GTCCR

Bit 7 - TSM: Temporizador / Contador Modo de sincronizacin


Escribiendo el bit de TSM a uno activa el modo de temporizador / contador de sincronizacin. En este modo, la
valor que se escribe en los bits PSRASY y PSRSYNC se mantiene, por lo tanto, mantener el correspondiente
ing seales de restablecimiento prescaler afirmaron. Esto asegura que los correspondientes Timer / contadores son
detenido y se puede configurar en el mismo valor sin el riesgo de una de ellas avanzando durante
de configuracin. Cuando el bit de TSM est escrito a cero, los bits PSRASY y PSRSYNC se borran
por el hardware, y el contador de tiempo / contadores empiezan a contar al mismo tiempo.

Bit 0 - PSRSYNC: Restablecer Precontador


Cuando este bit es uno, Timer / Counter1 y Timer / Counter0 prescaler se restablecer. Este bit es norMally se aclar de inmediato por hardware, excepto si el bit de TSM est establecido. Tenga en cuenta que el Timer / Counter1
y Timer / Counter0 comparten la misma prescaler y un restablecimiento de este prescaler afectarn tanto
temporizadores.

143
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

17. 8 bits Timer / Contador2 con PWM y asncrona Operacin


17.1

Caractersticas

17.2

Counter Single Channel


Timer Borrar en Partido Comparar (Auto Reload)
Sin saltos, Fase de Pulso correcta modulador de ancho (PWM)
Generador de frecuencia
10-bit Reloj Precontador
Desbordamiento y Comparar Partido interrupcin Fuentes (TOV2, OCF2A y OCF2B)
Permite Clocking desde Externa 32 kHz cristal de reloj independiente del reloj de O / I

Visin de conjunto
Timer / Contador2 es un propsito general, de un solo canal, temporizador de 8 bits mdulo / Contador. Una simplificado
diagrama de bloques de la 8-bit del temporizador / contador se muestra en Figura 17-1. Para la colocacin real de
Pines I / O, consulte "Pinout ATmega48PA / 88PA / 168PA / 328P" en la pgina 2. CPU I accesible / O Reglanistros, incluidos los bits de E / S y los pines I / O, se muestran en negrita. La especfica del dispositivo de E / S Registro y poco
ubicaciones se enumeran en la "Registrar Descripcin" en la pgina 158.

El bit en PRTIM2 "Minimizar el consumo de energa" en la pgina 42 debe ser por escrito a cero para
permitir mdulo temporizador / Contador2.
Figura 17-1. 8-bit del temporizador / contador Diagrama de bloques

Contar

Tovn
(Int.Req.)

Claro
Logic Control
Direccin

clkTn

Reloj Seleccione
Borde
Detector

TOP

Tn

INFERIOR
(De Precontador)

Timer / Contador
TCNTn

=0
OCnA
(Int.Req.)
Waveform
Generacin

OCnA

OCRnA

DATOS DE
BUS

Fijo
TOP
Valor

OCnB
(Int.Req.)
Waveform
Generacin

OCnB

OCRnB

TCCRnA

TCCRnB

144
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


17.2.1

Registros
El temporizador / contador (TCNT2) y salida Compara Registro (OCR2A y OCR2B) son de 8 bits REGnistros. Solicitud de interrupcin (acortan como Int.Req.) Las seales son visibles en la interrupcin de la bandera Timer
Registro (TIFR2). Todas las interrupciones estn enmascaradas individualmente con la Mscara Registro interrupcin de
temporizador
(TIMSK2). TIFR2 y TIMSK2 no se muestran en la figura.
El temporizador / contador puede ser ajustado internamente, a travs de la pre-escalador, o asincrnica registr desde
los TOSC1 / 2 pines, como se detalla ms adelante en esta seccin. La operacin asincrnica es controlado por
el Estatuto asncrono Registro (ASSR). Los controles de bloque lgico Reloj posicin Seleccione el reloj
fuente que temporizador / contador utiliza para aumentar (o disminuir) su valor. El temporizador / contador es inactiva
tiva cuando se selecciona ninguna fuente de reloj. La salida de la lgica Reloj Seleccione se conoce como la
reloj temporizador (clkT2).

La salida de doble buffer Compare Registro (OCR2A y OCR2B) se comparan con la


Valor Timer / Contador en todo momento. El resultado de la comparacin puede ser utilizado por la forma de onda Gerador para generar un PWM o salida de frecuencia variable de la salida de comparacin pasadores (OC2A y
OC2B). Vea la seccin "17.5" en la pgina 146. para ms detalles. Tambin fijar el evento partido comparar la
Comparar Flag (OCF2A o OCF2B) que se puede utilizar para generar una salida de interrupcin Comparar
peticin.

17.2.2

Definiciones
Muchas referencias de registro y de bit en este documento estn escritas en forma general. Una minscula "n"
reemplaza el nmero del temporizador / contador, en este caso 2. Sin embargo, cuando se utiliza el registro o poco
define en un programa, la forma precisa debe ser utilizado, es decir, TCNT2 para acceder Timer / Contador2
valor del contador y as sucesivamente.
Las definiciones en Tabla 17-1 Tambin se utilizan ampliamente en toda la seccin.
Tabla 17-1.

17.3

Definiciones

INFERIOR

El contador alcanza el fondo cuando se convierte en cero (0x00).

MAX

El contador alcanza su mximo cuando se convierte en 0xFF (decimal 255).

TOP

El contador llega a la cima cuando se hace igual al valor ms alto de la


contar secuencia. El valor TOP puede ser asignado a ser el valor fijo 0xFF
(MAX) o el valor almacenado en el registro OCR2A. La asignacin es dependiente
abolladura en el modo de funcionamiento.

Temporizador / contador Fuentes de reloj


El temporizador / contador puede ser ajustado a un sncrono interno o un asncrono externo
fuente de reloj. El clkT2 fuente de reloj es por defecto igual al reloj de MCU, clkI / O. Cuando el AS2
bit en el registro ASSR se escribe en uno lgico, la fuente de reloj se toma del temporizador / contador
Oscilador conectado a TOSC1 y TOSC2. Para ms detalles sobre la operacin asncrona, consulte "ASSR
- Asncrono Registro de estado "en la pgina 164. Para ms detalles sobre las fuentes de reloj y prescaler, consulte
"Timer / Contador Precontador" en la pgina 156.

17.4

Unidad de contador
La parte principal de la 8-bit del temporizador / contador es la unidad de contador bidireccional programable. Figura
17-2 en la pgina 146 muestra un diagrama de bloques de la barra y su entorno circundante.

145
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 17-2. Unidad contra el Diagrama de bloques
Tovn
(Int.Req.)

DATOS DE BUS

TOSC1
contar
claro

TCNTn

clk Tn
Logic Control

Precontador

T/C
Oscilador

direccin

fondo

TOSC2

superior

clkI / S

Descripcin de seales (seales internas):


contar

Aumentar o disminuir TCNT2 por 1.

direccin

Selecciona entre incremento y decremento.

claro

TCNT2 Claro (poner todos los bits a cero).

clkTn

Timer / Contador reloj, conocido como clkT2 en la siguiente.

superior

Sealiza que TCNT2 ha alcanzado el valor mximo.

fondo

Sealiza que TCNT2 ha alcanzado el valor mnimo (cero).

Dependiendo del modo de operacin utilizado, el contador se borra, incrementa o decrementa


en cada reloj temporizador (clkT2). clkT2 puede generarse a partir de una fuente de reloj externa o interna,
seleccionado por los bits Reloj Select (CS22: 0). Cuando se selecciona ninguna fuente de reloj (CS22: 0 = 0) la
temporizador se detiene. Sin embargo, el valor TCNT2 se puede acceder por la CPU, independientemente de
si clkT2 est presente o no. A las anulaciones de escritura del procesador (tiene prioridad sobre) todo contador clara o
contar las operaciones.

La secuencia de conteo se determina por el ajuste de los bits WGM21 y WGM20 ubicados en
el Registro Timer / Contador Control (TCCR2A) y el WGM22 ubicado en el Timer / Contador
Registro de Control B (TCCR2B). Existen estrechos vnculos entre el comportamiento del contador
(recuento) y cmo se generan formas de onda en la salida de comparacin salidas OC2A y OC2B.
Para ms detalles acerca de las secuencias de conteo avanzadas y generacin de formas de onda, consulte "Modos de
Operacin "en la pgina 149.

El / Contador Bandera desbordamiento Timer (TOV2) se establece en funcin del modo de funcionamiento seleccionado por
la WGM22: 0 bits. TOV2 se puede utilizar para generar una interrupcin de la CPU.

17.5

Salida Unidad Comparar


El comparador de 8 bits compara continuamente TCNT2 con la salida de comparacin Registro
(OCR2A y OCR2B). Siempre es igual TCNT2 OCR2A o OCR2B, el comparador seala una
partido. Un partido marcar la comparacin de salida de la bandera (OCF2A o OCF2B) en la prxima reloj temporizador
ciclo. Si la interrupcin correspondiente est activada, la comparacin de salida Bandera genera una salida
Comparar interrumpir. La comparacin de salida de la bandera se borra automticamente cuando la interrupcin es ejerecortado. Alternativamente, la comparacin de salida de la bandera se puede borrar software escribiendo una lgica
uno a su ubicacin bit I / O. El generador de forma de onda utiliza la seal de correspondencia para generar una salida
de acuerdo con el modo de funcionamiento establecido por el WGM22: 0 bits y comparar Modo de salida (COM2x1: 0)
Bits. Las seales max e inferior son usados por el generador de forma de onda para el manejo de la especial
casos de los valores extremos en algunos modos de funcionamiento ("Modos de la operacin "en la pgina 149).

Figura 17-3 muestra un diagrama de bloques de la unidad de salida de comparacin.

146
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 17-3. Comparar Unidad de salida, Diagrama de bloques

DATOS DE BUS

OCRnx

TCNTn

=(Comparador 8-bit)
OCFnx (Int.Req.)

superior
fondo

Generador de onda

OCnx

FOCn

WGMn1: 0

COMnX1: 0

El Registro OCR2x es amortiguada doble al utilizar cualquiera de la modulacin de ancho de pulso (PWM)
modos. Para el normal y Borrar contador en Comparar (CTC) modos de funcionamiento, el doble
buffering est desactivado. El doble bfer sincroniza la actualizacin de la OCR2x Comparar
Registrarse para la parte superior o inferior de la secuencia de conteo. La sincronizacin evita la
ocurrencia de longitud impar, pulsos PWM no simtricas, con lo que la salida de glitch-libre.

El OCR2x Registro de acceso puede parecer complejo, pero este no es el caso. Cuando el doble buffer
est activada, la CPU tiene acceso a la Memoria de Registro OCR2x, y si el doble bfer se visualiza
habilitada la CPU acceder al OCR2x directamente.

17.5.1

Fuerza de comparacin de salida


En los modos de generacin de forma de onda no PWM, la salida del comparador partido puede ser forzado por
escribiendo un uno a la salida de la Fuerza Comparar (FOC2x) bits. Forzar partido comparar no fijar el
Bandera OCF2x o recargar / borrar el contador de tiempo, pero el pasador OC2x se actualizar como si una verdadera comparacin
partido haba ocurrido (el COM2x1: ajustes de 0 bits definen si el pin OC2x se establece, borra o
conmutado).

17.5.2

Comparar Partido bloqueo por TCNT2 Escribir


Todas las operaciones de la CPU de escritura en el Registro TCNT2 bloquearn cualquier comparar partido que se produce en el
siguiente ciclo de reloj temporizador, incluso cuando se detiene el temporizador. Esta caracterstica permite OCR2x sea inicializacin
zado para el mismo valor que TCNT2 sin desencadenar una interrupcin cuando el reloj / Contador Timer es
habilitado.

17.5.3

El uso de la unidad de salida de comparacin


Desde que escrib TCNT2 en cualquier modo de operacin bloquear todos comparar resultados para uno reloj temporizador
ciclo, existen riesgos al cambiar TCNT2 cuando se utiliza la comparacin de salida del canal,
independientemente de que el temporizador / contador est funcionando o no. Si el valor escrito para TCNT2
es igual al valor OCR2x, el partido comparar echar de menos, lo que resulta en forma de onda incorrecta
generacin. Del mismo modo, no escriba el valor TCNT2 igual a fondo cuando el contador se
conteo regresivo.

147
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


La configuracin de la OC2x se debe realizar antes de la Direccin Registro de datos para el
pin puerto de salida. La manera ms fcil de establecer el valor OC2x es utilizar la salida de la Fuerza Comisin
pare (FOC2x) bit de seleccin en el modo Normal. El Registro OC2x mantiene su valor, incluso cuando
cambiar entre los modos de forma de onda Generacin.
Tenga en cuenta que la COM2x1: 0 bits no se doble almacenamiento junto con el valor de comparacin.
Cambio de la COM2x1: 0 bits tendrn efecto inmediatamente.

17.6

Comparar Unidad de salida Partido


El modo de salida de comparacin (COM2x1: 0) Los bits tiene dos funciones. Los usos Waveform Generator
la COM2x1: 0 bits para definir la salida de comparacin (OC2x) estado en el prximo partido de comparar.
Adems, el COM2x1: 0 bits controlan la fuente de salida de pin OC2x. Figura 17-4 muestra una simplificado
esquemtico de la lgica afectada por el COM2x1: 0 entorno poco. La E / S de registros, E / S de bits, y E / S
alfileres en la figura se muestran en negrita. Slo las partes del yo general de E / S del puerto de registros de control
(DDR y PORT) que se ven afectados por el COM2x1: 0 bits se muestran. Al referirse a la
Estado OC2x, la referencia es para el OC2x Registro interno, no el pin OC2x.

Figura 17-4. Comparar Unidad de salida Partido, Esquema

COMnx1
COMnx0
FOCnx

Waveform
Generador

Q
1

OCnx

D
DATOS DE
BUS

OCnx
Perno
0

PORT

DDR
clk I / O

La funcin de puerto de E / S generales es invalidada por la salida de comparacin (OC2x) de la forma de onda
Generador si alguna de las COM2x1: se establecen los bits 0. Sin embargo, la direccin OC2x pines (entrada o salida
put) todava est controlada por el registro de direccin de datos (DDR) para el pin del puerto. La Direccin de Datos
Registrar poco para el pasador OC2x (DDR_OC2x) se debe establecer como salida antes de que el valor OC2x es visible en el pasador. La funcin de anulacin puerto es independiente del modo de forma de onda Generation.

El diseo de la lgica pin de salida de comparacin permite la inicializacin del estado OC2x antes de la salida
put est habilitada. Tenga en cuenta que algunos COM2x1: ajustes de 0 bits estn reservados para ciertos modos de
operacin. Vea la seccin "17.11" en la pgina 158.

148
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


17.6.1

Comparar Modo de salida y de forma de onda Generacin


El Generador de forma de onda utiliza el COM2x1: 0 bits de manera diferente en los modos normal, CTC, y PWM.
Para todos los modos, estableciendo el COM2x1: 0 = 0 indica al generador de forma de onda que ninguna accin en el
OC2x Registro se va a realizar en el prximo partido comparar. Para acciones de salida de comparar en el
modos no PWM se refieren a Tabla 17-5 en la pgina 159. Para el modo PWM rpido, consulte Tabla 17-6 en
pgina 159, y para la fase correcta PWM consulte Tabla 17-7 en la pgina 160.

Un cambio de la COM2x1: 0 bits estado tendr efecto en el primer partido despus de comparar los bits son
por escrito. Para los modos no-PWM, la accin puede ser forzada a tener efecto inmediato mediante el uso de la
Pedacitos estroboscpicas FOC2x.

17.7

Modos de funcionamiento
El modo de funcionamiento, es decir, el comportamiento del temporizador / contador y la salida Comparar pines, es
definido por la combinacin del modo de forma de onda Generacin (WGM22: 0) y comparar salida
modo (COM2x1: 0) bits. Los bits de modo de comparacin de salida no afectan a la secuencia de conteo,
mientras que los bits de modo Waveform Generacin hacen. El COM2x1: 0 bits controlan si el PWM salida
put generada debe ser invertida o no (invertida o PWM no invertido). Para los modos no PWM
la COM2x1: 0 bits de control si la salida se debe establecer, borra, o alternar en una comparacin
partido (Ver Seccin "17.6" en la pgina 148.).

Para obtener informacin detallada momento consulte "Timer / Contador diagramas de tiempo" en la pgina 153.
17.7.1

Modo Normal
El modo ms simple de funcionamiento es el modo normal (WGM22: 0 = 0). En este modo el conteo
direccin es siempre hacia arriba (incremento), y ningn contador clara se realiza. El contador simplemente
sobrecostos cuando pasa a su valor de 8 bits mxima (TOP = 0xFF) y luego se reiniciar desde la parte inferior
tom (0x00). En funcionamiento normal, el / Contador Bandera desbordamiento Timer (TOV2) se encuentra en la misma
ciclo de reloj temporizador como el TCNT2 se convierte en cero. La bandera TOV2 en este caso se comporta como un noveno
bit, excepto que slo se establece, no se aclar. Sin embargo, combinado con el desbordamiento del temporizador de interrupcin
que borra automticamente la Bandera TOV2, la resolucin del temporizador se puede aumentar mediante software.
No hay casos especiales a tener en cuenta en el modo Normal, un nuevo valor del contador se puede escribir
en cualquier momento.

La unidad de salida de comparacin se puede utilizar para generar interrupciones en algn momento dado. El uso de las Salidas
put Comparar generar no se recomienda formas de onda en el modo Normal, ya que esta voluntad
ocupar demasiado del tiempo de CPU.

17.7.2

Timer Borrar en Match (CTC) Modo Comparar


En temporizador Borrar en el modo CTC Comparar o (WGM22: 0 = 2), el Registro OCR2A se utiliza para
manipular la resolucin del contador. En el modo de CTC el contador se pone a cero cuando el contador
valor (TCNT2) coincide con el OCR2A. El OCR2A define el valor superior para el mostrador, por lo tanto,
tambin su resolucin. Este modo permite un mayor control de la frecuencia de salida partido comparar. Ella
que tambin simplifica la operacin de contar eventos externos.

El diagrama de tiempos para el modo de CTC se muestra en Figura 17-5. El valor del contador (TCNT2)
aumenta hasta que se produce una coincidencia comparar entre TCNT2 y OCR2A, y luego contador
(TCNT2) se borra.

149
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 17-5. Modo de CTC, diagrama de tiempos
OCnx interrupcin Flag Set

TCNTn

OCnx
(Cambiar)
Perodo

(COMnx1: 0 = 1)

Una interrupcin puede ser generada cada vez que el valor del contador alcanza el valor TOP mediante el uso de la
Bandera OCF2A. Si la interrupcin se habilita, la rutina de manejador de interrupcin se puede utilizar para la actualizacin
el valor TOP. Sin embargo, el cambio de TOP a un valor cercano a abajo cuando el contador est en marcha
cin con ninguno o un valor bajo prescaler debe hacerse con cuidado ya que el modo de CTC no
tienen la caracterstica de doble buffer. Si el nuevo valor escrito en OCR2A es inferior a la corriente
valor de TCNT2, el contador se perder el partido comparar. El contador entonces tendr que contar hasta
su valor mximo (0xFF) y envolver alrededor a partir de 0x00 antes del partido comparar posible
ocurrir.

Para generar una salida de forma de onda en el modo de CTC, la salida OC2A se puede configurar para cambiar su lgica
nivel en cada partido comparar estableciendo los bits de modo de salida Comparar con el modo de alternar
(COM2A1: 0 = 1). El valor OC2A no ser visible en el pin de puerto a menos que la direccin de datos del
el pasador se establece en la salida. La forma de onda generada tendr una frecuencia mxima de fOC2A =
fclk_I / O / 2 cuando OCR2A se ajusta a cero (0x00). La frecuencia de la forma de onda se define por la siguiente
ecuacin:

F clk_I / S
f OCnx = ------------------------------------------------ 2 N ( 1+OCRnx )
La Nvariable representa el factor de preescala (1, 8, 32, 64, 128, 256, o 1024).
Como para el modo normal de funcionamiento, la Bandera TOV2 se encuentra en el mismo ciclo de reloj temporizador que la
contador cuenta de MAX a 0x00.
17.7.3

Modo PWM rpido


El pulso rpido modulacin de ancho o el modo PWM rpido (WGM22: 0 = 3 o 7) proporciona una alta frecuencia PWM opcin de generacin de forma de onda. El PWM rpido difiere de la otra opcin PWM por
su funcionamiento una sola pendiente. El contador cuenta desde abajo hacia arriba y luego se reinicia desde llas
TOM. TOP se define como 0xFF cuando WGM2: 0 = 3, y cuando OCR2A MGM2: 0 = no 7. En
invirtiendo Comparar modo de Salida, la salida de comparacin (OC2x) se despeja en el partido comparar
entre TCNT2 y OCR2x, y establecer en la parte inferior. En invirtiendo Comparar modo de salida, la salida
put se encuentra en partido comparar y se aclar en la parte inferior. Debido a la operacin de una sola pendiente, la
frecuencia de funcionamiento del modo PWM rpido puede ser dos veces tan alta como la fase correcta PWM
el modo que utiliza la operacin de doble pendiente. Esta alta frecuencia hace que el modo PWM rpido adecuado
para la regulacin de potencia, rectificacin y aplicaciones CAD. De alta frecuencia permite fsicamente pequeo
componentes de tamao externas (bobinas, condensadores), y por lo tanto reduce el coste total del sistema.

150
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


En el modo PWM rpido, el contador se incrementa hasta el valor del contador coincide con el valor SUPERIOR.
El contador se borra a continuacin en el siguiente ciclo de reloj temporizador. El diagrama de temporizacin para la rpida
El modo PWM se muestra en Figura 17-6. El valor TCNT2 est en el diagrama de temporizacin que muestra como una histogram para ilustrar la operacin de una sola pendiente. El diagrama incluye la no invertida y
salidas PWM invertida. Las pequeas marcas de lneas horizontales en las laderas TCNT2 representan comparan
partidos entre OCR2x y TCNT2.

Figura 17-6. PWM de modo rpido, diagrama de tiempos


OCRnx interrupcin Flag Set

OCRnx Actualizacin y
Tovn interrupcin Flag Set

TCNTn

OCnx

(COMnx1: 0 = 2)

OCnx

(COMnx1: 0 = 3)

Perodo

La bandera de desbordamiento del temporizador / contador (TOV2) se establece cada vez que el contador llegue a TOP. Si el interrupt est activado, la rutina de controlador de interrupcin se puede utilizar para actualizar el valor de comparacin.
En el modo PWM rpido, la unidad de comparacin permite la generacin de formas de onda PWM en el pin OC2x.
Ajuste del COM2x1: 0 bits para dos producir un PWM no invertida y una salida PWM invertida
se puede generar mediante el establecimiento de la COM2x1: 0 a tres. TOP se define como 0xFF cuando WGM2: 0 = 3,
y OCR2A cuando MGM2: 0 = 7. (Ver Tabla 17-3 en la pgina 158). El valor real OC2x slo se
ser visible en el pin de puerto si la direccin de datos para el pin del puerto est configurado como salida. El PWM de onda
forma se genera mediante el establecimiento (o eliminar) el Registro OC2x en el partido de comparar entre
OCR2x y TCNT2, y la limpieza (o configuracin) del Registro OC2x en el ciclo de reloj temporizador el
contador se borra (cambios de arriba a abajo).

La frecuencia PWM para la salida se puede calcular por la siguiente ecuacin:


F clk_I / S
-f OCnxPWM = ---------------N 256
La Nvariable representa el factor de preescala (1, 8, 32, 64, 128, 256, o 1024).
Los valores extremos para el Registro OCR2A representan casos especiales cuando se genera un PWM
forma de onda de salida en el modo PWM rpido. Si el OCR2A se fija igual a abajo, la salida
ser un pico estrecho para cada ciclo de reloj temporizador MAX + 1. Ajuste del OCR2A igual a MAX resultar
en una salida constantemente alta o baja (dependiendo de la polaridad de la salida establecido por el COM2A1: 0
los bits.)

Una frecuencia (con 50% de ciclo de trabajo) de salida de forma de onda en el modo PWM rpido se puede lograr por ajuste
ting OC2x para cambiar su nivel lgico en cada compara partido (COM2x1: 0 = 1). La forma de onda

151
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


generado tendr una frecuencia mxima de foc2 = fclk_I / O / 2 cuando OCR2A se establece en cero. Esta caracterstica
tura es similar a la de palanca OC2A en el modo de CTC, excepto la funcin doble de amortiguamiento de la salida
Unidad de comparacin se activa en el modo PWM rpido.

17.7.4

Fase Modo PWM correcta


El modo de fase correcta PWM (WGM22: 0 = 1 o 5) proporciona una fase de alta resolucin correcta
Opcin de generacin de forma de onda PWM. El modo PWM de fase correcta se basa en una doble pendiente
operacin. El contador cuenta repetidamente desde abajo hacia arriba y luego de arriba a abajo
TOM. TOP se define como 0xFF cuando WGM2: 0 = 3, y cuando OCR2A MGM2: 0 = no 7. En
invirtiendo Comparar modo de Salida, la salida de comparacin (OC2x) se despeja en el partido comparar
entre TCNT2 y OCR2x mientras conteo progresivo, y situado en el partido comparar mientras downcounting. En invirtiendo salida modo Comparar, se invierte la operacin. La operacin de doble pendiente tiene
menor frecuencia mxima operacin de la sola operacin pendiente. Sin embargo, debido a la symmetric caracterstica de los modos PWM de doble pendiente, se prefieren estos modos de control del motor
aplicaciones.

En el modo PWM de fase correcta el contador se incrementa hasta el valor del contador coincide TOP.
Cuando el contador llegue arriba, cambia el sentido de contaje. El valor TCNT2 ser igual
Hacia la parte superior de un ciclo de reloj temporizador. El diagrama de tiempos para el modo PWM de fase correcta se muestra
en Figura 17-7. El valor TCNT2 est en el diagrama de temporizacin se muestra como un histograma para ilustrar
la operacin de doble pendiente. El diagrama incluye salidas no invertidas e invertidas PWM. La
pequeas marcas de lneas horizontales en las laderas TCNT2 representan comparan partidos entre OCR2x
y TCNT2.

Figura 17-7. Fase PWM de modo correcto, diagrama de tiempos


OCnx interrupcin Flag Set

OCRnx Actualizacin

Tovn interrupcin Flag Set

TCNTn

OCnx

(COMnx1: 0 = 2)

OCnx

(COMnx1: 0 = 3)

Perodo

La bandera de desbordamiento del temporizador / contador (TOV2) se establece cada vez que el contador llegue a FONDO. La
Interrupcin de la bandera se puede utilizar para generar una interrupcin cada vez que el contador alcanza el fondo
valor.
En el modo PWM de fase correcta, la unidad de comparacin permite la generacin de formas de onda PWM en el
Pin OC2x. Ajuste del COM2x1: 0 bits para dos producir un PWM no invertida. Un PWM invertida

152
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


salida puede ser generado mediante el establecimiento de la COM2x1: 0 a tres. TOP se define como 0xFF cuando
WGM2: 0 = 3, y cuando OCR2A MGM2: 0 = 7 (Ver Tabla 17-4 en la pgina 159). El OC2x real
valor slo ser visible en el pin de puerto si la direccin de datos para el pin del puerto se configura como salida. La
Forma de onda PWM se genera en la limpieza (o ajuste) del Registro OC2x en el partido comparar
entre OCR2x y TCNT2 cuando el contador se incrementa, y el ajuste (o borrar) la OC2x
Regstrese en partido comparar entre OCR2x y TCNT2 cuando el contador disminuye. La
Frecuencia de PWM para la salida al utilizar fase PWM correcto se puede calcular por la siguiente
ING ecuacin:

F clk_I / S
-f OCnxPCPWM = ---------------N 510
La Nvariable representa el factor de preescala (1, 8, 32, 64, 128, 256, o 1024).
Los valores extremos para el Registro OCR2A representan casos especiales cuando se genera un PWM
forma de onda de salida en el modo PWM de fase correcta. Si el OCR2A se fija igual a abajo, las
salida ser continua baja y si se fija igual a MAX la salida ser continuamente alto para
no invertida modo PWM. Para PWM invertida la salida tendr los valores lgicos opuestos.
En el comienzo del perodo de 2 en Figura 17-7 OCnx tiene una transicin de alta a baja, aunque
No existe Compare Match. El punto de esta transicin es garantizar la simetra alrededor llas
TOM. Hay dos casos que dan una transicin sin Partido Comparar.
OCR2A cambia su valor de MAX, como en Figura 17-7. Cuando el valor es OCR2A MAX el
OCn valor pin es el mismo que el resultado de un conteo regresivo comparar partido. Para asegurar
simetra alrededor INFERIOR el valor OCn en MAX debe corresponder al resultado de una ascendente
contando Compare Match.
El temporizador empieza a contar a partir de un valor ms alto que el de OCR2A, y por esa razn
no alcanza la comparacin Partido y de ah el cambio OCn que habra sucedido en el camino
arriba.

17.8

Timer / Contador diagramas de tiempo


Las siguientes figuras muestran el temporizador / contador en modo sncrono, y el reloj temporizador (clkT2)
Por lo tanto, se muestra como una seal de habilitacin de reloj. En el modo asncrono, clkI / S debe ser sustituido por
el reloj temporizador / contador oscilador. Las cifras incluyen informacin sobre cundo banderas de interrupcin son
establecer. Figura 17-8 contiene datos de temporizacin para el funcionamiento bsico del temporizador / contador. La figura
muestra la
contar secuencia cercana al valor MAX en todos los modos distintos de modo PWM de fase correcta.
Figura 17-8. Temporizador / contador Cronograma, no preescala
clkI / S

clkTn
(ClkI / S / 1)

TCNTn

MAX - 1

MAX

INFERIOR

INFERIOR + 1

Tovn

Figura 17-9 muestra los mismos datos de temporizacin, pero con el prescaler habilitado.

153
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 17-9. Temporizador / contador Cronograma, con Precontador (fclk_I / S / 8)
clkI / S

clkTn
(ClkI / S / 8)

TCNTn

MAX - 1

MAX

INFERIOR

INFERIOR + 1

Tovn

Figura 17-10 muestra la configuracin de OCF2A en todos los modos excepto el modo CTC.
Figura 17-10. Temporizador / contador Cronograma, Ajuste de OCF2A, con Precontador (fclk_I / S / 8)
clkI / S

clkTn
(ClkI / S / 8)

TCNTn

OCRnx - 1

OCRnx

OCRnx

OCRnx + 1

OCRnx + 2

OCRnx Valor

OCFnx

Figura 17-11 muestra la configuracin de OCF2A y la limpieza de TCNT2 en modo CTC.


Figura 17-11. Temporizador / contador Cronograma, Borrar contador en el modo de ajuste de comparacin, con Precaler (fclk_I / S / 8)
clkI / S

clkTn
(ClkI / S / 8)

TCNTn
(CTC)

OCRnx

TOP - 1

TOP

INFERIOR

INFERIOR + 1

TOP

OCFnx

154
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

17.9

Operacin asncrona de Timer / Contador2


Cuando Timer / Contador2 opera de forma asncrona, se deben tomar algunas consideraciones.
Advertencia: Al cambiar entre sincronizacin asncrona y sncrona de
Timer / Contador2, el temporizador Registros TCNT2, OCR2x y TCCR2x podra estar daado. Una caja fuerte
procedimiento para la conmutacin de la fuente de reloj es:
a. Desactivar el temporizador / Contador2 interrumpe despejando OCIE2x y TOIE2.
b.

Seleccione la fuente de reloj, ajuste AS2 segn corresponda.

c.

Escribir nuevos valores en TCNT2, OCR2x y TCCR2x.

d. Para cambiar a operacin asincrnica: Espere TCN2xUB, OCR2xUB y TCR2xUB.


e. Desactive las Banderas Timer / Contador2 interrupcin.
f.

Habilitar las interrupciones, si es necesario.

La principal frecuencia de reloj de la CPU debe ser ms de cuatro veces la frecuencia del oscilador.
Cuando se escribe en uno de los registros TCNT2, OCR2x o TCCR2x, el valor se transfiere a un
registro temporal, y con el seguro despus de dos bordes positivos en TOSC1. El usuario no debe escribir
un nuevo valor antes de que los contenidos del registro temporal se han transferido a su
destino. Cada uno de los cinco registros mencionados tienen su registro temporal individual, la cual
significa que, por ejemplo, escrito a TCNT2 no perturbe una escritura OCR2x en curso. Para detectar que una
traslado al registro destino ha tenido lugar, el registro de estado asncrono - ASSR
se ha implementado.

Al introducir de ahorro de energa o el modo de Reduccin de Ruido ADC despus de haber escrito a TCNT2,
OCR2x o TCCR2x, el usuario debe esperar hasta que el registro escrito se ha actualizado si
Timer / Contador2 se utiliza para despertar el dispositivo. De lo contrario, el MCU entrar en modo de sueo
antes de que los cambios sean efectivos. Esto es particularmente importante si cualquiera de la Salida Compare2
interrupcin se utiliza para despertar el dispositivo, ya que la funcin de comparacin de salida se desactiva durante la
escrito a OCR2x o TCNT2. Si el ciclo de escritura no ha terminado, y el MCU entra en modo de suspensin
antes de la OCR2xUB correspondiente mordi vuelve a cero, el dispositivo nunca recibir un
comparar partido de interrupcin, y la MCU no se despierta.

Si el temporizador / Contador2 se utiliza para despertar el dispositivo a partir de ahorro de energa o Reduccin de Ruido ADC
modo, se deben tomar precauciones si el usuario quiere volver a entrar en uno de estos modos: Si reen modo de suspensin dentro del ciclo TOSC1, la interrupcin ser Inmediatamente ocurrir y la
dispositivo de despertar de nuevo. El resultado es mltiples interrupciones y despertares dentro de un ciclo de TOSC1
desde la primera interrupcin. Si el usuario est en duda si el tiempo antes de volver a entrar de ahorro de energa o
El modo de reduccin de ruido ADC es suficiente, el siguiente algoritmo se puede utilizar para garantizar que
ha transcurrido un ciclo TOSC1:

a. Escriba un valor para TCCR2x, TCNT2 o OCR2x.


b.

Espere hasta que la correspondiente actualizacin de la bandera de ocupado en ASSR vuelve a cero.

c.

Introduzca ahorro de energa o el modo de reduccin de ruido ADC.

Cuando se selecciona la operacin asincrnica, el oscilador de 32,768 kHz para Timer / Contador2 es
siempre corriendo, excepto en los modos de Standby Power-abajo y. Despus de un Power-Up Restablecer o Wake
a partir de la Energa-abajo o en el modo de espera, el usuario debe ser consciente del hecho de que este oscilador
podra tardar hasta un segundo para estabilizar. Se recomienda al usuario que esperar por lo menos un
segundos antes de usar temporizador / Contador2 despus del encendido o de atencin de la Energa-abajo o de espera
de modo. El contenido de todos los registros del temporizador / COUNTER2 deben considerarse perdido despus de un
despertador
de la Energa-abajo o en el modo de espera debido a la seal de reloj inestable en el arranque, no importa
si el oscilador est en uso o una seal de reloj se aplica a la patilla TOSC1.

155
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Descripcin de despertar de ahorro de energa o el modo de Reduccin de Ruido ADC cuando el temporizador es
velocidad de reloj de forma asncrona: Cuando se cumple la condicin de interrupcin, se inicia el proceso de despertar
en el siguiente ciclo de reloj temporizador, es decir, el temporizador est siempre avanzaron por al menos una
antes de que el procesador puede leer el valor del contador. Despus de despertar, se detiene el MCU para cuatro
ciclos, se ejecuta la rutina de interrupcin, y se reanuda la ejecucin de la instruccin que sigue
SLEEP.
Lectura del Registro TCNT2 poco despus de despertar de ahorro de energa puede dar una incorrecta
resultado. Desde TCNT2 se registr en el reloj TOSC asncrono, la lectura debe ser TCNT2
hecho a travs de un registro sincronizado con el dominio de reloj interna I / O. La sincronizacin se
colocar por cada flanco ascendente TOSC1. Al despertar del modo de ahorro de energa, y el reloj de E / S
(ClkI / O) vuelve a ser activo, TCNT2 leer como el valor anterior (antes de entrar en el sueo)
hasta el prximo flanco ascendente TOSC1. La fase del reloj TOSC despus de despertarse de Powermodo de ahorro es esencialmente impredecible, ya que depende de la hora del despertador. El recomendado
procedimiento para TCNT2 lectura es por lo tanto de la siguiente manera:

a. Escribe cualquier valor a cualquiera de los registros OCR2x o TCCR2x.


b.
c.

Espere a que la correspondiente actualizacin de la bandera de ocupado que se


solucione.
Leer TCNT2.

Durante el funcionamiento asncrono, la sincronizacin de las banderas de interrupcin para el asncrona


temporizador lleva 3 ciclos de procesador, ms un ciclo de temporizador. Por consiguiente, el temporizador es avanzado por lo
menos
uno antes de que el procesador puede leer el valor del temporizador y la configuracin de la bandera de interrupcin. La
Pin de salida de comparacin se cambia en el reloj temporizador y no se sincroniza con el procesador
reloj.

17.10 Timer / Contador Precontador


Figura 17-12. Prescaler para el temporizador / Contador2
clkI / S

TOSC1

clkT2S
10-BIT T / C prescaler

Claro

clkT2S / 8

clkT2S /clkT2S
32
/clkT2S
64
/clkT2S
128 / 256

clkT2S / 1024

AS2

PSRASY

CS20
CS21
CS22

TIMER / COUNTER2 RELOJ FUENTE


clkT2

La fuente de reloj temporizador / Contador2 se nombra clkT2S. clkT2S es por defecto conectada al colector
sistema de E / S de reloj CLK IO. Al establecer el bit de AS2 en ASSR, Timer / Contador2 es asncrona
velocidad de reloj de la clavija TOSC1. Esto permite el uso de Timer / Contador2 como un contador de tiempo real

156
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


(RTC). Cuando se establece AS2, pasadores TOSC1 y TOSC2 estn desconectados de Puerto C. Un cristal puede
luego ser conectado entre los pines TOSC1 y TOSC2 para servir como un reloj independiente
fuente de Timer / Contador2. El oscilador est optimizado para el uso con un cristal de 32,768 kHz.
Para el temporizador / Contador2, las posibles selecciones preescalado son: clk T2S / 8, clk T2S / 32, clk T2S / 64,
clkT2S / 128, clkT2S / 256, y clkT2S / 1024. Adems, clkT2S as como 0 (parada) se pueden seleccionar.
El establecimiento del bit PSRASY en GTCCR restablece el prescaler. Esto permite al usuario operar con una
prescaler predecible.

157
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

17.11 Registro Descripcin


17.11.1

TCCR2A - Temporizador / Contador Registro de Control A


Bit
(0xB0)
Lectura / Escritura
Valor inicial

COM2A1

COM2A0

COM2B1

COM2B0

WGM21

WGM20

R/W

R/W

R/W

R/W

R/W

R/W

TCCR2A

Bits 7: 6 - COM2A1: 0: Comparar salida Partido A Modo


Estos bits controlan la comparacin de salida pin (OC2A) comportamiento. Si uno o ambos de los COM2A1: 0
bits se establecen, la salida OC2A anula la funcionalidad del puerto normal del pin E / S est conectado
a. Sin embargo, tenga en cuenta que la Direccin de Registro de Datos (DDR) bit correspondiente al pin OC2A
se debe establecer con el fin de permitir que el controlador de salida.

Cuando OC2A est conectado a la clavija, la funcin de la COM2A1: 0 bits depende de la


WGM22: ajuste bit 0. Tabla 17-2 muestra la COM2A1: 0 La funcionalidad de bit cuando el WGM22: 0 bits
se establece en un (no-PWM) normal o modo de CTC.
Tabla 17-2.

Comparar Modo de salida, de modo que no PWM

COM2A1

COM2A0

Descripcin

Operacin portuaria Normal, OC0A desconectado.

Alternar OC2A en Partido Comparar

OC2A Borrar en Partido Comparar

Establecer OC2A en Partido Comparar

Tabla 17-3 Muestra el COM2A1: 0 La funcionalidad de bit cuando el WGM21: 0 bits se establecen en PWM rpido
de modo.
Tabla 17-3.

Comparar Modo de salida, Modo PWM rpido(1)

COM2A1

COM2A0

Operacin portuaria Normal, OC2A desconectado.

WGM22 = 0: Normal operaciones portuarias, OC0A Desconectado.


WGM22 = 1: Activar OC2A el Partido Comparar.

OC2A Borrar en Partido de comparacin, establecer OC2A En el fondo,


(Modo no inversor).

Establecer OC2A en Partido Compare, OC2A claro en el fondo,


(Modo inversora).

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR2A equivale TOP y COM2A1 se establece. En este caso, la Comisin
pare Partido se ignora, pero el conjunto o claro se hace en la parte inferior. Ver "Modo PWM Rpida" en la
pgina 150 para ms detalles.

158
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 17-4 muestra la COM2A1: 0 La funcionalidad de bit cuando el WGM22: 0 bits se ponen a la fase correspondiente
el modo PWM rect.
Tabla 17-4.

Comparar Modo de salida, Fase Modo PWM correcta(1)

COM2A1

COM2A0

Operacin portuaria Normal, OC2A desconectado.

WGM22 = 0: Normal operaciones portuarias, OC2A Desconectado.


WGM22 = 1: Activar OC2A el Partido Comparar.

OC2A Borrar en Partido Comparar cuando de conteo. Establecer OC2A en


Comparar Partido cuando abajo de conteo.

Establecer OC2A en Partido Comparar cuando de conteo. OC2A Borrar en


Comparar Partido cuando abajo de conteo.

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR2A equivale TOP y COM2A1 se establece. En este caso, la Comisin
pare Partido se ignora, pero el conjunto o claro se hace en la parte superior. Ver "Fase PWM de modo correcto" en la
pgina 152 para ms detalles.

Bits 5: 4 - COM2B1: 0: Comparar Modo B Salida Partido


Estos bits controlan la comparacin de salida pin (OC2B) comportamiento. Si uno o ambos de los COM2B1: 0
bits se establecen, la salida OC2B anula la funcionalidad del puerto normal del pin E / S est conectado
a. Sin embargo, tenga en cuenta que la Direccin de Registro de Datos (DDR) bit correspondiente al pin OC2B
se debe establecer con el fin de permitir que el controlador de salida.

Cuando OC2B est conectado a la clavija, la funcin de la COM2B1: 0 bits depende de la


WGM22: ajuste bit 0. Tabla 17-5 muestra la COM2B1: 0 La funcionalidad de bit cuando el WGM22: 0 bits
se establece en un (no-PWM) normal o modo de CTC.

Tabla 17-5.

Comparar Modo de salida, de modo que no PWM

COM2B1

COM2B0

Descripcin

Operacin portuaria Normal, OC2B desconectado.

Alternar OC2B en Partido Comparar

OC2B Borrar en Partido Comparar

Establecer OC2B en Partido Comparar

Tabla 17-6 Muestra el COM2B1: 0 La funcionalidad de bit cuando el WGM22: 0 bits se establecen en PWM rpido
de modo.
Tabla 17-6.

Comparar Modo de salida, Modo PWM rpido(1)

COM2B1

COM2B0

Descripcin

Operacin portuaria Normal, OC2B desconectado.

Reservado

Claro OC2B en Partido Compare, establecer OC2B En el fondo,


(Modo no inversor).

Establecer OC2B en Partido Compare, OC2B claro en el fondo,


(Modo inversora).

159
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Nota:

1. Un caso especial ocurre cuando OCR2B equivale TOP y COM2B1 se establece. En este caso, la Comisin
pare Partido se ignora, pero el conjunto o claro se hace en la parte inferior. Ver "Fase PWM correcta
Modo "en la pgina 152 para ms detalles.

Tabla 17-7 muestra la COM2B1: 0 La funcionalidad de bit cuando el WGM22: 0 bits se ponen a la fase correspondiente
el modo PWM rect.
Comparar Modo de salida, Fase Modo PWM correcta(1)

Tabla 17-7.
COM2B1

COM2B0

Operacin portuaria Normal, OC2B desconectado.

Reservado

OC2B Borrar en Partido Comparar cuando de conteo. Establecer OC2B en


Comparar Partido cuando abajo de conteo.

Establecer OC2B en Partido Comparar cuando de conteo. OC2B Borrar en


Comparar Partido cuando abajo de conteo.

Nota:

Descripcin

1. Un caso especial ocurre cuando OCR2B equivale TOP y COM2B1 se establece. En este caso, la Comisin
pare Partido se ignora, pero el conjunto o claro se hace en la parte superior. Ver "Fase PWM de modo correcto" en la
pgina 152 para ms detalles.

Bits 3, 2 - Res: Bits Reservados


Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Bits 1: 0 - WGM21: 0: Modo Waveform Generacin


En combinacin con el bit WGM22 encontrado en el Registro TCCR2B, estos bits de control de la cuenta
secuencia del contador, la fuente para el mximo (TOP) valor del contador, y qu tipo de onda
formar generacin para ser utilizado, consulte Tabla 17-8. Modos de operacin soportados por el Timer / Contador
unidad son: Modo normal (contador), Timer Borrar en el modo de comparacin del partido (CTC), y dos tipos de
Pulso modos de modulacin de ancho (PWM) (vase "Modos de funcionamiento" en la pgina 149).

Tabla 17-8.

Modo de generacin de forma de onda Bit Descripcin


Timer / Contador
Modo de
Operacin

TOP

Actualizacin
OCRx en
Inmediato

Modo

WGM2

WGM1

WGM0

Normal

0xFF

PWM, Fase
Correcto

0xFF

CTC

PWM rpido

Notas:

OCRA

TOP

Bandera TOV
Ubicado en(1) (2)
MAX
INFERIOR

Inmediato

MAX

0xFF

INFERIOR

MAX

Reservado

PWM, Fase
Correcto

OCRA

TOP

INFERIOR

Reservado

PWM rpido

OCRA

INFERIOR

TOP

1. MAX = 0xFF
2. INFERIOR = 0x00

160
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

17.11.2

TCCR2B - Temporizador / Contador Registro de Control B


Bit

FOC2A

FOC2B

WGM22

CS22

CS21

CS20

Lectura / Escritura

R/W

R/W

Valor inicial

(0xB1)

TCCR2B

Bit 7 - FOC2A: Fuerza de comparacin de salida A


El bit FOC2A slo se activa cuando los bits WGM especifican un modo no PWM.
Sin embargo, para asegurar la compatibilidad con dispositivos futuros, este bit debe ponerse a cero cuando
TCCR2B se escribe cuando se trabaja en modo PWM. Al escribir un uno lgico en el bit FOC2A,
una inmediata Comparar Partido es forzado en la unidad de forma de onda Generacin. La salida es OC2A
cambiado de acuerdo a su COM2A1: ajuste 0 bits. Tenga en cuenta que el bit de FOC2A se implementa como una
estroboscpica. Por lo tanto, es el valor presente en el COM2A1: 0 bits que determina el efecto de la
forzado comparar.

Un estroboscpico FOC2A no generar ninguna interrupcin, ni va a borrar el temporizador en el modo CTC usando
OCR2A como TOP.
El bit FOC2A siempre se lee como cero.
Bit 6 - FOC2B: Fuerza de comparacin de salida B
El bit FOC2B slo se activa cuando los bits WGM especifican un modo no PWM.
Sin embargo, para asegurar la compatibilidad con dispositivos futuros, este bit debe ponerse a cero cuando
TCCR2B se escribe cuando se trabaja en modo PWM. Al escribir un uno lgico en el bit FOC2B,
una inmediata Comparar Partido es forzado en la unidad de forma de onda Generacin. La salida es OC2B
cambiado de acuerdo a su COM2B1: ajuste 0 bits. Tenga en cuenta que el bit de FOC2B se implementa como una
estroboscpica. Por lo tanto, es el valor presente en el COM2B1: 0 bits que determina el efecto de la
forzado comparar.

Un estroboscpico FOC2B no generar ninguna interrupcin, ni va a borrar el temporizador en el modo CTC usando
OCR2B como TOP.
El bit FOC2B siempre se lee como cero.
Bits 5: 4 - Res: Bits Reservados
Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Bit 3 - WGM22: Modo de generacin de forma de onda


Vea la descripcin en el "TCCR2A - Temporizador / Contador Registro de Control A" en la pgina 158.
Bit 2: 0 - CS22: 0: Reloj Select
Los tres Reloj seleccionar bits seleccionar la fuente de reloj para ser utilizado por el temporizador / contador, ver Mesa
17-9 en la pgina 162.

161
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 17-9.

Reloj Seleccione Bit Descripcin

CS22

CS21

CS20

Descripcin

Ninguna fuente de reloj (temporizador / contador parado).

clkT2S / (No preescala)

clkT2S / 8 (De prescaler)

clkT2S / 32 (De prescaler)

clkT2S / 64 (De prescaler)

clkT2S / 128 (De prescaler)

clkT2S / 256 (De prescaler)

clkT2S / 1024 (De prescaler)

Si los modos de pines externos se utilizan para el Timer / Counter0, las transiciones en el reloj T0 pin voluntad del
contador incluso si el pasador est configurado como una salida. Esta caracterstica permite el control del software de la
contando.

17.11.3

TCNT2 - Temporizador / Contador Registro


Bit

Lectura / Escritura
Valor inicial

TCNT2 [7: 0]

(0xB2)

TCNT2

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

El temporizador / contador Registro da acceso directo, tanto para operaciones de lectura y escritura, a la
Unidad de temporizador / contador de 8 bits mostrador. Escribiendo a los bloques TCNT2 Registro (elimina) la comparacin
Coinciden en el siguiente reloj temporizador. Modificacin del contador (TCNT2), mientras que el contador se est ejecutando,
introduce un riesgo de perder un partido de comparacin entre TCNT2 y los Registros OCR2x.

17.11.4

OCR2A - comparacin de salida Registro A


Bit

Lectura / Escritura
Valor inicial

OCR2A [7: 0]

(0xB3)

OCR2A

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

La salida de comparacin registro A contiene un valor de 8 bits que se compara continuamente con el
valor del contador (TCNT2). Un partido se puede utilizar para generar una salida Comparar interrumpir, o para
generar una salida de forma de onda en el pin OC2A.

17.11.5

OCR2B - comparacin de salida Registro B


Bit

Lectura / Escritura
Valor inicial

OCR2B [7: 0]

(0xB4)

OCR2B

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

La salida de comparacin Registro B contiene un valor de 8 bits que se compara continuamente con el
valor del contador (TCNT2). Un partido se puede utilizar para generar una salida Comparar interrumpir, o para
generar una salida de forma de onda en el pin OC2B.

162
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


17.11.6

TIMSK2 - Temporizador / Contador2 interrupcin Mask Register


Bit

(0x70)

OCIE2B

OCIE2A

TOIE2

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

TIMSK2

Bit 2 - OCIE2B: Temporizador / Contador2 salida Comparar Partido B habilitacin de interrupcin


Cuando el bit OCIE2B se escribe en uno y el bit I en el Registro de Estado se establece (uno), la
Timer / Contador2 Comparar Partido B interrupcin est habilitada. Se ejecuta la interrupcin correspondiente
si un partido comparar en el Timer / Contador2 se produce, es decir, cuando el bit OCF2B se encuentra en el Timer / Conter 2 de interrupcin de la bandera de Registro - TIFR2.

Bit 1 - OCIE2A: Temporizador / Contador2 salida Comparar Partido Una habilitacin de interrupcin
Cuando el bit OCIE2A se escribe en uno y el bit I en el Registro de Estado se establece (uno), la
Timer / Contador2 Comparar coinciden con una interrupcin est habilitada. Se ejecuta la interrupcin correspondiente
si un partido comparar en el Timer / Contador2 se produce, es decir, cuando el bit OCF2A se encuentra en el Timer / Conter 2 de interrupcin de la bandera de Registro - TIFR2.

Bit 0 - TOIE2: Temporizador / Contador2 desbordamiento habilitacin de interrupcin


Cuando el bit TOIE2 se escribe en uno y el bit I en el Registro de Estado se establece (uno), la
Timer / Contador2 desbordamiento de interrupcin est habilitada. La interrupcin correspondiente se ejecuta si un
desbordamiento en el Timer / Contador2 se produce, es decir, cuando el bit TOV2 se encuentra en el Timer / Contador2
interrupcin
Bandera Registro - TIFR2.
17.11.7

TIFR2 - Temporizador / Contador2 interrupcin Bandera Registro


Bit

0x17 (0x37)

OCF2B

OCF2A

TOV2

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

TIFR2

Bit 2 - OCF2B: Salida Comparar Bandera 2 B


El bit OCF2B se establece (uno) cuando un comparar partido se produce entre el Timer / Contador2 y la
datos en OCR2B - Salida Compara register2. OCF2B es despejado por hardware al ejecutar
el vector de manejo de interrupciones correspondiente. Alternativamente, OCF2B se borra escribiendo una lgica
uno a la bandera. Cuando el bit I en SREG, OCIE2B (Timer / Contador2 Comparar partido de interrupcin
Habilitar), y OCF2B se establecen (uno), el temporizador / Contador2 Comparar partido interrupcin se ejecuta.

Bit 1 - OCF2A: Salida Comparar Bandera 2 A


El bit OCF2A se establece (uno) cuando un comparar partido se produce entre el Timer / Contador2 y la
datos en OCR2A - Salida Compara register2. OCF2A es despejado por hardware al ejecutar
el vector de manejo de interrupciones correspondiente. Alternativamente, OCF2A se borra escribiendo una lgica
uno a la bandera. Cuando el bit I en SREG, OCIE2A (Timer / Contador2 Comparar partido de interrupcin
Habilitar), y OCF2A se establecen (uno), el temporizador / Contador2 Comparar partido interrupcin se ejecuta.

Bit 0 - TOV2: Temporizador / Contador2 bandera de desbordamiento


El bit TOV2 se establece (uno) cuando se produce un desbordamiento en el Timer / Contador2. TOV2 es despejado por hardware
cermica al ejecutar el vector de manejo de interrupciones correspondiente. Alternativamente, se borra TOV2
escribiendo un uno lgico a la bandera. Cuando el SREG I-bit, TOIE2A (Timer / Contador2 desbordamiento Internacional
rupt Habilitar), y TOV2 se establecen (uno), se ejecuta la interrupcin del Timer / Contador2 desbordamiento. En
Modo PWM, este bit se establece cuando Timer / Contador2 cambia contaje en 0x00.

163
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


17.11.8

ASSR - Estado asncrono Registro


Bit

(0xB6)

EXCLK

AS2

TCN2UB

Lectura / Escritura

R/W

R/W

Valor inicial

OCR2AUB

2
OCR2BUB

1
TCR2AUB

0
TCR2BUB

ASSR

Bit 7 - RES: Reservado poco


Este bit est reservado y siempre lea como cero.
Bit 6 - EXCLK: Entrada de habilitacin de reloj externo
Cuando EXCLK se escribe en uno, y se selecciona de reloj asncrono, la entrada de reloj externa tamponadas
fer est habilitada y un reloj externo se puede introducir en Timer oscilador 1 (TOSC1) pines en lugar de una
32 kHz cristal. Escribiendo a EXCLK se debe hacer antes de que se selecciona la operacin asincrnica.
Tenga en cuenta que el oscilador de cristal slo se ejecuta cuando este bit es cero.

Bit 5 - AS2: asncrono Timer / Contador2


Cuando AS2 est escrito a cero, Timer / Contador2 tiene una velocidad de reloj de la I / O, clkI / O. Cuando AS2 es
escrito a uno, Timer / Contador2 tiene una velocidad de un oscilador de cristal conectado al temporizador oscilacin
lator 1 (TOSC1) pin. Cuando se cambia el valor de AS2, el contenido de TCNT2, OCR2A,
OCR2B, TCCR2A y TCCR2B podran corromperse.

Bit 4 - TCN2UB: Temporizador / Contador2 Actualizacin Ocupado


Cuando Timer / Contador2 opera de forma asncrona y TCNT2 est escrito, esta broca se establece.
Cuando TCNT2 se ha actualizado desde el registro de almacenamiento temporal, este bit se borra por hardware
Ware. Un cero lgico en este bit indica que TCNT2 est listo para ser actualizado con un nuevo valor.
Bit 3 - OCR2AUB: comparacin de salida register2 Actualizacin Ocupado
Cuando Timer / Contador2 opera de forma asncrona y OCR2A est escrito, esta broca se establece.
Cuando OCR2A ha sido actualizado desde el registro de almacenamiento temporal, este bit se borra por hardware
Ware. Un cero lgico en este bit indica que OCR2A est listo para ser actualizado con un nuevo valor.
Bit 2 - OCR2BUB: comparacin de salida register2 Actualizacin Ocupado
Cuando Timer / Contador2 opera de forma asncrona y OCR2B est escrito, esta broca se establece.
Cuando OCR2B ha sido actualizado desde el registro de almacenamiento temporal, este bit se borra por hardware
Ware. Un cero lgico en este bit indica que OCR2B est listo para ser actualizado con un nuevo valor.

Bit 1 - TCR2AUB: Temporizador / Contador control register2 Actualizacin Ocupado


Cuando Timer / Contador2 opera de forma asncrona y TCCR2A est escrito, esta broca se establece.
Cuando TCCR2A se ha actualizado desde el registro de almacenamiento temporal, este bit se borra
hardware. Un cero lgico en este bit indica que TCCR2A est listo para ser actualizado con un nuevo
valor.

Bit 0 - TCR2BUB: Temporizador / Contador control register2 Actualizacin Ocupado


Cuando Timer / Contador2 opera de forma asncrona y TCCR2B est escrito, esta broca se establece.
Cuando TCCR2B se ha actualizado desde el registro de almacenamiento temporal, este bit se borra
hardware. Un cero lgico en este bit indica que TCCR2B est listo para ser actualizado con un nuevo
valor.

Si una escritura se realiza para cualquiera de los cinco Timer / COUNTER2 Registros mientras que su actualizacin es ocupado
bandera
establece, el valor actualizado podra corromperse y causar una interrupcin involuntaria que se produzca.

164
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Los mecanismos para la lectura TCNT2, OCR2A, OCR2B, TCCR2A y TCCR2B son diferentes.
Al leer TCNT2, el valor actual del temporizador se lee. Al leer OCR2A, OCR2B, TCCR2A
y TCCR2B el valor en el registro de almacenamiento temporal se lee.

17.11.9

GTCCR - Temporizador general / Contador Registro de Control


Bit

0x23 (0x43)

TSM

PSRASY

PSRSYNC

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

GTCCR

Bit 1 - PSRASY: Precontador temporizador de restablecimiento / Contador2


Cuando este bit es uno, el prescaler del temporizador / Contador2 se restablecer. Este bit se despachan normalmente
inmediatamente por hardware. Si el bit se escribe cuando Timer / Contador2 est funcionando en asncrono
modo, el bit seguir siendo uno hasta que se restablezca el prescaler. El bit no se borrar por
hardware si el bit de TSM est establecido. Consulte la descripcin de la "Bit 7 - TSM: Temporizador / Contador SynModo sincroni- "en la pgina 143 para una descripcin del modo de temporizador / contador de sincronizacin.

165
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

18. SPI - Serial Peripheral Interface


18.1

Caractersticas

18.2

Full-duplex, de tres hilos sncrono de transferencia de datos


Maestro o Esclavo Operacin
LSB Transferencia Primera o MSB First Data
Siete programables Velocidad de bit
Fin de la transmisin de interrupcin de la bandera
Escribe Collision Proteccin Bandera
La activacin desde el modo inactivo
Double Speed (CK / 2) Modo Maestro SPI

Visin de conjunto
La Interfaz Perifrico Serial (SPI) permite una alta velocidad de transferencia de datos sncrona entre el
ATmega48PA / 88PA / 168PA / 328P y los dispositivos perifricos o entre varios dispositivos AVR.
El USART tambin se puede utilizar en modo maestro SPI, consulte "USART en modo SPI" en la pgina 204. La
PRSPI bit en "Minimizar el consumo de energa" en la pgina 42 debe ser escrito a cero para permitir SPI
mdulo.
Figura 18-1. SPI Diagrama de bloques(1)

DIVISOR
/ 2/4/8/16/32/64/128

SPI2X

SPI2X

Nota:

1. Consulte Figura 1-1 en la pgina 2, y Tabla 13-3 en la pgina 82 para SPI colocacin de los clavos.

166
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


La interconexin entre CPUs maestro y esclavo con SPI se muestra en Figura 18-2 en la pgina
167. El sistema consta de dos registros de desplazamiento, y un generador de reloj maestro. El SPI Maestro
inicia el ciclo de comunicacin cuando se tira bajo el Slave Select pin SS del esclavo deseado.
Master y Slave preparar los datos que se enven en sus respectivos registros de desplazamiento, y el Maestro
genera los pulsos de reloj necesarios en la lnea SCK para intercambiar datos. Los datos siempre se desplaza
del maestro al esclavo en el Master Out - Esclavo en, MOSI, lnea y de esclavo a maestro en el
Maestro In - Slave Out, MISO, lnea. Despus de cada paquete de datos, el Maestro se sincronizar el Esclavo
tirando alto el Esclavo Select, SS, de lnea.

Cuando se configura como un Maestro, la interfaz SPI no tiene control automtico de la lnea SS. Este
debe ser manejado por el software de usuario antes de la comunicacin puede comenzar. Cuando se hace esto, escribiendo una
byte en el registro de datos SPI inicia el generador de reloj SPI, y el hardware cambia el ocho
bits en el Esclavo. Despus de cambiar un byte, el generador de reloj SPI se detiene, estableciendo el final de
Transmisin de la bandera (SPIF). Si el SPI interrupcin Activar bit (SPIE) en el Registro PEACC se establece, un
Se solicita de interrupcin. El Maestro puede continuar cambiando el siguiente byte escribiendo en SPDR, o
sealar el final del paquete tirando alto el Slave Select, lnea SS. El ltimo byte entrante ser
mantenido en el Registro Buffer para su uso posterior.

Cuando se configura como un esclavo, la interfaz SPI permanecer dormir con MISO tri-declar siempre
como el pin SS es impulsado alta. En este estado, el software puede actualizar el contenido de los datos SPI
Registrar, SPDR, pero los datos no se desplazarn a cabo por impulsos de reloj de entrada en el pin SCK
hasta que el pasador SS es conducido bajo. Como un byte ha sido completamente cambiado, el final de la transmisin
Bandera, SPIF se establece. Si el SPI Interrupt Enable bit, SPIE, en el Registro PEACC se establece, una interrupcin
se solicita. El Esclavo podr seguir comercializando nuevos datos a ser enviados al SPDR antes de leer
los datos entrantes. El ltimo byte de entrada se mantendr en el Registro Buffer para su uso posterior.

Figura 18-2. SPI Interconexin maestro-esclavo

SHIFT
HABILITAR

El sistema es sencillo almacenar en el sentido de transmisin y doble memoria intermedia en el recibir direccin
cin. Esto significa que los bytes a transmitir no se puede escribir al Registro SPI datos antes
se completa todo el ciclo de cambio. Cuando la recepcin de datos, sin embargo, un carcter recibido debe ser
leer desde el registro de datos SPI antes del siguiente carcter se ha desplazado por completo en. TRARIO
De otra, el primer byte se pierde.

En el modo SPI esclavo, la lgica de control se muestra la seal de entrada del pin SCK. Para asegurar
correcta toma de muestras de la seal de reloj, los perodos de alta y baja mnimos deben ser:
Perodos Mnima: ms de 2 ciclos de reloj de la CPU.
Los altos perodos: ms de 2 ciclos de reloj de la CPU.

167
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Cuando el SPI est activada, la direccin de los datos de los pines MOSI, MISO, SCK, y SS se anula
de acuerdo a Tabla 18-1 en la pgina 168. Para ms detalles sobre las anulaciones de puerto automtico, consulte
"Funciones puerto alternativo" en la pgina 80.
Tabla 18-1.
Perno

Nota:

SPI Pin Anulaciones(Nota :)


Direccin, Maestro SPI

Direccin, Slave SPI

MOSI

Definido por el usuario

Entrada

MISO

Entrada

Definido por el usuario

SCK

Definido por el usuario

Entrada

SS

Definido por el usuario

Entrada

Ver "Funciones alternativas de Puerto B" en la pgina 82 para una descripcin detallada de cmo definir el
direccin del usuario define pines SPI.

Los siguientes ejemplos de cdigo muestran cmo inicializar el SPI como Maestro y cmo realizar una
transmisin simple. DDR_SPI en los ejemplos se debe reemplazar por la Direccin de datos real
Registrar el control de los pines SPI. DD_MOSI, DD_MISO y DD_SCK deben ser sustituidos por el
los bits de direccin de datos reales para estos pines. Por ejemplo si MOSI se coloca en el pin PB5, reemplace DD_MOSI
con DDB5 y DDR_SPI con DDRB.

168
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Cdigo Asamblea Ejemplo(1)
SPI_MasterInit:
; Establecer MOSI y SCK salida, todos los dems
entrada
r17, (1 << DD_MOSI) | (1 << DD_SCK)
LDI
fuera

DDR_SPI, r17

; Activar SPI, Maestro, ajuste la velocidad del reloj


fck / 16
r17, (1 << SPE) | (1 << MSTR) | (1 <<
LDI
SPR0)
fuera PEACC, r17
enriar
SPI_MasterTransmit:
; Iniciar la transmisin de datos (r16)
fuera

SPDR, r16

Wait_Transmit:
; Espere a que la transmisin completa
r16, SPSR

en

sbrsr16, SPIF
rjmp Wait_Transmit
enriar

Cdigo C Ejemplo(1)
vaco SPI_MasterInit (void)
{
/ * Salida Ajuste MOSI y SCK, todos los dems de entrada *
/
DDR_SPI = (1 << DD_MOSI) | (1 << DD_SCK);

/ * Activar SPI, Maestro, ajuste la velocidad del reloj


fck / 16 * /
PEACC = (1 << SPE) | (1 << MSTR) | (1 <<
SPR0);

vaco SPI_MasterTransmit (char cData)


{
/ * La transmisin de inicio * /
SPDR = cData;
/ * Espera a que la transmisin completa * /
while (! (SPSR Y (1 << SPIF)))
;
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

169
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Los siguientes ejemplos de cdigo muestran cmo inicializar el SPI como un esclavo y cmo realizar una
recepcin simple.
Cdigo Asamblea Ejemplo(1)
SPI_SlaveInit:
; Ajuste de salida MISO, todos los dems
entrada
r17, (1 << DD_MISO)
LDI
fuera

DDR_SPI, r17

; Activar SPI
LDI

r17, (1 << SPE)

fuera

PEACC, r17

enriar
SPI_SlaveReceive:
; Espere a que la recepcin completa
sbis SPSR, SPIF
rjmp SPI_SlaveReceive
; Lee recibi datos y retorno
r16, SPDR

en
enriar

Cdigo C Ejemplo(1)
vaco SPI_SlaveInit (void)
{
/ * Salida Ajuste MISO, todos los dems de
entrada * /
DDR_SPI = (1 << DD_MISO);
/ * Activar SPI * /
PEACC = (1 << SPE);
}

Char SPI_SlaveReceive (void)


{
/ * Espera para la recepcin completa * /
while (! (SPSR Y (1 << SPIF)))
;
/ * Volver Registro de datos * /
retorno SPDR;
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

170
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

18.3

SS Pin Funcionalidad

18.3.1

Modo Esclavo
Cuando el SPI se configura como un esclavo, el pasador Slave Select (SS) es siempre de entrada. Cuando SS es
celebrada bajo, el SPI se activa, y el miso se convierte en una salida si est configurado de modo por el usuario. Todos
otros pines son entradas. Cuando se acciona SS alta, todos los pines son entradas, y el SPI es pasiva, que
significa que no recibir los datos entrantes. Tenga en cuenta que la lgica SPI se restablecer una vez que el pin SS
es excitada alta.

El pin SS es til para la sincronizacin de paquetes / byte para mantener el contador sncrono poco esclavo
con el generador de reloj maestro. Cuando el pin SS es excitada alta, el esclavo SPI har inmediatamente
restablecer el envo y recepcin de lgica, y soltar cualquier dato parcialmente recibidos en el registro de desplazamiento.

18.3.2

Modo Maestro
Cuando el SPI se configura como un Maestro (MSTR en PEACC se establece), el usuario puede determinar el
direccin del pin SS.
Si SS est configurado como una salida, el pasador es un pin de salida general que no afecta a la SPI
sistema. Tpicamente, el pasador estar conduciendo el pin SS del SPI esclavo.
Si SS est configurado como entrada, se debe en alto para garantizar la operacin Maestro SPI. Si el pasador SS
es accionado por el circuito de baja perifrica cuando el SPI est configurado como un Maestro con el pasador de SS
definida como una entrada, el sistema de SPI interpreta esto como otro maestro seleccionando el SPI como una
esclavo, y comenzar a enviar los datos a la misma. Para evitar la contencin de bus, el sistema SPI tiene la siguiente
acciones:

1. El bit MSTR en PEACC se borra y el sistema SPI se convierte en un esclavo. Como resultado de
el SPI convertirse en un esclavo, los pasadores MOSI y SCK convertirse entradas.
2. La bandera SPIF en SPSR se establece, y si la interrupcin SPI est habilitado, y el bit I en SREG es
conjunto, se ejecuta la rutina de interrupcin.
Transmisin SPI As, impulsado por interrumpir cuando se utiliza en modo maestro, y no existe una posibilidad de que SS es conducido bajo, la interrupcin debe comprobar siempre que el bit MSTR todava est establecido. Si el
MSTR poco ha sido aprobado por un esclavo seleccionar, debe ser establecido por el usuario para volver a habilitar SPI Maestro
de modo.

18.4

Modos de Datos
Hay cuatro combinaciones de fase SCK y la polaridad con respecto a los datos de serie, que son
determinado por los bits de control CPHA y CPOL. Los formatos de transferencia de datos SPI se muestran en Figura
18-3 y Figura 18-4 en la pgina 172. Los bits de datos se desplazan hacia fuera y se enclava en el bordes opuestos
la seal SCK, asegurando tiempo suficiente para que las seales de datos se estabilice. Esto se ve claramente por resumen
marizing Tabla 18-3 en la pgina 173 y Tabla 18-4 en la pgina 173, como se hace en Tabla 18-2.

Tabla 18-2.

Modos de SPI

Modo SPI

Condiciones

Leading Edge

Borde de salida

CPOL = 0, CPHA = 0

Muestra (Rising)

Configuracin (cada)

CPOL = 0, CPHA = 1

CPOL = 1, CPHA = 0

CPOL = 1, CPHA = 1

Configuracin (Rising)
Muestra (cada)
Configuracin (cada)

Muestra (cada)
Configuracin (Rising)
Muestra (Rising)

171
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 18-3. SPI formato de transferencia con CPHA = 0
SCK (CPOL = 0)
Modo 0
SCK (CPOL = 1)
modo 2
EJEMPLO I
MOSI / MISO
CAMBIO 0
MOSI PIN
CAMBIO 0
MISO PIN

SS

MSB primero (DORD = 0) MSB


LSB primero (DORD = 1) LSB

Bit 6
Bit 1

Bit 5
Bit 2

Bit 4
Bit 3

Bit 3
Bit 4

Bit 2
Bit 5

Bit 1
Bit 6

LSB
MSB

Figura 18-4. SPI formato de transferencia con CPHA = 1


SCK (CPOL = 0)
el modo 1
SCK (CPOL = 1)
modo 3
EJEMPLO I
MOSI / MISO
CAMBIO 0
MOSI PIN
CAMBIO 0
MISO PIN

SS

MSB primero (DORD = 0)


LSB primero (DORD = 1)

MSB
LSB

Bit 6
Bit 1

Bit 5
Bit 2

Bit 4
Bit 3

Bit 3
Bit 4

Bit 2
Bit 5

Bit 1
Bit 6

LSB
MSB

172
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

18.5

Registro Descripcin

18.5.1

PEACC - SPI Control de Registro


Bit

0x2C (0x4C)

SPIE

SPE

DORD

MSTR

CPOL

CPHA

SPR1

SPR0

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

PEACC

Bit 7 - SPIE: SPI habilitacin de interrupcin


Este bit hace que la interrupcin SPI que se ejecutar si SPIF poco en el Registro SPSR se establece y el si
El bit de habilitacin de interrupcin Global en SREG se establece.

Bit 6 - SPE: SPI Habilitar


Cuando el bit SPE se escribe en uno, el SPI est activada. Este bit debe estar configurado para permitir a cualquier SPI
operaciones.

Bit 5 - DORD: Solicitar datos


Cuando el bit DORD se escribe en uno, el LSB de la palabra de datos se transmite primero.
Cuando el bit DORD est escrito a cero, el MSB de la palabra de datos se transmite primero.
Bit 4 - MSTR: Seleccin Maestro / Esclavo
Este bit selecciona el modo Maestro SPI cuando escribe en uno, y el modo Slave SPI cuando se escribe la lgica
cero. Si SS est configurado como una entrada y es conducido bajo, mientras que MSTR se establece, MSTR se borrar,
y SPIF en SPSR se convertir en conjunto. El usuario tendr entonces que establecer MSTR para volver a habilitar SPI Maestro
modo ter.

Bit 3 - CPOL: Reloj de polaridad


Cuando este bit se escribe en uno, SCK es alto cuando est inactivo. Cuando CPOL se escribe cero, SCK es baja
cuando est inactivo. Referirse a Figura 18-3 y Figura 18-4 para un ejemplo. La funcionalidad es CPOL resumen
mirse a continuacin:

Tabla 18-3.

CPOL Funcionalidad
CPOL

Leading Edge

Borde posterior

Creciente

Que cae

Que cae

Creciente

Bit 2 - CPHA: Reloj Fase


Los ajustes de la poco Fase de reloj (CPHA) determinar si los datos se realiza un muestreo de los principales (primera) o
final (ltima) borde de SCK. Referirse a Figura 18-3 y Figura 18-4 para un ejemplo. El CPOL
funcionalidad se resume a continuacin:

Tabla 18-4.

CPHA Funcionalidad
CPHA

Leading Edge

Borde posterior

Muestra

Preparar

Preparar

Muestra

173
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Los bits 1, 0 - SPR1, SPR0: SPI Reloj de Seleccione 1 y 0
Estos dos bits de control de la tasa de SCK del dispositivo configurado como un Maestro. SPR1 y SPR0 tienen
ningn efecto sobre el esclavo. La relacin entre SCK y la fosc frecuencia del oscilador de reloj es
se muestra en la siguiente tabla:

Tabla 18-5.

18.5.2

Relacin entre SCK y la frecuencia del oscilador

SPI2X

SPR1

SPR0

SCK Frecuencia

Fosc / 4
fosc / 16
fosc / 64
fosc / 128
fosc / 2
Fosc / 8
fosc / 32
fosc / 64

SPSR - Estado SPI Registro


Bit

SPIF

WCOL

SPI2X

Lectura / Escritura

R/W

Valor inicial

0x2D (0x4D)

SPSR

Bit 7 - SPIF: SPI interrupcin Bandera


Cuando una transferencia serie se completa, la Bandera SPIF se establece. Una interrupcin se genera si SPIE en
PEACC se establece y las interrupciones globales estn habilitadas. Si SS es una entrada y es conducido bajo cuando el SPI es
en el modo Maestro, esta tambin fijar la bandera SPIF. SPIF es despejado por hardware al ejecutar el
correspondiente vector de interrupcin. Alternativamente, el bit SPIF se borra por la lectura de la primera
SPI Registro de Estado con el conjunto SPIF, a continuacin, acceder al registro de datos SPI (SPDR).

Bit 6 - WCOL: Escribe Bandera colisin


El bit WCOL se establece si el registro de datos SPI (SPDR) se escribe durante una transferencia de datos. La
WCOL poco (y el bit SPIF) se borran por primera lectura, el Estado SPI Regstrese con juego WCOL,
y luego acceder al registro de datos SPI.

Bit 5..1 - Res: Bits Reservados


Estos bits estn reservados bits en la ATmega48PA / 88PA / 168PA / 328P y siempre lea como
cero.

Bit 0 - SPI2X: Bit Doble SPI velocidad


Cuando este bit se escribe uno lgico la velocidad SPI (SCK Frecuencia) se duplicar cuando el SPI
est en el modo Master (ver Tabla 18-5). Esto significa que el perodo de SCK mnima ser de dos CPU
periodos de reloj. Cuando el SPI se configura como Slave, el SPI slo se garantiza que funcione en fosc / 4
o inferior.

La interfaz SPI en el ATmega48PA / 88PA / 168PA / 328P tambin se utiliza para la memoria del programa
y la descarga de EEPROM o carga. Ver pgina 308 para la programacin de serie y verificacin.

174
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

18.5.3

SPDR - SPI Registro de Datos


Bit

0x2E (0x4E)

MSB

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

LSB

SPDR

Indefinido

El registro de datos SPI es una lectura / escritura registro utilizado para la transferencia de datos entre el Registro Archivo
y Registro del SPI Shift. La escritura en el registro inicia la transmisin de datos. Lectura del registro
ter hace que el registro de desplazamiento Recibir bfer para ser ledo.

175
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

19. USART0
19.1

Caractersticas

19.2

Full Duplex Operacin (Serial Independiente recibir y transmitir Registros)


Asncrono o sncrono Operacin
Maestro o Esclavo Clocked Funcionamiento sncrono
Alta Resolucin Velocidad de transmisin Generador
Soporta marcos de serie con 5, 6, 7, 8 o 9 bits de datos y 1 o 2 bits de parada
Par o impar Generacin Paridad y comprobacin de paridad compatible con el hardware
Deteccin de exceso de datos
Deteccin de errores Framing
Filtrado de ruido Incluye Bit de inicio False Deteccin y Digitales Filtro de paso bajo
Tres interrupciones separados sobre TX completo, datos TX y RX Registro vaca completa
Modo de comunicacin multi-procesador
Double Speed asncrona Modo de comunicacin

Visin de conjunto
El sncrono universal y el receptor de serie asncrono y transmisor (USART) es un
altamente flexible dispositivo de comunicacin serial.
El USART0 tambin se puede utilizar en el modo Maestro SPI, consulte "USART en modo SPI" en la pgina 204.
El bit de energa Reduccin USART, PRUSART0, en "Minimizar el consumo de energa" en la pgina 42
debe estar deshabilitado escribiendo un cero lgico a ella.
Un diagrama de bloques simplificado del transmisor USART se muestra en Figura 19-1 en la pgina 177. UPC
acceso de E / S Registros y pines I / O aparece en negrita.
Las cajas de trazos en el diagrama de bloques se separan las tres partes principales de la USART (lista de los
la parte superior): Generador de reloj, el transmisor y el receptor. Registros de control son compartidos por todas las unidades.
La lgica de generacin de reloj consta de lgica de sincronizacin para la entrada de reloj externo utilizado por
esclavo operacin sncrona, y el generador de velocidad en baudios. El XCKn (Reloj Transferencia) pin es
slo utilizado por el modo de transferencia sncrono. El transmisor consta de un solo buffer de escritura, una
Registro de serie Shift, generador de paridad y la lgica de control para el manejo de diferentes for- marco de serie
esteras. El buffer de escritura permite una transferencia continua de datos sin ningn retardo entre tramas.
El receptor es la parte ms compleja del mdulo USART debido a su recuperacin de reloj y datos
unidades. Las unidades de recuperacin se utilizan para la recepcin de datos asncrono. Adems de la recuperacin
unidades, el receptor incluye una paridad lgica Checker, Control, un registro de desplazamiento y un nivel dos
bfer de recepcin (UDRn). El receptor es compatible con los mismos formatos de trama como el transmisor, y
puede detectar error de trama, Data rebasamiento y errores de paridad.

176
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 19-1. USART Diagrama de bloques(1)

Generador de reloj
UBRRn [H: L]
OSC

VELOCIDAD DE TRANSMISIN GENERADOR

SYNC LGICA

PIN
CONTROL DE

XCKn

Transmisor
TX
CONTROL DE

UDRn (Transmisin)
PARIDAD
GENERADOR

DATOS DE
BUS

PIN
CONTROL DE

TRANSMITIR SHIFT REGISTER

TxDn

Receptor

RECIBIR REGISTRO DE DESPLAZAMIENTO

Nota:

19.3

RX
CONTROL DE

DATOS
RECUPERACIN

PIN
CONTROL DE

RxDn

PARIDAD
INSPECTOR

UDRn (Recibir)

UCSRnA

RELOJ
RECUPERACIN

UCSRnB

UCSRnC

1. Consulte Figura 1-1 en la pgina 2 y Tabla 13-9 en la pgina 88 para USART0 colocacin de los clavos.

Generacin de reloj
La lgica de generacin de reloj genera el reloj base para el transmisor y el receptor. La
USART soporta cuatro modos de funcionamiento: normal reloj asncrono asncrono doble velocidad
sncrona, Domine modo sncrono sncrono y Esclavo. El bit UMSELn en USART
Control y Registro de Estado C (UCSRnC) selecciona entre asncronos y sncronos
operacin. Velocidad doble (modo asncrono solamente) es controlado por el U2Xn encontrado en el
UCSRnA Registro. Al utilizar el modo sincrnico (UMSELn = 1), la Direccin de Registro de Datos
para el pasador XCKn (DDR_XCKn) controla si la fuente de reloj es (modo Master) interna o
(modo esclavo) externo. El pasador XCKn slo se activa cuando se utiliza el modo sincrnico.

177
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 19-2 muestra un diagrama de bloques de la lgica de generacin de reloj.
Figura 19-2. Reloj Generacin Lgica, Diagrama de bloques
UBRRn
U2Xn
foscn
Preescala
Abajo de Venta Libre

UBRRn + 1
/2

/4

/2
0
1
0

OSC

txclk
1
DDR_XCKn

xcki
XCKn
Perno

Sincronizacin
Registrarse

Borde
Detector

0
UMSELn

xcko

DDR_XCKn

UCPOLn

1
rxclk
0

Descripcin de la seal:

19.3.1

txclk

Reloj del transmisor (seal interna).

rxclk

Reloj base Receptor (seal interna).

xcki

Entrada del pin XCK (seal interna). Se utiliza para el funcionamiento esclavo sncrono.

xcko

Salida de reloj a pin XCK (seal interna). Se utiliza para maestro sncrono
operacin.

fosc

Frecuencia pin XTAL (reloj del sistema).

Generacin Interna Reloj - La Tasa Generador Baud


Generacin de reloj interna se utiliza para el asncrona y los modos de maestros sncronos de
operacin. La descripcin en esta seccin se refiere a Figura 19-2.
La velocidad en baudios Registro USART (UBRRn) y el contador regresivo conectado a l funcionan como una
prescaler programable o generador de velocidad de transmisin. La venta libre abajo, corriendo el reloj del sistema
(Fosc), se carga con el valor UBRRn cada vez que el contador ha contado a cero o cuando
el Registro UBRRnL est escrito. Un reloj se genera cada vez que el contador llegue a cero. Este
reloj es la salida de reloj generador de velocidad en baudios (= Fosc / (UBRRn + 1)). El transmisor divide el
salida baudios reloj generador de tasa de un 2, 8 o 16 dependiendo del modo. El generador de salida velocidad en baudios
put es utilizada directamente por las unidades de reloj y recuperacin de datos del Administrador Judicial. Sin embargo, las
unidades de recuperacin
utilizar una mquina de estado que utiliza 2, 8 o 16 estados dependiendo del modo establecido por el estado de la
UMSELn, U2Xn y DDR_XCKn bits.

178
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 19-1 contiene ecuaciones para el clculo de la velocidad de transmisin (en bits por segundo) y para calcuing el valor UBRRn para cada modo de operacin utilizando una fuente de reloj generada internamente.
Tabla 19-1.

Ecuaciones para el clculo de la velocidad en baudios Registro Marco


La ecuacin para el clculo de Baud
Tarifa(1)

Modo de funcionamiento

f OSC

f OSC
-BAUDIO = ------UBRRn = -------------------------------------------------------- - 1
16 (UBRRn +1)
16BAUD

Modo normal asncrono


(U2Xn = 0)

Asncrono de doble velocidad


de modo (U2Xn = 1)

Modo Master Synchronous

Nota:

La ecuacin para el clculo


UBRRn Valor

f OSC

f OSC
-BAUDIO = ------UBRRn = ------------------------------------------------- - 1
8(UBRRn +1)
8BAUD

f OSC
f OSC
BAUDIO = ----------------------------------- UBRRn = ------------------- - 1---2BAUD
2(UBRRn +1)

1. La velocidad de transmisin se define como la velocidad de transferencia en bits por segundo


(bps)

BAUDIO

Velocidad de transmisin (en bits por segundo, bps)

Fosc

Sistema de oscilador de frecuencia de reloj

UBRRn

Contenido del UBRRnH y UBRRnL Registros, (0-4095)

Algunos ejemplos de valores UBRRn para algunas frecuencias de reloj del sistema se encuentran en Tabla 19-9
(Ver pgina 200).
19.3.2

Doble Operacin Velocidad (U2Xn)


La velocidad de transferencia se puede duplicar al establecer el bit U2Xn en UCSRnA. Al activar este bit slo tiene
efectuar para la operacin asincrnica. Establezca este bit a cero cuando se utiliza la operacin sincronizada.
Al activar este bit reducir el divisor del divisor de velocidad de transmisin 16-8, duplicando
la velocidad de transferencia para la comunicacin asncrona. Sin embargo, advierte de que el receptor en este
caso slo utilizan la mitad del nmero de muestras reducidas (16-8) para el muestreo de datos y reloj
recuperacin, y por lo tanto un ajuste de velocidad de transmisin y sistema de reloj ms exacto son necesarios cuando se
se utiliza este modo. Para el transmisor, no hay inconvenientes.

179
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


19.3.3

Reloj externo
Sincronizacin externa se usa por los modos esclavos sncronos de operacin. La descripcin de esta
seccin se refiere a Figura 19-2 para ms detalles.
Entrada de reloj externa del pasador de XCKn es muestreada por un registro de sincronizacin para minimizar la
posibilidad de meta-estabilidad. La salida del registro de sincronizacin debe pasar a travs
un detector de bordes antes de que pueda ser utilizado por el transmisor y el receptor. Este proceso introduces dos CPU perodo de reloj de retardo y por lo tanto la frecuencia de reloj mxima XCKn externa
est limitada por la siguiente ecuacin:

f OSC
f XCK <---------4
Tenga en cuenta que fosc depende de la estabilidad de la fuente de reloj del sistema. Por lo tanto, se recomienda
aadir un poco de margen para evitar la posible prdida de datos debido a las variaciones de frecuencia.
19.3.4

Funcionamiento sncrono de reloj


Cuando se utiliza el modo sncrono (UMSELn = 1), el pasador XCKn se puede utilizar como entrada de reloj
(Esclavo) o salida de reloj (Master). La dependencia entre los bordes de reloj y de muestreo de datos
o cambio de datos es el mismo. El principio bsico es que la entrada de datos (en RxDn) se muestrea a la
opuesto al borde reloj XCKn del borde de la salida de datos (TxDn) se cambia.

Figura 19-3. Temporizacin Sncrono Modo XCKn.


UCPOL = 1

XCK

RxD / TxD
Muestra
UCPOL = 0

XCK

RxD / TxD
Muestra

El UCPOLn mordi UCRSC selecciona qu flanco de reloj XCKn se utiliza para el muestreo de datos y que es
utilizado para el cambio de datos. Como Figura 19-3 muestra, cuando UCPOLn es cero los datos sern cambiadas en
flanco ascendente XCKn y muestreada en flanco descendente XCKn. Si UCPOLn se establece, se cambiarn los datos
en flanco descendente XCKn y muestreada en el flanco ascendente XCKn.

19.4

Formatos de trama
Un marco de serie se define como un carcter de bits de datos con bits de sincronizacin (iniciar y detener
bits) y, opcionalmente, un bit de paridad para la comprobacin de errores. El USART acepta todas las 30 combinaciones de
los siguientes formatos de trama como vlidos:
1 bit de inicio
5, 6, 7, 8, o 9 bits de datos
no, par o impar bit de paridad
1 o 2 bits de parada

180
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Una trama comienza con el bit de inicio seguido por el poco menos datos significativos. Entonces los prximos bits de datos,
hasta un total de nueve, estn teniendo xito, terminando con el bit ms significativo. Si est activado, el bit de paridad
se inserta despus de los bits de datos, antes de que los bits de parada. Cuando se transmite una trama completa, puede
ser seguido directamente por un nuevo marco, o la lnea de comunicacin puede estar configurado para un (alto) estado de reposo.
Figura 19-4 ilustra las posibles combinaciones de los formatos de trama. Los bits dentro de parntesis son
opcional.

Figura 19-4. Formatos de trama


MARCO

(IDLE)

St

[5]

[6]

[7]

[8]

[P]

Sp1 [Sp2]

(St / IDLE)

St

Comience poco, siempre bajo.

(N)

Los bits de datos (0-8).

Bit de paridad. Puede ser par o impar.

Sp

Bit de parada, siempre alta.

IDLE

No hay transferencias en la lnea de comunicacin (RxDn o TxDn). Una lnea libre debe ser
alta.

El formato de trama utilizado por el USART es fijado por el UCSZn2: 0, UPMn1: 0 y los bits en USBSn
UCSRnB y UCSRnC. El receptor y el transmisor utilizan el mismo ajuste. Tenga en cuenta que el cambio
la configuracin de cualquiera de estos bits corromper toda la comunicacin en curso, tanto para el receptor y
Transmisor.
El tamao USART Carcter (UCSZn2: 0) Los bits de seleccionar el nmero de bits de datos en el marco. La
Modo de paridad USART (UPMn1: 0) Los bits de habilitar y configurar el tipo de bit de paridad. La seleccin entre
uno o dos bits de parada se realiza por el USART Bit de parada Seleccione (USBSn) bits. El receptor ignora
el segundo bit de parada. Una FE (error de trama) ser, por tanto, slo pueden detectarse en los casos en que el
primer bit de parada es cero.

19.4.1

Clculo Bit de paridad


El bit de paridad se calcula haciendo un exclusivo-o de todos los bits de datos. Si se utiliza la paridad impar, el
resultado de la exclusiva o se invierte. La relacin entre los bits de bits de paridad y de datos es tan
de la siguiente manera:
P aun =d n -1 ... d3 d2 d1 d0 0
P impar =d n -1 ... d3 d2 d1 d0 1

Peven

Bit de paridad utilizando paridad par

Podd

Bit de paridad utilizando paridad impar

dn

El bit de datos n del carcter

Si se utiliza, el bit de paridad se encuentra entre el ltimo bit de datos y el primer bit de parada de un bastidor de serie.

181
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


19.5

USART inicializacin
El USART tiene que ser inicializado antes de cualquier comunicacin puede tener lugar. El pro- inicializacin
proceso que normalmente consiste en establecer la velocidad de transmisin, el establecimiento de formato de trama y permitiendo
la
Transmisor o el receptor dependiendo del uso. Para interrupcin impulsado operacin USART, la
Global de la bandera de interrupcin debe borrarse (y las interrupciones deshabilitadas a nivel mundial) al hacer la
inicializacin.
Antes de hacer una re-inicializacin con velocidad de transmisin cambiada o formato de cuadro, asegurarse de que no hay
transmisiones en curso durante el perodo se cambian los registros. La bandera TXCn se puede utilizar
para comprobar que el transmisor ha completado todas las transferencias, y la bandera RXC puede ser utilizado para
compruebe que no hay datos ledos en el bfer de recepcin. Tenga en cuenta que la bandera debe ser TXCn
despejado antes de cada transmisin (antes de UDRn est escrito) si se utiliza para este propsito.

Los ejemplos de cdigo de inicializacin USART sencilla muestran un montaje y una funcin C
la que son iguales en la funcionalidad. Los ejemplos asumen operacin asincrnica mediante votacin
(No hay interrupciones habilitadas) y un formato de marco fijo. La velocidad de transmisin se da como un parmetro de la
funcin.
Para el cdigo de la asamblea, se supone que el parmetro de velocidad de transmisin que se almacena en los r17: r16
Registros.

182
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo(1)


USART_Init:
;Establezca la velocidad de
transmisin
fuera UBRRnH, r17
fuera

UBRRnL, r16

;Activar el receptor y el transmisor


LDI

r16, (1 << RXENn) | (1 << TXENn)

fuera

UCSRnB, r16

;Establecer formato de trama: 8Datos basados, poco 2stop


LDI

r16, (1 << USBSn) | (3 << UCSZn0)

fuera

UCSRnC, r16

enriar

Cdigo C Ejemplo(1)
FOSC #define 1843200 // Velocidad del reloj
#define BAUDIOS 9600
#define MYUBRR FOSC / 16 / Baud-1
vaco principal ( vaco )
{
...
USART_Init (MYUBRR)
...
}
vaco USART_Init ( unsigned int ubrr)
{
/ * Set velocidad de transmisin *
/
UBRR0H = (unsigned char) (ubrr >> 8);
UBRR0L = (unsigned char) ubrr;
Activar el receptor y el transmisor * /
UCSR0B = (1 << RXEN0) | (1 << TXEN0);
/ * Establecer formato de trama: 8Datos basados, poco 2stop * /
UCSR0C = (1 << USBS0) | (3 << UCSZ00);
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

Ms rutinas de inicializacin avanzados pueden hacer que incluyen formato de trama como parmetros, disinterrupciones capaces y as sucesivamente. Sin embargo, muchas aplicaciones utilizan una configuracin fija de la transmisin y
registros de control, y para estos tipos de aplicaciones, el cdigo de inicializacin se puede colocar directamente
en la rutina principal, o combinarse con cdigo de inicializacin para otros mdulos de E / S.

19.6

Transmisin de datos - El Transmisor USART


El Transmisor USART se habilita estableciendo la Transmitir Habilitar (TXEN) poco en el UCSRnB
Registrar. Cuando el transmisor se activa, la operacin puerto normal del pin TxDn es overridden por el USART y dada la funcin que la produccin en serie del transmisor. La velocidad de transmisin,
modo de funcionamiento y formato de trama debe configurarse una vez antes de hacer cualquier tipo de transmisiones. Si sin-

183
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


se utiliza la operacin sncrona, el reloj de la pin XCKn se anular y se utiliza como
reloj de transmisin.
19.6.1

El envo de Marcos con Bit 5-8 Datos


Una transmisin de datos se inicia mediante la carga de la memoria intermedia de transmisin con los datos a transmitir. La
CPU puede cargar el buffer de transmisin por escrito a la ubicacin UDRn E / S. Los datos almacenados en la
Bfer de transmisin ser movido al registro de desplazamiento cuando el registro de desplazamiento est listo para enviar un nuevo
marco. El registro de desplazamiento se carga con nuevos datos si se encuentra en estado de reposo (sin transmisin continua) o
inmediatamente despus se transmite el ltimo bit de parada de la trama anterior. Cuando el registro de desplazamiento es
cargado con nuevos datos, se transferir un fotograma completo a la tasa propuesta por el Registro Baud,
U2Xn bits o por XCKn dependiendo del modo de operacin.

Los siguientes ejemplos de cdigo muestran una funcin de transmisin USART simple basado en el sondeo de la
Registro de datos vaca (UDREn) Bandera. Cuando el uso de marcos con menos de ocho bits, la ms sigbits de significa- por escrito a la UDRn se ignoran. El USART tiene que ser inicializado antes de la funcin
puede ser utilizado. Para el cdigo de la asamblea, los datos a enviar se supone que se almacena en el registro
R16

Cdigo Asamblea Ejemplo(1)


USART_Transmit:
;Espere buffer de transmisin vaca
sbis UCSRnA, UDREn
rjmp USART_Transmit
;Ponga datos (R16) en el bfer, enva los datos
fuera

UDRn, r16

enriar

Cdigo C Ejemplo(1)
vaco USART_Transmit ( unsigned char datos)
{
/ * Espere buffer de transmisin vaca * /
mientras (! (UCSRnA y (1 << UDREn)))
;
/ * Poner los datos en el bfer, enva los datos * /
UDRn = datos;
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

La funcin simplemente espera a que el buffer de transmisin est vaco marcando la bandera UDREn,
antes de cargarlo con los nuevos datos a transmitir. Si se utiliza el registro de datos de interrupcin vaco,
la rutina de interrupcin escribe los datos en el buffer.

19.6.2

El envo de Marcos con el bit 9 de Datos


Si se utilizan caracteres de 9 bits (UCSZn = 7), el noveno bit debe estar escrito en el bit TXB8 en
UCSRnB antes del byte bajo del personaje se escribe en UDRn. Los siguientes ejemplos de cdigo
mostrar una funcin de transmisin que se encarga de caracteres 9 bits. Para el cdigo de la asamblea, que los datos sean
enviado se supone que ser almacenados en los registros R17: R16.

184
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo(1) (2)


USART_Transmit:
;Espere buffer de transmisin vaca
sbis UCSRnA, UDREn
rjmp USART_Transmit
;Copie noveno bit de r17 a TXB8
cbi

UCSRnB, TXB8

SBRC r17,0
sbi

UCSRnB, TXB8

;Ponga datos LSB (R16) en bfer, enva los datos


fuera

UDRn, r16

enriar

Cdigo C Ejemplo(1) (2)


vaco USART_Transmit ( unsigned int datos)
{
/ * Espere buffer de transmisin vaca * /
mientras (! (UCSRnA y (1 << UDREn))))
;
/ * Copie novena poco a TXB8 * /
UCSRnB & = ~ (1 << TXB8);
si (datos y 0x0100)
UCSRnB | = (1 << TXB8);
/ * Poner los datos en el bfer, enva los datos * /
UDRn = datos;
}
Notas:

1. Estas funciones de transmisin estn escritos para ser funciones generales. Ellos pueden ser optimizados si el contiendas de los UCSRnB es esttica. Por ejemplo, slo se utiliza el bit TXB8 del Registro UCSRnB
despus de la inicializacin.
2. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

El noveno bit se puede utilizar para indicar una trama de direccin cuando se utilizan mltiples procesador de comunicacin
modo de catin o para el manejo de sincronizacin como, por ejemplo otro protocolo.
19.6.3

Banderas del transmisor y alarmas


El Transmisor USART tiene dos banderas que indican su estado: USART Datos Registro vaca
(UDREn) y Transmitir completo (TXCn). Ambas banderas se pueden utilizar para generar interrupciones.
The Empty (UDREn) Bandera de Datos Registro indica si el buffer de transmisin est listo para recibir
nuevos datos. Este bit se establece cuando el buffer de transmisin est vaco, y se aclar cuando el buffer de transmisin
contiene datos a transmitir que todava no se han movido al registro de desplazamiento. Para compatibilidad
lidad con dispositivos futuros, siempre escribir este bit a cero al escribir el Registro UCSRnA.
Cuando el registro de datos vaca de habilitacin de interrupcin (UDRIEn) poco en UCSRnB se escribe en uno, el
USART registro de datos vaca de interrupcin se ejecuta mientras se establece UDREn (siempre que
interrupciones globales estn habilitadas). UDREn se borra escribiendo UDRn. Cuando los datos de interrupcin impulsada
se utiliza la transmisin, el registro de datos rutina de interrupcin vaco debe o escribir nuevos datos a

185
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


UDRn para despejar UDREn o desactivar el registro de datos de interrupcin vaco, de lo contrario una nueva
interrupcin se producir una vez que acaba la rutina de interrupcin.
The Complete (TXCn) poco Bandera de transmisin se establece en uno cuando todo el marco en el Cambio de Transmisin
Registro se ha desplazado hacia fuera y no hay nuevos datos actualmente presentes en el buffer de transmisin.
El bit de bandera TXCn se borra automticamente cuando se ejecuta una interrupcin completa de la transmisin, o bien
se puede borrar escribiendo un uno a su ubicacin poco. La bandera TXCn es til en nicacin semidplex
las interfaces de comu- (como el estndar RS-485), donde una aplicacin de transmisin debe entrar
modo de recepcin y liberar el bus de comunicacin inmediatamente despus de completar la transmisin.

Cuando la transmisin Compite habilitacin de interrupcin (TXCIEn) poco en UCSRnB se establece, el USART
Transmitir completa de interrupcin se ejecutar cuando la bandera TXCn cuaja (siempre que
interrupciones globales estn habilitadas). Cuando se utiliza la interrupcin de la transmisin completa, la interrupcin Handling rutina no tiene que borrar la bandera TXCn, esto se hace automticamente cuando la interrupcin
se ejecuta.

19.6.4

Generador de paridad
El generador de paridad calcula el bit de paridad para los datos de trama en serie. Cuando el bit de paridad est habilitada
(UPMn1 = 1), la lgica de control del transmisor inserta el bit de paridad entre el ltimo bit de datos y la
primer bit de parada de la trama que se enva.

19.6.5

La desactivacin del transmisor


La desactivacin del transmisor (ajuste de la TXEN a cero) no entrar en vigor hasta ongocin ya la espera de las transmisiones se han completado, es decir, cuando la transmisin de registro en y
Transmitir Buffer Registro no contienen los datos a transmitir. Cuando est desactivado, el transmisor
ya no anular el pin TxDn.

19.7

Recepcin de datos - El receptor USART


El receptor USART se habilita escribiendo la habilitacin (RXENn) poco Recibe en el
UCSRnB Registrarse para uno. Cuando el receptor est activado, la operacin pin normal del RxDn
pin es anulado por el USART y dada la funcin como entrada serie del receptor. El baudios
tasa, modo de operacin y el formato de trama debe configurarse una vez antes de cualquier recepcin de serie puede
por hacer. Si se utiliza el funcionamiento sncrono, el reloj en el pasador XCKn ser utilizado como la transferencia de
reloj.

19.7.1

Recepcin de Marcos con 5-8 Bits de datos


El receptor inicia la recepcin de datos cuando se detecta un bit de inicio vlida. Cada bit que sigue al inicio
poco se tomaron muestras a la velocidad de transmisin o XCKn reloj, y se movi en el Registro Recibe Shift
hasta que se recibe el primer bit de parada de una trama. Un segundo bit de parada ser ignorado por el receptor.
Cuando se recibe el primer bit de parada, es decir, un marco de serie completo est presente en el Shift Recibir
Regstrese, el contenido del registro de desplazamiento se movern en el bfer de recepcin. El recibir
tampn se puede leer mediante la lectura de la ubicacin UDRn I / O.

El siguiente ejemplo de cdigo muestra un sencillo USART funcin de recepcin basado en el sondeo de la
Recibe completo (RXCn) Bandera. Cuando el uso de marcos con menos de ocho bits ms significativos
bits de los datos ledos de la UDRn estarn enmascarados a cero. El USART tiene que ser inicializado
antes de la funcin se puede utilizar.

186
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo(1)


USART_Receive:
;Espere a que los datos que se reciban
sbis UCSRnA, RXCn
rjmp USART_Receive
;Obtener y devolver los datos recibidos de bfer
en

r16, UDRn

enriar

Cdigo C Ejemplo(1)
unsigned char USART_Receive ( vaco )
{
/ * Espere a que los datos que se reciban * /
mientras (! (UCSRnA y (1 << RXCn)))
;
/ * Obtener y devolver los datos recibidos de bfer * /
retorno UDRn;
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.


Para E / S Registros situado en mapa ampliado de E / S, "IN", "OUT", "SBIS", "SBIC", "CBI", y "OSE"
instrucciones deben ser reemplazadas con las instrucciones que permiten el acceso a la E / S extendida. Tpicamente
"LDS" y "STS" en combinacin con "SBRS", "SBRC", "SBR", y "CBR".

La funcin simplemente espera a que los datos estn presentes en el bfer de recepcin marcando la bandera RXCn,
antes de leer el bfer y devolver el valor.
19.7.2

Recepcin de Marcos con 9 bits de datos


Si se utilizan caracteres de 9 bits (UCSZn = 7) el noveno bit debe ser leda a partir del bit en RXB8n
UCSRnB antes leer los bits bajos de la UDRn. Esta regla se aplica a los pantanos, y ODRn
Estado Upen Banderas tambin. Leer estado de UCSRnA, a continuacin, los datos de UDRn. La lectura de la
Ubicacin UDRn I / O va a cambiar el estado de la FIFO bfer de recepcin y en consecuencia la TXB8n,
FEn, ODRn y Upen bits, que todo se almacenan en el FIFO, cambiarn.

El ejemplo de cdigo siguiente se muestra un sencillo USART funcin que maneja tanto nueve bits recibir
personajes y los bits de estado.

187
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Cdigo Asamblea Ejemplo(1)
USART_Receive:
;Espere a que los datos que se reciban
sbis UCSRnA, RXCn
rjmp USART_Receive
;Obtener el estado y noveno bit, entonces los datos de bfer
en

r18, UCSRnA

en

r17, UCSRnB

en

r16, UDRn

;Si el error, devuelve -1


andi r18, (1 << FEn) | (1 << ODRn) | (1 << Upen)
BREQ USART_ReceiveNoError
LDI

r17, ALTA (-1)

LDI

r16, LOW (-1)

USART_ReceiveNoError:
;Se filtra la novena poco, y luego volver
LSR

r17

andi r17, 0x01


enriar

Cdigo C Ejemplo(1)
unsigned int USART_Receive ( vaco )
{
unsigned char estado, Resh, RESL;
/ * Espere a que los datos que se reciban * /
mientras (! (UCSRnA y (1 << RXCn)))
;
/ * Obtener el estado y noveno bit, entonces los datos * /
/ * de tampn * /
estado = UCSRnA;
Resh = UCSRnB;
RESL = UDRn;
/ * Si el error, devuelve -1 * /
si (Estado y (1 << FEn) | (1 << ODRn) | (1 << Upen))
retorno -1;
/ * Se filtra la novena poco, y luego volver * /
Resh = (Resh >> 1) y 0x01;
retorno ((Resh << 8) | RESL);
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.


Para E / S Registros situado en mapa ampliado de E / S, "IN", "OUT", "SBIS", "SBIC", "CBI", y "OSE"
instrucciones deben ser reemplazadas con las instrucciones que permiten el acceso a la E / S extendida. Tpicamente
"LDS" y "STS" en combinacin con "SBRS", "SBRC", "SBR", y "CBR".

El ejemplo funcin de recepcin lee todas las E / S de registros en el Registro de archivos antes de cualquier computacin se hace. Esto da una ptima utilizacin del buffer de recepcin ya que la lectura de almacn intermedio voluntad
ser libre de aceptar nuevos datos lo antes posible.

188
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


19.7.3

Recibe Compete bandera y de alarma


El receptor USART tiene una bandera que indica el estado del receptor.
The Complete Recibir (RXCn) Flag indica si hay datos ledos presentes en el tamponadas recibir
fer. Esta bandera es uno cuando existen datos ledos en el bfer de recepcin, y cero cuando la reciben
buffer est vaco (es decir, no contiene ningn dato no ledos). Si el receptor se desactiva (RXENn = 0),
el bfer de recepcin se sonroj y en consecuencia el poco RXCn se convertir en cero.
Cuando la recepcin completa habilitacin de interrupcin (RXCIEn) en UCSRnB se establece, la USART Recibir
Interrupcin completa se ejecutar siempre que se establezca el indicador RXCn (siempre que inter- mundial
Rupts estn habilitadas). Cuando se utiliza la recepcin de datos por medio de interruptores, el recibir rutina completa
debe leer los datos recibidos de UDRn con el fin de borrar la bandera RXCn, de lo contrario una nueva interfaz
rupt ocurrir una vez acaba la rutina de interrupcin.

19.7.4

Receptor Indicadores de error


El receptor USART tiene tres indicadores de error: error de trama (FEN), Data Overrun (ODRn) y
Error de paridad (Upen). Todo se puede acceder mediante la lectura UCSRnA. Comn para los indicadores de error es
que se encuentran en el bfer de recepcin junto con el marco para el que indican la
estado de error. Debido al tampn de los indicadores de error, el UCSRnA debe leerse antes de la
bfer de recepcin (UDRn), ya que la lectura de la ubicacin UDRn I / O cambia la ubicacin bfer de lectura.
Otra igualdad para los indicadores de error es que no pueden ser alterados por el software que hace una escritura en
la localizacin de bandera. Sin embargo, todas las banderas deben ser puestos a cero cuando el UCSRnA est escrito para arriba
compatibilidad de futuras implementaciones USART. Ninguno de los indicadores de error puede generar interrupciones.

El error de trama (FEN) bandera indica el estado de la primera bit de parada de la siguiente trama legible
almacenada en el bfer de recepcin. El Flag Fen es cero cuando el bit de parada se ha ledo correctamente (como uno),
y la bandera FEn ser uno cuando el bit de parada era incorrecta (cero). Esta bandera se puede utilizar para
deteccin de condiciones fuera de sincrona, detectando condiciones de quiebre y manejo de protocolo. El FEn
Flag no se ve afectada por el ajuste del bit USBSn en UCSRnC ya que el receptor ignora todo,
a excepcin de la primera, los bits de parada. Para la compatibilidad con dispositivos futuros, siempre establecer este bit a cero
al escribir en UCSRnA.

El rebasamiento de Datos (ODRn) Bandera indica la prdida de datos debido a una condicin de bfer lleno receptor. La
Datos rebasamiento se produce cuando el bfer de recepcin est lleno (dos caracteres), es un nuevo personaje esperacin en el Cambio Recibe Registro, y se detecta un nuevo bit de inicio. Si la bandera ODRn se establece all
fue uno o marco ms serial perdido entre el marco de la ltima lectura de UDRn, y el siguiente cuadro
leer UDRn. Para la compatibilidad con dispositivos futuros, siempre escribir este bit a cero al escribir
a UCSRnA. La bandera ODRn se borra cuando la trama recibida fue trasladado con xito de
el registro de desplazamiento en el bfer de recepcin.

El error de paridad (Upen) Bandera indica que el siguiente fotograma en el bfer de recepcin tena una paridad
Error cuando se reciben. Si Comprobacin de paridad no est activado el bit Upen siempre se leer cero. Para
compatibilidad con dispositivos futuros, siempre se establece este bit a cero cuando se escribe a UCSRnA. Para obtener ms
detalles ver "Clculo Bit de paridad" en la pgina 181 y "La paridad ortogrfico" en la pgina 189.

19.7.5

Paridad del inspector


La paridad Checker es activa cuando se ajusta el modo de paridad alta USART (UPMn1) bits. Tipo de peo
dad Dale a realizar (par o impar) se selecciona por el bit UPMn0. Cuando se activa, la paridad
Comprobador calcula la paridad de los bits de datos en tramas entrantes y compara el resultado con
el bit de paridad de la trama de serie. El resultado de la verificacin se almacena en el bfer de recepcin junto
con los datos recibidos y los bits de parada. El Error de paridad (Upen) Bandera puede ser ledo por el software
para comprobar si la trama tena un error de paridad.

189
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


El bit Upen se establecer si el siguiente carcter que se puede leer desde el bfer de recepcin tena una paridad
Error cuando recibi y la comprobacin de la paridad fue habilitado en ese punto (UPMn1 = 1). Este bit es
vlida hasta el bfer de recepcin (UDRn) se lee.

19.7.6

La desactivacin del receptor


En contraste con el transmisor, la desactivacin del receptor ser inmediata. Los datos de curso
Por lo tanto, recepciones se perder. Cuando se desactiva (es decir, el RXENn se pone a cero) el Sndico
ya no reemplazar la funcin normal del pin del puerto RxDn. El receptor buffer FIFO ser
sonroj cuando el receptor est desactivado. Se perdern los datos que quedan en la memoria intermedia

19.7.7

Lavado del bfer de recepcin


El tampn receptor FIFO ser bochornos cuando el receptor est desactivado, es decir, el bfer ser
vaciado de su contenido. Se perdern los datos ledos. Si la memoria intermedia tiene que ser vaciados durante el funcionamiento normal
operacin, debido a, por ejemplo, una condicin de error, leer la ubicacin UDRn I / O hasta que la bandera RXCn
se borra. El ejemplo de cdigo siguiente se muestra cmo vaciar el bfer de recepcin.

Cdigo Asamblea Ejemplo(1)


USART_Flush:
sbis UCSRnA, RXCn
enriar
en

r16, UDRn

rjmp USART_Flush

Cdigo C Ejemplo(1)
vaco USART_Flush ( vaco )
{
unsigned char dummy;
mientras (UCSRnA y (1 << RXCn)) maniqu = UDRn;
}
Nota:

19.8

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.


Para E / S Registros situado en mapa ampliado de E / S, "IN", "OUT", "SBIS", "SBIC", "CBI", y "OSE"
instrucciones deben ser reemplazadas con las instrucciones que permiten el acceso a la E / S extendida. Tpicamente
"LDS" y "STS" en combinacin con "SBRS", "SBRC", "SBR", y "CBR".

Asncrona de recepcin de datos


El USART incluye una recuperacin de reloj y una unidad de recuperacin de datos para el manejo de datos asincrnica
recepcin. La lgica de recuperacin de reloj se utiliza para la sincronizacin de la velocidad de transmisin generada
internamente
reloj para los marcos de serie asncronos de entrada en el pin RxDn. La lgica muestras de recuperacin de datos
ples y filtros de paso bajo cada bit entrante, lo que mejora la inmunidad al ruido de la
Receptor. La gama operativa de recepcin asncrona depende de la precisin de la interbaudios nales reloj tasa, la tasa de las tramas entrantes, y el tamao del marco en nmero de bits.

19.8.1

Asncrono recuperacin de reloj


La lgica de recuperacin de reloj se sincroniza el reloj interno a los marcos de serie entrantes. Figura 19-5
ilustra el proceso de muestreo del bit de inicio de una trama entrante. La frecuencia de muestreo es de 16 veces
la velocidad de transmisin para el modo Normal, y ocho veces la velocidad de transmisin para el modo de doble velocidad. La hormona
hori- flechas ilustran la variacin de sincronizacin debido al proceso de muestreo. Tenga en cuenta la
variacin de tiempo mayor cuando utilice el modo Double Speed (U2Xn = 1) de operacin. Muestras
denota cero son muestras realizadas cuando la lnea RxDn est inactivo (es decir, ninguna actividad de comunicacin).

190
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 19-5. Iniciar Muestreo Bit
RxD

IDLE

INICIO

BIT 0

Muestra
(U2X = 0)

10

11

12

13

14

15

16

Muestra
(U2X = 1)

Cuando la lgica de recuperacin de reloj detecta un alto (en reposo) a la baja de transicin (iniciar) en la lnea RxDn, la
iniciar la secuencia de deteccin de bits se inicia. Deje que la muestra 1 denota la primera muestra de cero como se muestra en
la figura. La lgica de recuperacin de reloj a continuacin, utiliza muestras 8, 9 y 10 para el modo Normal, y muestras
ples 4, 5 y 6 para el modo Double Speed (indicado con el nmero de muestras dentro de las cajas en la
figura), para decidir si se recibe un bit de inicio vlida. Si dos o ms de estas tres muestras tienen lgica
niveles altos (la mayora gana), el bit de inicio es rechazado como un pico de ruido y el receptor empieza
buscando el siguiente mayor a menor a la transicin. Sin embargo, si se detecta un bit de inicio vlida, el reloj peracin
lgica ery est sincronizado y la recuperacin de datos puede comenzar. El proceso de sincronizacin es
repetirse para cada bit de inicio.

19.8.2

Asncrono Data Recovery


Cuando el reloj del receptor est sincronizado con el bit de inicio, la recuperacin de datos puede comenzar. Los datos
unidad de recuperacin usa una mquina de estados que cuenta con 16 estados para cada bit en modo Normal y ocho
establece para cada bit en modo de doble velocidad. Figura 19-6 muestra el muestreo de los bits de datos y
el bit de paridad. Cada una de las muestras se da un nmero que es igual al estado de la recuperacin
unidad.

Figura 19-6. El muestreo de los datos y el bit de paridad


RxD

BIT n

Muestra
(U2X = 0)

10

11

12

13

14

15

16

Muestra
(U2X = 1)

La decisin del nivel lgico del bit recibido se determina haciendo una votacin por mayora de la lgica
valor a las tres muestras en el centro del bit recibido. Las muestras de centros se enfatizan
sobre la figura por tener el nmero de muestra dentro de las cajas. El proceso de votacin por mayora se hace como
sigue: Si dos o las tres muestras tienen niveles altos, el bit recibido se ha registrado para ser un 1 lgico.
Si dos o las tres muestras tienen niveles bajos, el bit recibido se ha registrado para ser una lgica 0. Este
proceso de votacin por mayora acta como un filtro de paso bajo para la seal de entrada en el pin RxDn. La
proceso de recuperacin se repite entonces hasta que se recibe una trama completa. Incluyendo el primer bit de parada.
Tenga en cuenta que el receptor slo utiliza el primer bit de parada de una trama.

Figura 19-7 en la pgina 192 muestra el muestreo del bit de parada y el inicio ms temprano posible
del bit de inicio de la siguiente trama.

191
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 19-7. Deje de muestreo Bit Bit y Toma de Muestras Siguiente Inicio
RxD

PARADA 1

(A)

(B)

(C)

Muestra
(U2X = 0)

10

0/1

0/1

0/1

Muestra
(U2X = 1)

0/1

La misma votacin por mayora se hace para el bit de parada como se hace para los dems bits de la trama. Si la parada
bit est registrado para tener un valor lgico 0, el error de trama (FEN) Bandera se establecer.
Un nuevo mayor a menor transicin que indica el bit de inicio de un nuevo marco puede venir a la derecha despus de la ltima de
los bits utilizados para la votacin por mayora. Para el modo de velocidad normal, la primera muestra bajo nivel puede estar en
punto marcado (A) en Figura 19-7. Para el modo Double Speed el primer nivel bajo se debe retrasar el
(B). (C) marca un bit de paro de larga duracin. La deteccin temprana bit de inicio influye en el funcionamiento
alcance del receptor.

19.8.3

Rango Operacional asncrono


La gama operativa del receptor depende de la falta de coincidencia entre el bit recibido
tasa y la velocidad de transmisin generado internamente. Si el transmisor est enviando tramas en demasiado rpido o demasiado
velocidades de bits lento, o la velocidad de transmisin generada internamente del receptor no tiene un similar (vase
Tabla 19-2 en la pgina 193) frecuencia base, el receptor no podr sincronizar la
tramas al bit de inicio.

Las siguientes ecuaciones pueden usarse para calcular la relacin de la velocidad de datos de entrada e interna
velocidad de transmisin receptor.

( D+1) S
( D+2) S
R lento = -------------------------------------R rpido = -------------------------------------(D+1) S +S M
S-1+D S+SF
Suma de tamao de la fuente y el tamao de paridad (D = 5 a 10 bit)

Las muestras por bit. S = 16 para el modo de velocidad normal y S = 8 for Speed Doble
de modo.

SF

Nmero de la muestra utilizada para la primera votacin por mayora. SF = 8 para velocidad normal y SF = 4
para el modo de doble velocidad.

SM

Nmero de muestra Medio utilizado para la votacin por mayora. SM = 9 para la velocidad normal y
SM = 5 para el modo de doble velocidad.

Rslow

es la relacin de la velocidad de datos de entrada ms lento que pueda ser aceptada en relacin con el
velocidad de transmisin receptor. Rfast es la relacin de la velocidad de datos de entrada que puede ser ms
rpido
aceptado en relacin con la velocidad en baudios receptor.

Tabla 19-2 en la pgina 193 y Tabla 19-3 en la pgina 193 listar el error velocidad mxima en baudios receptor
que se puede tolerar. Tenga en cuenta que el modo Normal velocidad tiene mayor tolerancia de la velocidad de transmisin
variaciones.

192
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 19-2.

Recomendado Error mximo Receptor Velocidad de transmisin para el modo de velocidad normal
(U2Xn = 0)

D
# (Datos + Bit de paridad) Rslow (%)

Rfast (%)

Error Max Total (%)

Recomendada Max
Error Receptor (%)

93.20

106.67

+ 6.67 / -6,8

3,0

94.12

105.79

+ 5.79 / -5.88

2.5

94.81

105.11

+ 5.11 / -5.19

2,0

95.36

104.58

+ 4.58 / -4.54

2,0

95.81

104.14

+ 4.14 / -4.19

1,5

10

96.17

103.78

+ 3.78 / -3.83

1,5

Tabla 19-3.

Recomendado Error mximo Receptor Velocidad de transmisin para el modo Double Speed
(U2Xn = 1)

D
# (Datos + Bit de paridad) Rslow (%)

Rfast (%)

Error Max Total (%)

Recomendada Max
Error Receptor (%)

94.12

105.66

+ 5.66 / -5.88

2.5

94.92

104.92

+ 4.92 / -5.08

2,0

95.52

104,35

+ 4.35 / -4.48

1,5

96.00

103.90

+ 3.90 / -4.00

1,5

96.39

103.53

+ 3.53 / -3.61

1,5

10

96.70

103.23

+ 3.23 / -3.30

1,0

Las recomendaciones del error mximo la velocidad de transmisin del receptor se hizo bajo el supuesto de
cin de que el receptor y el transmisor se divide por igual el error total mximo.
Hay dos fuentes posibles para el error receptores velocidad en baudios. Reloj del sistema del receptor
(XTAL) siempre tendrn cierta inestabilidad menor sobre el rango de tensin de alimentacin y la temperatura
gama tura. Cuando se utiliza un cristal para generar el reloj del sistema, esto rara vez es un problema, pero para una
resonador el reloj del sistema puede diferir ms de 2%, dependiendo de la tolerancia resonadores. La
segunda fuente para el error es ms controlable. El generador de velocidad de transmisin no siempre puede hacer una
divisin exacta de la frecuencia del sistema para obtener la velocidad de transmisin quera. En este caso un valor UBRRn
que da un bajo error aceptable se puede utilizar si es posible.

19.9

Modo de comunicacin multi-procesador


Ajuste del modo de comunicacin multi-procesador (MPCMn) poco en UCSRnA permite un filtrado
funcin de tramas entrantes recibidos por el receptor USART. Las tramas que no contienen
informacin de direccin se ignora y no se pone en el bfer de recepcin. Esto reduce efectivamente
el nmero de tramas entrantes que tiene que ser manejado por la CPU, en un sistema con mltiples
MCUs que se comunican a travs del mismo bus serie. El transmisor no se ve afectado por el MPCMn
ajuste, pero tiene que ser utilizado de manera diferente cuando se trata de una parte de un sistema que utiliza la Multi-procesador
Modo de comunicacin.

Si el receptor est configurado para recibir tramas que contienen de 5 a 8 bits de datos, entonces el primer bit de parada incates si la trama contiene informacin de datos o la direccin. Si el receptor est configurado para marcos con

193
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


nueve bits de datos, entonces el noveno bit (RXB8n) se utiliza para la identificacin de direcciones y de datos marcos. Cundo
el bit de tipo de trama (la primera parada o el noveno bit) es una, la trama contiene una direccin. Cuando el
tipo de trama de bit es cero, la trama es una trama de datos.
El modo de comunicacin multi-procesador permite varias MCUs esclavo para recibir datos de un
MCU. Esto se hace por primera decodificacin de una trama de direccin para saber qu ha sido MCU
abordarse. Si un esclavo particular, MCU se ha abordado, recibir los siguientes datos
marcos de forma normal, mientras que el otro MCU esclavo ignorar las tramas recibidas hasta otro
se recibe trama de direccin.

19.9.1

Utilizando MPCMn
Para una MCU para actuar como un maestro MCU, se puede utilizar un formato de trama de caracteres 9 bits (UCSZn = 7). La
noveno bit (TXB8n) se debe establecer cuando una trama de direccin (TXB8n = 1) o borra cuando una trama de datos
(TXB = 0) se est transmitiendo. El MCU esclavo debe en este caso ser configurado para utilizar un carcter de 9 bits
formato de trama.
El siguiente procedimiento se debe utilizar para el intercambio de datos en Comunicacin Multi-procesador
modo:
1. Todo esclavo MCUs estn en modo de comunicacin multi-procesador (MPCMn en
UCSRnA est establecido).
2. El Maestro MCU enva una trama de direccin y todos los esclavos recibir y leer este marco. En
la MCU Esclavo, la Bandera RXCn en UCSRnA se establecern de forma normal.
3. Cada MCU esclavo lee el Registro UDRn y determina si se ha seleccionado. Si es as,
se borra el bit de MPCMn en UCSRnA, de lo contrario espera al siguiente byte de direccin y
mantiene el ajuste MPCMn.
4. El dirigida MCU recibir todas las tramas de datos hasta que se recibe una nueva trama de direccin.
El otro esclavo MCUs, que todava tienen el conjunto de bits MPCMn, ignorar las tramas de datos.
5. Cuando la ltima trama de datos es recibido por el MCU abordado, los conjuntos MCU abordados
el bit y espera MPCMn de un nuevo bloque de direccin de maestro. El proceso entonces
repite de 2.
El uso de cualquiera de los formatos de trama de caracteres de 5 a 8 bits es posible, pero poco prctico ya que el
El receptor debe cambiar entre el uso de N y N + 1 formatos de trama de caracteres. Esto hace completo
funcionamiento dplex difcil ya que el transmisor y el receptor utiliza el tamao de ajuste mismo carcter
ting. Si se utilizan tramas de caracteres de 5 a 8 bits, el transmisor debe estar configurado para utilizar dos bits de parada
(USBSn = 1) desde el primer bit de parada se utiliza para indicar el tipo de trama.

No utilice instrucciones Read-modificacin-escritura (OSE y CBI) para activar o desactivar el bit MPCMn. La
Acciones bits MPCMn la misma E / S de localizacin como la bandera TXCn y esto podra ser accidentalmente
despejado al utilizar instrucciones SBI o ICC.

194
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

19.10 Registro Descripcin


19.10.1

UDRn - USART E / S de datos en el registro n


Bit

Lectura / Escritura
Valor inicial

RXB [7: 0]

UDRn (Leer)

TXB [7: 0]

UDRn (Write)

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

La transmisin de datos Buffer Register USART y USART recibir datos Buffer Registros comparten la
misma direccin de E / S denomina USART Registro de Datos o UDRn. La transmisin de datos Buffer Reglanistro (TXB) ser el destino de los datos escritos en la ubicacin UDRn Registro. La lectura de la
UDRn Registro ubicacin devolver el contenido del bfer de datos Registro Recibir (RXB).
Para 5-, 6- personajes, o de 7 bits los bits no utilizados superiores sern ignorados por el transmisor y se pusieron a
cero por el receptor.
El buffer de transmisin slo se puede escribir cuando la bandera UDREn en el Registro UCSRnA se establece.
Los datos escritos a UDRn cuando la bandera UDREn no est establecido, ser ignorado por el USART Transmitirter. Cuando se escriben datos en el bfer de transmisin, y el transmisor est activado, el transmisor
se cargarn los datos en la transmisin de registro en el registro de desplazamiento cuando est vaca. Entonces el
los datos se transmiten en serie en el pasador TxDn.

El buffer de recepcin consiste en una FIFO dos niveles. El FIFO cambiar su estado cada vez que el
bfer de recepcin se accede. Debido a este comportamiento del bfer de recepcin, no utilice lectura ModifyEscriba las instrucciones (OSE y CBI) en esta ubicacin. Tenga cuidado al usar instrucciones de la prueba bits
(SBIC y SBIS), ya que estos tambin cambiar el estado de la FIFO.

19.10.2

UCSRnA - Control USART y Registro de Estado n A


Bit

RXCn

TXCn

UDREn

FEn

ODRn

Upen

U2Xn

MPCMn

Lectura / Escritura

R/W

R/W

R/W

Valor inicial

UCSRnA

Bit 7 - RXCn: USART Recibir completa


Este bit de bandera se establece cuando hay datos ledos en el bfer de recepcin y se aclar cuando la reciben
buffer est vaco (es decir, no contiene ningn dato no ledos). Si el receptor est desactivado, la recibir
bfer se sonroj y en consecuencia el poco RXCn se convertir en cero. La bandera RXCn puede ser
utilizado para generar una interrupcin de recepcin completa (vase la descripcin de la broca RXCIEn).

Bit 6 - TXCn: USART Transmisin completa


Este bit de bandera se establece cuando todo el marco en el Cambio de transmisin Registro se ha desplazado hacia fuera y
no hay nuevos datos actualmente presentes en el buffer de transmisin (UDRn). El bit de bandera TXCn es automtica
automticamente borra cuando se ejecuta una interrupcin completa de la transmisin, o puede ser despejado por escrito
un uno a su ubicacin poco. La bandera TXCn puede generar una transmisin completa de interrupcin (ver
Descripcin de la broca TXCIEn).

Bit 5 - UDREn: USART registro de datos vacas


La bandera UDREn indica si la memoria intermedia de transmisin (UDRn) est preparado para recibir nuevos datos. Si UDREn
es uno, la memoria intermedia est vaca, y por lo tanto listo para ser escrito. La bandera UDREn puede generar una

195
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Registro de datos de interrupcin Empty (ver descripcin del bit UDRIEn). UDREn se establece despus de un restablecimiento
para
indican que el transmisor est listo.
Bit 4 - Hinchada: Frame Error
Este bit se establece si el siguiente carcter en el buffer de recepcin tena un error de trama cuando se reciben. Es decir,
cuando el primer bit de parada del siguiente carcter en el buffer de recepcin es cero. Este bit es vlido hasta el
bfer de recepcin (UDRn) se lee. El bit FEn es cero cuando el bit de parada de los datos recibidos es uno.
Establezca siempre este bit a cero cuando se escribe a UCSRnA.

Bit 3 - ODRn: Datos rebasamiento


Este bit se establece si se detecta una condicin de Datos rebasamiento. Una saturacin de datos se produce cuando la reciben
buffer est lleno (dos caracteres), es un nuevo personaje de espera en la recepcin Registro de desplazamiento, y un
se detecta nuevo bit de inicio. Este bit es vlido hasta que se lea el bfer de recepcin (UDRn). Establezca siempre este
bit a cero cuando se escribe a UCSRnA.

Bit 2 - Upen: Paridad USART Error


Este bit se establece si el siguiente carcter en el buffer de recepcin tena un error de paridad en la recibida y la
Comprobacin de la paridad fue habilitado en ese punto (UPMn1 = 1). Este bit es vlido hasta el bfer de recepcin
(UDRn) se lee. Establezca siempre este bit a cero cuando se escribe a UCSRnA.

Bit 1 - U2Xn: Doble la USART Velocidad de transmisin


Este bit slo tiene efecto para la operacin asincrnica. Escribe este bit a cero cuando se utiliza sinoperacin sncrona.
Escribir este granito de arena para una reducir el divisor del divisor de velocidad de transmisin 16-8 duplica efectivamente
bling de la velocidad de transferencia para la comunicacin asncrona.
Bit 0 - MPCMn: Multi-procesador de modo de comunicacin
Este bit se activa el modo de comunicacin multi-procesador. Cuando el bit se escribe en MPCMn
una, todas las tramas entrantes recibidos por el receptor USART que no contienen direcciones informales
macin ser ignorado. El transmisor no se ve afectado por el ajuste MPCMn. Para ms detallada
informacin ver "Modo de comunicacin multi-procesador" en la pgina 193.

19.10.3

UCSRnB - Control USART y Registro de Estado n B


Bit

Lectura / Escritura
Valor inicial

RXCIEn

TXCIEn

UDRIEn

RXENn

TXENn

UCSZn2

RXB8n

TXB8n

R/W

R/W

R/W

R/W

R/W

R/W

R/W

UCSRnB

Bit 7 - RXCIEn: RX completa interrupcin Habilitar n


Escribir este bit a uno permite interrumpir en la bandera RXCn. Un USART Recibir interrupcin completa
se genera slo si el bit RXCIEn se escribe en uno, el indicador global de interrupcin en SREG es
escrito a uno y el bit RXCn en UCSRnA se establece.

Bit 6 - TXCIEn: TX completa interrupcin Habilitar n


Escribir este bit a uno permite interrumpir en la bandera TXCn. Un USART Transmisin completa interrupcin
se genera slo si el bit TXCIEn se escribe en uno, el indicador global de interrupcin en SREG es
escrito a uno y el bit TXCn en UCSRnA se establece.

196
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Bit 5 - UDRIEn: USART registro de datos vaco interrupcin Habilitar n


Escribir este bit a uno permite interrumpir en la bandera UDREn. Un registro de datos de interrupcin vaca
se genera slo si el bit UDRIEn se escribe en uno, el indicador global de interrupcin en SREG est escrito
a uno y el bit UDREn en UCSRnA se establece.

Bit 4 - RXENn: Receptor Habilitar n


Escribir este bit a uno permite que el receptor USART. El receptor anular puerto normal de funcionamiento
acin para el pasador RxDn cuando est activado. La desactivacin del receptor vaciar el bfer de recepcin
invalidar las Banderas FEn, Dorn, y Upen.

Bit 3 - TXENn: Transmisor Habilitar n


Escribir este bit a uno permite que el transmisor USART. El Transmisor anular puerto normales
operacin para el pasador TxDn cuando est activada. La desactivacin del transmisor (escrito TXENn a
cero) no entrar en vigencia hasta que se completen las transmisiones en curso y pendientes, es decir,
cuando la transmisin de registro en y Transmit Buffer Registro no contienen datos para ser transMitted. Cuando est desactivada, el transmisor ya no anular el puerto TxDn.

Bit 2 - UCSZn2: Tamao de caracteres n


Los bits UCSZn2 combinados con el UCSZn1: 0 bit en UCSRnC establece el nmero de bits de datos
(Tamao de la fuente) en un marco del receptor y del transmisor utilizan.

Bit 1 - RXB8n: Recibir datos Bit 8 n


RXB8n es el noveno bit de datos de carcter recibida cuando funciona con marcos de serie con nueve
bits de datos. Se debe leer antes de leer los bits bajos de UDRn.

Bit 0 - TXB8n: Transmitir datos Bit 8 n


TXB8n es el noveno bit de datos en el carcter que se transmite cuando se opera con los marcos de serie
con nueve bits de datos. Debe ser por escrito antes de escribir los bits bajos para UDRn.

19.10.4

UCSRnC - Control USART y Registro de Estado n C


Bit

7
UMSELn1

Lectura / Escritura
Valor inicial

6
UMSELn0

UPMn1

UPMn0

USBSn

UCSZn1

UCSZn0

UCPOLn

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

UCSRnC

Bits 7: 6 - UMSELn1: 0 USART Mode Select


Estos bits seleccionar el modo de funcionamiento de la USARTn como se muestra en Tabla 19-4.
Tabla 19-4.

Nota:

UMSELn Bits Configuracin

UMSELn1

UMSELn0

Modo

USART asncrono

USART sncrono

(Reservado)

Maestro SPI (MSPIM)(1)

1. Ver "USART en modo SPI" en la pgina 204 para una descripcin completa del modo SPI Master (MSPIM)
operacin

197
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Bits 5: 4 - UPMn1: 0: Modo de Paridad
Estos bits permiten y el tipo de generacin de paridad y verificacin establecidos. Si est activado, el transmisor
generar y enviar automticamente la paridad de los bits de datos de transmisin dentro de cada trama. La
Receptor generar un valor de paridad para los datos entrantes y compararlo con el ajuste UPMn.
Si se detecta una discrepancia, la Bandera Upen en UCSRnA se establecer.

Tabla 19-5.

UPMn Bits Configuracin

UPMn1

UPMn0

Modo de Paridad

Discapacitado

Reservado

Habilitado, paridad par

Habilitado, paridad impar

Bit 3 - USBSn: Bit de parada Seleccione


Este bit selecciona el nmero de bits de parada que se inserta por el transmisor. El receptor ignora
este ajuste.
Tabla 19-6.

Ajustes de bits USBS


USBSn

Bit (s) Detener

1-bit

2 bits

Bit 2: 1 - UCSZn1: 0: Tamao de caracteres


El UCSZn1: 0 bits combinado con el bit UCSZn2 en UCSRnB establece el nmero de bits de datos
(Tamao de la fuente) en un marco del receptor y del transmisor utilizan.
Tabla 19-7.

UCSZn Bits Configuracin

UCSZn2

UCSZn1

UCSZn0

Tamao de caracteres

5-bit

6-bit

7 bits

8-bit

Reservado

Reservado

Reservado

9-bit

Bit 0 - UCPOLn: Reloj de polaridad


Este bit se utiliza slo para el modo sincrnico. Escribe este bit a cero cuando el modo asncrono es
utilizado. El bit UCPOLn establece la relacin entre el cambio y la salida de datos de muestra de entrada de datos,
y el reloj sncrono (XCKn).

198
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 19-8.

Transmisin de datos ha cambiado (Salida de


TxDn Pin)

La informacin recibida muestreada (Entrada en RxDn


Pin)

Rising XCKn Edge

Caer XCKn Edge

Caer XCKn Edge

Rising XCKn Edge

UCPOLn

19.10.5

Ajustes de bits UCPOLn

UBRRnL y UBRRnH - USART Baud Rate Registros


Bit

15

14

13

12

11

10

UBRRn [11: 8]

UBRRnH

UBRRn [7: 0]
7
Lectura / Escritura

Valor inicial

UBRRnL

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Bit 15:12 - Bits Reservados


Estos bits estn reservados para uso futuro. Para la compatibilidad con dispositivos futuros, estos bits debe ser
escrito a cero cuando UBRRnH est escrito.

Bit 11: 0 - UBRR11: 0: USART Baud Rate Registro


Este es un registro de 12 bits que contiene la velocidad de transmisin USART. El UBRRnH contiene los cuatro
la mayora de los bits significativos, y el UBRRnL contiene los ocho bits menos significativos de la USART
velocidad de transmisin. Transmisiones que realizan el transmisor y el receptor se daarn si el baud
se cambia la tasa. Escribir UBRRnL desencadenar una actualizacin inmediata del prescaler velocidad de transmisin.

19.11 Los ejemplos de Baud Rate Ajuste


Para frecuencias de los cristales y resonadores estndar, las velocidades de transmisin ms utilizados para asncrono
operacin sncrona se puede generar mediante la configuracin UBRRn en Tabla 19-9. UBRRn
valores que dan una velocidad de transmisin real que difiere menos del 0,5% de la velocidad de transmisin de destino, son
negrita en la tabla. Las calificaciones de error ms elevados son aceptables, pero el receptor tendrn menos ruido resistencia
tancia cuando las calificaciones de error son altas, especialmente para los grandes marcos de serie (ver "Asynchronous
Rango de operacin "en la pgina 192). Los valores de error se calculan utilizando la siguiente ecuacin:

BaudRate coincidencia ms cercana


-Error [%] = ------------------------------------------------ - 1 100%
BaudRate

199
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 19-9.

Ejemplos de Configuracin UBRRn de frecuencias del oscilador ms utilizadas


Fosc = 1,0000 MHz

Fosc = 1,8432 MHz

Baud
Tarifa
(bps)

UBRRn

2400

25

0,2%

51

0,2%

47

4800

12

0,2%

25

0,2%

9600

-7,0%

12

14.4k

8,5%

19,2 k

28.8k

U2Xn = 0

U2Xn = 1

UBRRn

Error

0,0%

95

0,0%

51

0,2%

103

0,2%

23

0,0%

47

0,0%

25

0,2%

51

0,2%

0,2%

11

0,0%

23

0,0%

12

0,2%

25

0,2%

-3,5%

0,0%

15

0,0%

-3,5%

16

2,1%

8,5%

-7,0%

0,0%

11

0,0%

-7,0%

12

0,2%

8,5%

8,5%

0,0%

0,0%

8,5%

-3,5%

38.4K

-18,6%

8,5%

0,0%

0,0%

8,5%

-7,0%

57.6k

8,5%

8,5%

0,0%

0,0%

8,5%

8,5%

76.8k

-18,6%

-25,0%

0,0%

-18,6%

8,5%

115.2

8,5%

0,0%

0,0%

8,5%

8,5%

230.4 K

0,0%

250k

0,0%

125 kbps

UBRRn

Error

U2Xn = 1
UBRRn

Nota:

Error

U2Xn = 0

Error

62.5 kbps

UBRRn

U2Xn = 1
UBRRn

Max.(1)

Error

U2Xn = 0

Fosc = 2,0000 MHz

115,2 kbps

230,4 kbps

Error

125 kbps

250 kbps

1. UBRRn = 0, Error = 0,0%

200
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 19-10. Ejemplos de Configuracin UBRRn de frecuencias del oscilador ms utilizadas (Continuacin)
Fosc = 3,6864 MHz
Baud
Tarifa
(bps)

U2Xn = 0

Fosc = 4,0000 MHz


U2Xn = 1

U2Xn = 0

Fosc = 7,3728 MHz


U2Xn = 1

U2Xn = 0

U2Xn = 1

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

2400

95

0,0%

191

0,0%

103

0,2%

207

0,2%

191

0,0%

383

0,0%

4800

47

0,0%

95

0,0%

51

0,2%

103

0,2%

95

0,0%

191

0,0%

9600

23

0,0%

47

0,0%

25

0,2%

51

0,2%

47

0,0%

95

0,0%

14.4k

15

0,0%

31

0,0%

16

2,1%

34

-0,8%

31

0,0%

63

0,0%

19,2 k

11

0,0%

23

0,0%

12

0,2%

25

0,2%

23

0,0%

47

0,0%

28.8k

0,0%

15

0,0%

-3,5%

16

2,1%

15

0,0%

31

0,0%

38.4K

0,0%

11

0,0%

-7,0%

12

0,2%

11

0,0%

23

0,0%

57.6k

0,0%

0,0%

8,5%

-3,5%

0,0%

15

0,0%

76.8k

0,0%

0,0%

8,5%

-7,0%

0,0%

11

0,0%

115.2

0,0%

0,0%

8,5%

8,5%

0,0%

0,0%

230.4 K

0,0%

0,0%

8,5%

8,5%

0,0%

0,0%

250k

-7,8%

-7,8%

0,0%

0,0%

-7,8%

-7,8%

0,5 M

-7,8%

0,0%

-7,8%

-7,8%

1M

-7,8%

Max. (1)

230,4 kbps

1.

460,8 kbps

250 kbps

0.5 Mbps

460,8 kbps

921,6 kbps

UBRRn = 0, Error = 0,0%

201
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 19-11. Ejemplos de Configuracin UBRRn de frecuencias del oscilador ms utilizadas (Continuacin)
Fosc = 11.0592 MHz

Fosc = 8,0000 MHz

Fosc = 14.7456 MHz

Baud
Tarifa
(bps)

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

2400

207

0,2%

416

-0,1%

287

0,0%

575

0,0%

383

0,0%

767

0,0%

4800

103

0,2%

207

0,2%

143

0,0%

287

0,0%

191

0,0%

383

0,0%

9600

51

0,2%

103

0,2%

71

0,0%

143

0,0%

95

0,0%

191

0,0%

14.4k

34

-0,8%

68

0,6%

47

0,0%

95

0,0%

63

0,0%

127

0,0%

19,2 k

25

0,2%

51

0,2%

35

0,0%

71

0,0%

47

0,0%

95

0,0%

28.8k

16

2,1%

34

-0,8%

23

0,0%

47

0,0%

31

0,0%

63

0,0%

38.4K

12

0,2%

25

0,2%

17

0,0%

35

0,0%

23

0,0%

47

0,0%

57.6k

-3,5%

16

2,1%

11

0,0%

23

0,0%

15

0,0%

31

0,0%

76.8k

-7,0%

12

0,2%

0,0%

17

0,0%

11

0,0%

23

0,0%

115.2

8,5%

-3,5%

0,0%

11

0,0%

0,0%

15

0,0%

230.4 K

8,5%

8,5%

0,0%

0,0%

0,0%

0,0%

250k

0,0%

0,0%

-7,8%

-7,8%

-7,8%

5,3%

0,5 M

0,0%

0,0%

-7,8%

-7,8%

-7,8%

1M

0,0%

-7,8%

-7,8%

Max. (1)

0.5 Mbps

1.

U2Xn = 0

U2Xn = 1

1 Mbps

U2Xn = 0

691,2 kbps

U2Xn = 1

1,3824 Mbps

U2Xn = 0

921,6 kbps

U2Xn = 1

1,8432 Mbps

UBRRn = 0, Error = 0,0%

202
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 19-12. Ejemplos de Configuracin UBRRn de frecuencias del oscilador ms utilizadas (Continuacin)
Fosc = 16.0000 MHz

Fosc = 18.4320 MHz

Fosc = 20.0000 MHz

Baud
Tarifa
(bps)

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

UBRRn

Error

2400

416

-0,1%

832

0,0%

479

0,0%

959

0,0%

520

0,0%

1041

0,0%

4800

207

0,2%

416

-0,1%

239

0,0%

479

0,0%

259

0,2%

520

0,0%

9600

103

0,2%

207

0,2%

119

0,0%

239

0,0%

129

0,2%

259

0,2%

14.4k

68

0,6%

138

-0,1%

79

0,0%

159

0,0%

86

-0,2%

173

-0,2%

19,2 k

51

0,2%

103

0,2%

59

0,0%

119

0,0%

64

0,2%

129

0,2%

28.8k

34

-0,8%

68

0,6%

39

0,0%

79

0,0%

42

0,9%

86

-0,2%

38.4K

25

0,2%

51

0,2%

29

0,0%

59

0,0%

32

-1,4%

64

0,2%

57.6k

16

2,1%

34

-0,8%

19

0,0%

39

0,0%

21

-1,4%

42

0,9%

76.8k

12

0,2%

25

0,2%

14

0,0%

29

0,0%

15

1,7%

32

-1,4%

115.2

-3,5%

16

2,1%

0,0%

19

0,0%

10

-1,4%

21

-1,4%

230.4 K

8,5%

-3,5%

0,0%

0,0%

8,5%

10

-1,4%

250k

0,0%

0,0%

-7,8%

2,4%

0,0%

0,0%

0,5 M

0,0%

0,0%

-7,8%

0,0%

1M

0,0%

0,0%

U2Xn = 0

Max. (1)
1.

1 Mbps

U2Xn = 1

2 Mbps

U2Xn = 0

1.152 Mbps

U2Xn = 1

2.304 Mbps

U2Xn = 0

1.25 Mbps

U2Xn = 1

2.5 Mbps

UBRRn = 0, Error = 0,0%

203
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

20. USART en modo SPI


20.1

Caractersticas

20.2

Full Duplex, tres hilos sncrono de transferencia de datos


Operacin de maestro
Soporta todos los cuatro modos SPI de Operacin (Modo 0, 1, 2, y 3)
LSB Primera o Transferencia MSB First Data (Configurable Orden de Datos)
En cola Operacin (Doble bfer)
Alta Resolucin Velocidad de transmisin Generador
Operacin de alta velocidad (fXCKmax = fck / 2)
Interrupcin Flexible Generacin

Visin de conjunto
El receptor serial universal sncrona y asncrona y el transmisor (USART) pueden ser
establecido en un modo compatible con SPI maestro de operacin.
Ajuste de los dos UMSELn1: 0 bits a uno permite que el USART en la lgica MSPIM. En este modo de operacin
CIN el control maestro SPI lgica toma control directo sobre los recursos USART. Estos
recursos incluyen el transmisor y el receptor cambio de registro y tampones, y la tasa de baudios generacin
rador. El generador de paridad y corrector, la lgica de los datos y la recuperacin de reloj, y el RX y TX
lgica de control est desactivado. La lgica USART RX y TX de control se sustituye por un SPI comn
transferir lgica de control. Sin embargo, la lgica de control pin y lgica de generacin de interrupcin es idntico en
ambos modos de funcionamiento.

Las ubicaciones de E / S de registro son los mismos en ambos modos. Sin embargo, algunas de las funcionalidades de la
de control registra cambios cuando se utiliza MSPIM.

20.3

Generacin de reloj
La lgica de generacin de reloj genera el reloj base para el transmisor y el receptor. Para
USART modo de operacin solamente (es decir, el funcionamiento maestro) de generacin de reloj interno MSPIM es apoyo
portado. Por ello, la Direccin de Registro de Datos para el pasador XCKn (DDR_XCKn) debe establecerse en uno
(Es decir, como de salida) para el USART en MSPIM para operar correctamente. Preferiblemente, el DDR_XCKn debe
ser establecido antes de la USART en MSPIM est activado (es decir TXENn y RXENn bit igual a uno).

La generacin de reloj interno usado en el modo de MSPIM es idntica a la maestra sncrono USART
modo ter. Por tanto, la velocidad de transmisin o UBRRn se puede determinar con la misma
ecuaciones, ver Tabla 20-1:

204
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 20-1.

Ecuaciones para el clculo de la velocidad en baudios Registro Marco


La ecuacin para el clculo de Baud
Tarifa(1)

Modo de funcionamiento

Maestro sncrono
modo

Nota:

20.4

La ecuacin para calcular UBRRn


Valor

f OSC
BAUDIO = -------------------------------------2(UBRRn +1)

f OSC
UBRRn = ------------------- - 12BAUD

1. La velocidad de transmisin se define como la velocidad de transferencia en bits por segundo


(bps)

BAUDIO

Velocidad de transmisin (en bits por segundo, bps)

Fosc

Sistema de oscilador de frecuencia de reloj

UBRRn

Contenido del UBRRnH y UBRRnL Registros, (0-4095)

SPI Modos y sincronizacin de datos


Hay cuatro combinaciones de XCKn fase y polaridad (SCK) con respecto a los datos de serie, el cual
estn determinados por bits de control UCPHAn y UCPOLn. Los diagramas de temporizacin de transferencia de datos son
se muestra en la Figura 20-1. Los bits de datos se desplazan hacia fuera y se enclava en en los bordes opuestos de la XCKn
seal, asegurando tiempo suficiente para que las seales de datos se estabilice. La funcionalidad UCPOLn y UCPHAn
lidad se resume en Tabla 20-2. Tenga en cuenta que cambiar la configuracin de cualquiera de estos bits corromper
todas las comunicaciones en curso, tanto para el receptor y el transmisor.

Tabla 20-2.

UCPOLn y UCPHAn funcionalidad-

UCPOLn

UCPHAn

Modo SPI

Leading Edge

Borde posterior

Muestra (Rising)

Configuracin (cada)

Configuracin (Rising)

Muestra (cada)

Muestra (cada)

Configuracin (Rising)

Configuracin (cada)

Muestra (Rising)

205
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 20-1. Diagramas de temporizacin de transferencia de datos UCPHAn y UCPOLn.
UCPOL = 0

UCPOL = 1

UCPHA = 1
XCK

XCK

Configuracin de datos (TXD)

Configuracin de datos (TXD)

Muestra de datos (RXD)

Muestra de datos (RXD)

UCPHA = 0

20.5

XCK

XCK

Configuracin de datos (TXD)

Configuracin de datos (TXD)

Muestra de datos (RXD)

Muestra de datos (RXD)

Formatos de trama
Un marco de serie para el MSPIM se define como un carcter de 8 bits de datos. El USART en MSPIM
modo tiene dos formatos de trama vlidos:
datos de 8 bits con MSB primero
Los datos de 8 bits con LSB primero
Un marco comienza con la menor o ms significativo de bits de datos. A continuacin, los siguientes bits de datos, hasta un total
de
ocho, estn teniendo xito, terminando con el bit ms o menos significativo en consecuencia. Cuando una completa
trama se transmite, un nuevo marco puede seguir directamente, o la lnea de comunicacin se puede establecer en
un (alto) estado de reposo.
El bit UDORDn en UCSRnC establece el formato de trama utilizado por el USART en modo MSPIM. La
Receptor y transmisor utilizan el mismo ajuste. Tenga en cuenta que el cambio de la configuracin de cualquiera de estos
BITS corruptos toda comunicacin permanente tanto para el receptor y el transmisor.
La transferencia de datos de 16 bits se puede lograr mediante la escritura dos bytes de datos para UDRn. Una composicin de
transmisin UART
interrupcin completa entonces sealar que el valor de 16 bits ha sido desplazado hacia afuera.

20.5.1

USART MSPIM inicializacin


El USART en modo MSPIM tiene que ser inicializado antes de cualquier comunicacin puede tener lugar. La
proceso de inicializacin consta normalmente de ajuste de la velocidad de transmisin, modo de ajuste maestro de operacin
(Estableciendo DDR_XCKn a uno), el establecimiento de formato de trama y permitiendo que el transmisor y el
Receptor. Slo el transmisor puede funcionar de forma independiente. Para interrupcin impulsado USART operacin
cin, el indicador global de interrupcin debe borrarse (y por tanto las interrupciones deshabilitadas a nivel mundial), cuando
haciendo la inicializacin.

Nota:

Para asegurar una inicializacin inmediata de la salida XCKn el registro-velocidad de transmisin (UBRRn) debe ser
cero en el momento en que el transmisor est activado. Contrariamente a la operacin normal de modo USART la
UBRRn debe entonces ser escrito en el valor deseado despus de que el transmisor est activado, pero antes de la
se inicia primera transmisin. Configuracin UBRRn a cero antes de activar el transmisor no es sario
sario si la inicializacin se realiza inmediatamente despus de un reset desde UBRRn se pone a cero.

Antes de hacer una re-inicializacin con tasa de cambio de transmisin, modo de datos o formato de trama, asegrese de que
no hay transmisiones en curso durante el perodo se cambian los registros. La bandera TXCn
se puede utilizar para comprobar que el transmisor ha completado todas las transferencias, y la bandera RXCn puede

206
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


ser utilizado para comprobar que no existen datos ledos en el bfer de recepcin. Tenga en cuenta que la bandera TXCn
debe ser limpiado antes de cada transmisin (antes de UDRn est escrito) si se utiliza para este propsito.
Los ejemplos de cdigo de inicializacin USART sencilla muestran un montaje y una funcin C
la que son iguales en la funcionalidad. Los ejemplos asumen sondeo (no hay interrupciones habilitadas). La
velocidad de transmisin se da como un parmetro de la funcin. Para el cdigo de la asamblea, el parmetro de velocidad de
transmisin es
asumido para ser almacenada en los r17: r16 registros.
Cdigo Asamblea Ejemplo(1)
USART_Init:
clr r18
fuera UBRRnH, r18
fuera UBRRnL, r18
; Ajuste del pin del puerto XCKn como salida, habilita el modo maestro.
sbi XCKn_DDR, XCKn
; Ajuste el modo de MSPI de operacin y datos SPI modo 0.
LDI r18, (1 << UMSELn1) | (1 << UMSELn0) | (0 << UCPHAn) | (0 <<
UCPOLn)
fuera UCSRnC, r18
; Habilitar receptor y el transmisor.
LDI r18, (1 << RXENn) | (1 << TXENn)
fuera UCSRnB, r18
; Establezca la
velocidad de
; IMPORTANTE: La velocidad en baudios se debe establecer despus el transmisor est
transmisin.
activado!
fuera UBRRnH, r17
fuera UBRRnL, r18
enriar

Cdigo C Ejemplo(1)
vaco USART_Init ( unsigned int baudios)
{
UBRRn = 0;
/ * Establecer el pin del puerto XCKn como salida, habilita el modo maestro.
* /
XCKn_DDR | = (1 << XCKn);
/ * Establecer el modo MSPI de funcionamiento y el modo de datos
SPI 0. * /
UCSRnC = (1 << UMSELn1) | (1 << UMSELn0) | (0 << UCPHAn) | (0 <<
UCPOLn);
/ * Habilitar receptor y transmisor. * /
UCSRnB = (1 << RXENn) | (1 << TXENn);
/ * Establecer la velocidad
de transmisin. * /
/ * IMPORTANTE: La velocidad en baudios se debe establecer despus el transmisor
est activado
* /
UBRRn = baudios;
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

207
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

20.6

Transferencia de datos
Utilizando el USART en modo MSPI requiere el transmisor est habilitado, es decir, el bit TXENn en
el registro UCSRnB se establece en uno. Cuando el transmisor se activa, el funcionamiento de los puertos normales
del pasador TxDn se anula y dada la funcin que la produccin en serie del transmisor. Habilitacin
el receptor es opcional y se hace estableciendo el bit RXENn en el Registro UCSRnB a uno.
Cuando el receptor est activado, se anula la operacin normal del pin pin RxDn y dado
la funcin como entrada serie del receptor. El XCKn en ambos casos se puede utilizar como la transferencia
reloj.

Despus de la inicializacin del USART est listo para hacer la transferencia de datos. Una transferencia de datos se inicia por
escrito
ing a la ubicacin UDRn I / O. Este es el caso tanto para enviar y recibir datos desde el
transmisor controla el reloj de transferencia. Los datos escritos en UDRn se traslada de la transmisin tamponadas
fer al registro de desplazamiento cuando el registro de desplazamiento est listo para enviar un nuevo marco.

Nota:

Para mantener el buffer de entrada en sincrona con el nmero de bytes de datos transmitidos, el registro debe UDRn
ser ledo una vez para cada byte transmitido. La operacin de buffer de entrada es idntica a USART normales
modo, es decir, si se produce un desbordamiento del ltimo carcter recibido se perdern, y no los primeros datos en el
tamponadas
fer. Esto significa que si se transfieren cuatro bytes, 1 byte primero, a continuacin, byte 2, 3, y 4, y el UDRn
No se lee antes de completar todas las transferencias, a continuacin, el byte 3 a percibir se perdern, y no byte
1.

Los siguientes ejemplos de cdigo muestran un USART sencilla en funcin de transferencia modo MSPIM basado en
votacin del Vaco (UDREn) Bandera registro de datos y la completa (RXCn) Bandera de recepcin. La
USART tiene que ser inicializado antes de la funcin se puede utilizar. Para el cdigo de la asamblea, los datos que
ser enviado se supone que se almacena en el registro R16 y los datos recibidos estarn disponibles en el
mismo registro (R16) despus devuelve la funcin.

La funcin simplemente espera a que el buffer de transmisin est vaco marcando la bandera UDREn,
antes de cargarlo con los nuevos datos a transmitir. La funcin de espera a que los datos estn presentes
en el bfer de recepcin marcando la bandera RXCn, antes de leer el buffer y devolver el
valor.

208
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Cdigo Asamblea Ejemplo(1)
USART_MSPIM_Transfer:
; Espere buffer de transmisin vaca
sbis UCSRnA, UDREn
rjmp USART_MSPIM_Transfer
; Ponga datos (R16) en el bfer, enva los datos
fuera UDRn, r16
; Espere a que los datos que se reciban
USART_MSPIM_Wait_RXCn:
sbis UCSRnA, RXCn
rjmp USART_MSPIM_Wait_RXCn
; Obtener y devolver los datos recibidos de bfer
en r16, UDRn
enriar

Cdigo C Ejemplo(1)
unsigned char USART_Receive ( vaco )
{
/ * Esperar buffer de transmisin vaca * /
mientras ((UCSRnA y (1 << UDREn))!);
/ * Poner los datos en el bfer, enva los datos * /
UDRn = datos;
/ * Espere a que los datos que se recibirn
* /
mientras ((UCSRnA y (1 << RXCn))!);
/ * Obtener y devolver los datos recibidos de buffer * /
retorno UDRn;
}
Nota:

1. Consulte "Acerca de Ejemplos de cdigo" en la pgina 7.

20.6.1

Transmisor y receptor de Banderas y Alarmas


El RXCn, TXCn y UDREn banderas y las interrupciones correspondientes en USART en modo MSPIM
son idnticas en su funcin a la operacin normal USART. Sin embargo, los indicadores de estado de error del receptor
(FE, DOR, y PE) no estn en uso y siempre se lee como cero.

20.6.2

La desactivacin del transmisor o receptor


La desactivacin del transmisor o receptor en USART en modo MSPIM es idntico en su funcin a
el funcionamiento normal USART.

209
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

20.7

AVR USART MSPIM vs. AVR SPI


El USART en modo MSPIM es totalmente compatible con el AVR SPI en relacin con:
diagrama de tiempo modo Master.
La funcionalidad de bit UCPOLn es idntico al bit CPOL SPI.
La funcionalidad de bit UCPHAn es idntico al bit SPI CPHA.
La funcionalidad de bit UDORDn es idntico al bit SPI DORD.
Sin embargo, ya que el USART en modo MSPIM reutiliza los recursos USART, el uso de la
USART en modo MSPIM es algo diferente en comparacin con el SPI. Adems de las diferencias de
los bits del registro de control, y que slo el funcionamiento maestro es apoyada por el USART en MSPIM
modo, las siguientes caractersticas difieren entre los dos mdulos:
El USART en modo MSPIM incluye (doble) de amortiguacin del transmisor. El SPI no tiene
tampn.
El USART en modo receptor MSPIM incluye un nivel de amortiguacin adicional.
El SPI WCOL (Write Colisin) bits no est incluido en USART en modo MSPIM.
El modo de doble velocidad SPI (SPI2X) bits no est incluido. Sin embargo, se logra el mismo efecto
mediante el establecimiento de UBRRn en consecuencia.
Interrupcin tiempo no es compatible.
Control Pin difiere debido a la maestra nica operacin de la USART en modo MSPIM.
Una comparacin de la USART en modo MSPIM y los pasadores de SPI se muestra en Tabla 20-3 en la pgina
210.
Tabla 20-3.

Comparativa de USART en modo MSPIM y alfileres SPI.

USART_MSPIM

SPI

Comentario

TxDn

MOSI

Master Out slo

RxDn

MISO

Maestro En slo

XCKn

SCK

(Funcionalmente idnticos)

(N / A)

SS

No es compatible con USART en


MSPIM

210
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

20.8

Registro Descripcin
La siguiente seccin describe los registros utilizados para la operacin SPI utilizando el USART.

20.8.1

UDRn - USART MSPIM de E / S de datos Registro


La funcin y el bit descripcin del registro de datos USART (UDRn) en el modo MSPI es idntica a
funcionamiento normal USART. Consulte "UDRn - USART E / S Registro de datos n" en la pgina 195.

20.8.2

UCSRnA - USART MSPIM Control y Registro de Estado n A


Bit

RXCn

TXCn

UDREn

0
-

UCSRnA

Lectura / Escritura

R/W

Valor inicial

Bit 7 - RXCn: USART Recibir completa


Este bit de bandera se establece cuando hay datos ledos en el bfer de recepcin y se aclar cuando la reciben
buffer est vaco (es decir, no contiene ningn dato no ledos). Si el receptor est desactivado, la recibir
bfer se sonroj y en consecuencia el poco RXCn se convertir en cero. La bandera RXCn puede ser
utilizado para generar una interrupcin de recepcin completa (vase la descripcin de la broca RXCIEn).

Bit 6 - TXCn: USART Transmisin completa


Este bit de bandera se establece cuando todo el marco en el Cambio de transmisin Registro se ha desplazado hacia fuera y
no hay nuevos datos actualmente presentes en el buffer de transmisin (UDRn). El bit de bandera TXCn es automtica
automticamente borra cuando se ejecuta una interrupcin completa de la transmisin, o puede ser despejado por escrito
un uno a su ubicacin poco. La bandera TXCn puede generar una transmisin completa de interrupcin (ver
Descripcin de la broca TXCIEn).

Bit 5 - UDREn: USART registro de datos vacas


La bandera UDREn indica si la memoria intermedia de transmisin (UDRn) est preparado para recibir nuevos datos. Si UDREn
es uno, la memoria intermedia est vaca, y por lo tanto listo para ser escrito. La bandera UDREn puede generar una
Registro de datos de interrupcin Empty (ver descripcin del bit UDRIE). UDREn se establece despus de un restablecimiento
para
indican que el transmisor est listo.
Bit 4: 0 - Reservados Bits en modo MSPI
Cuando est en modo MSPI, estos bits se reservan para uso futuro. Para la compatibilidad con dispositivos futuros,
estos bits deben ser escritos a cero cuando UCSRnA est escrito.

20.8.3

UCSRnB - USART MSPIM Control y Registro de Estado n B


Bit

Lectura / Escritura
Valor inicial

RXCIEn

TXCIEn

UDRIE

RXENn

TXENn

0
-

R/W

R/W

R/W

R/W

R/W

UCSRnB

Bit 7 - RXCIEn: RX completa habilitacin de interrupcin


Escribir este bit a uno permite interrumpir en la bandera RXCn. Un USART Recibir interrupcin completa
se genera slo si el bit RXCIEn se escribe en uno, el indicador global de interrupcin en SREG es
escrito a uno y el bit RXCn en UCSRnA se establece.

211
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Bit 6 - TXCIEn: TX completa habilitacin de interrupcin
Escribir este bit a uno permite interrumpir en la bandera TXCn. Un USART Transmisin completa interrupcin
se genera slo si el bit TXCIEn se escribe en uno, el indicador global de interrupcin en SREG es
escrito a uno y el bit TXCn en UCSRnA se establece.

Bit 5 - UDRIE: USART registro de datos vaco habilitacin de interrupcin


Escribir este bit a uno permite interrumpir en la bandera UDREn. Un registro de datos de interrupcin vaca
se genera slo si el bit UDRIE se escribe en uno, el indicador global de interrupcin en SREG est escrito
a uno y el bit UDREn en UCSRnA se establece.

Bit 4 - RXENn: Receptor Activa


Escribir este bit a uno permite que el receptor USART en modo MSPIM. El receptor anular
operacin portuaria normal que el pin RxDn cuando est activada. La desactivacin del receptor eliminar la
bfer de recepcin. Slo permite al receptor en modo MSPI (es decir, el establecimiento de RXENn = 1 y TXENn = 0)
no tiene sentido, ya que es el transmisor que controla el reloj de transferencia y desde nico maestro
modo es compatible.

Bit 3 - TXENn: Transmisor Habilitar


Escribir este bit a uno permite que el transmisor USART. El Transmisor anular puerto normales
operacin para el pasador TxDn cuando est activada. La desactivacin del transmisor (escrito TXENn a
cero) no entrar en vigencia hasta que se completen las transmisiones en curso y pendientes, es decir,
cuando la transmisin de registro en y Transmit Buffer Registro no contienen datos para ser transMitted. Cuando est desactivada, el transmisor ya no anular el puerto TxDn.

Bit 2: 0 - Reservados Bits en modo MSPI


Cuando est en modo MSPI, estos bits se reservan para uso futuro. Para la compatibilidad con dispositivos futuros,
estos bits deben ser escritos a cero cuando UCSRnB est escrito.

20.8.4

UCSRnC - USART MSPIM Control y Registro de Estado n C


Bit

7
UMSELn1

Lectura / Escritura
Valor inicial

6
UMSELn0

UDORDn

UCPHAn

UCPOLn

R/W

R/W

R/W

R/W

R/W

UCSRnC

Bit 7: 6 - UMSELn1: 0: USART Mode Select


Estos bits seleccionar el modo de funcionamiento de la USART como se muestra en Tabla 20-4. Ver "UCSRnC Control de USART y Registro de Estado n C "en la pgina 197 para una descripcin completa de la USART normales
operacin. El MSPIM se activa cuando ambos bits UMSELn se fijan a uno. El UDORDn,
UCPHAn y UCPOLn se pueden establecer en la misma operacin de escritura en la que se permiti a la MSPIM.

Tabla 20-4.

UMSELn Bits Configuracin


UMSELn1

UMSELn0

Modo

USART asncrono

USART sncrono

Reservado

Maestro SPI (MSPIM)

212
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Bit 5: 3 - Reservados Bits en modo MSPI
Cuando est en modo MSPI, estos bits se reservan para uso futuro. Para la compatibilidad con dispositivos futuros,
estos bits deben ser escritos a cero cuando UCSRnC est escrito.

Bit 2 - UDORDn: Solicitar datos


Cuando se establece en uno el LSB de la palabra de datos se transmite primero. Cuando se pone a cero el MSB del
palabra de datos se transmite primero. Consulte la seccin de formatos de trama pgina 4 para obtener ms informacin.

Bit 1 - UCPHAn: Reloj Fase


El UCPHAn bit establecer determinar si los datos se toman en el extremo de leasing (primera) o tizn (ltima)
borde de XCKn. Consulte la seccin Modos de datos y sincronizacin pgina SPI 4 para ms detalles.

Bit 0 - UCPOLn: Reloj de polaridad


El bit UCPOLn establece la polaridad del reloj XCKn. La combinacin de la UCPOLn y
Configuracin de bits UCPHAn determinan el momento de la transferencia de datos. Consulte Modos de datos SPI y
Timing seccin de la pgina 4 para obtener ms detalles.

20.8.5

USART MSPIM Baud Rate Registros - UBRRnL y UBRRnH


La funcin y el bit descripcin de los registros de velocidad de transmisin en el modo MSPI es idntica a la normalidad
Operacin USART. Consulte "UBRRnL y UBRRnH - USART Baud Rate Registros" en la pgina 199.

213
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

21. 2 cables de interfaz Serial


21.1

Caractersticas

21.2

Simple interfaz de comunicacin pero potente y flexible, slo dos lneas de autobuses Needed
Tanto Maestro y Esclavo Operacin Compatibles
El dispositivo puede funcionar como transmisor o receptor
7 bits espacio de direcciones Permite hasta 128 diferentes direcciones de los esclavos
Soporte Arbitraje Multi-master
Hasta 400 kHz de velocidad de transferencia de datos
Velocidad de respuesta de los controladores de salida Limited
Ruido Supresin Circuitos Rechaza Puntos en lneas de autobuses
Direccin auxiliar completamente programable con Call Apoyo general
Direccin Reconocimiento Causas de despertador Cuando AVR est en modo de suspensin
Compatible con el protocolo I2C de Philips

2 cables de interfaz Serial Bus Definicin


El 2 hilos Interface serie (TWI) es ideal para aplicaciones tpicas de microcontroladores. La
Protocolo TWI permite al diseador de sistemas para interconectar hasta 128 dispositivos diferentes usando solamente
dos lneas bidireccionales de bus, uno para el reloj (SCL) y una para los datos (SDA). El nico hardware externo
utensilios necesarios para implementar el autobs es una nica resistencia de actuacin para cada una de las lneas de autobuses de
inmersin recproca. Todos
los dispositivos conectados al bus tienen direcciones individuales, y mecanismos para la resolucin de autobs
contencin son inherentes en el protocolo TWI.
Figura 21-1. Interconexin TWI autobs
VCC

El dispositivo 1 El dispositivo 2 Dispositivo 3 ........

Dispositivo n

R1

R2

SDA

SCL

214
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


21.2.1

TWI Terminologa
Las siguientes definiciones se encuentran con frecuencia en esta seccin.
Tabla 21-1.

TWI Terminologa

Plazo

Descripcin

Maestro

El dispositivo que inicia y termina una transmisin. El Maestro tambin genera el


Reloj SCL.

Esclavo

El dispositivo dirigida por un Maestro.

Transmisor

El dispositivo de colocacin de datos en el bus.

Receptor

El dispositivo de lectura de datos desde el bus.

El bit en PRTWI "Minimizar el consumo de energa" en la pgina 42 debe ser escrito a cero para permitir
el 2 hilos de interfaz serie.
21.2.2

Interconexin Elctrica
Como se muestra en Figura 21-1, ambas lneas de autobuses estn conectados a la tensin de alimentacin positiva a travs de
pull-up resistencias. Los conductores de autobuses de todos los dispositivos compatibles son TWI-drenaje abierto o colector abierto.
Esto implementa un cable y la funcin que es esencial para el funcionamiento de la interfaz. Un bajo
nivel en una lnea de bus TWI se genera cuando uno o ms dispositivos de salida TWI un cero. Un alto nivel
se emite cuando todos TWI dispositivos de triple estado de sus salidas, permitiendo que las resistencias pull-up para tirar de la lnea
alta. Tenga en cuenta que todos los dispositivos AVR conectados al bus TWI deben ser alimentados con el fin de permitir que cualquier
funcionamiento del bus.

El nmero de dispositivos que se pueden conectar al bus slo est limitada por la capacitancia del bus
lmite de 400 pF y el espacio de direcciones de esclavos de 7 bits. Una especificacin detallada de la carac- elctrica
carac- del TWI se da en "2 hilos Caractersticas de la interfaz de serie" en la pgina 321. Dos
diferentes conjuntos de especificaciones se presentan all, uno relevante para velocidades de bus por debajo de 100 kHz,
y uno vlido para el autobs velocidades de hasta 400 kHz.

215
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

21.3

Transferencia de datos y Formato de trama

21.3.1

Transferencia de Bits
Cada bit de datos transferidos en el bus TWI se acompaa de un pulso en la lnea del reloj. El nivel
de la lnea de datos debe ser estable cuando la lnea de reloj es alta. La nica excepcin a esta regla es para
generando iniciar y detener condiciones.

Figura 21-2. Validez de datos

SDA

SCL
Estable de Datos

Estable de Datos

Cambio de datos
21.3.2

START y STOP Condiciones


El maestro inicia y termina una transmisin de datos. La transmisin se inicia cuando el
Maestro emite una condicin de START en el autobs, y se termina cuando el Maestro emite un
Estado de STOP. Entre un comienzo y una condicin de parada, el autobs se considera ocupado, y no
otro maestro debe tratar de tomar el control del bus. Un caso especial ocurre cuando un nuevo START
condicin se emiti entre START y el estado STOP. Esto se refiere como a repetido
EMPIEZA A condicin, y se utiliza cuando el Maestro desea iniciar una nueva transferencia sin renunciarn
quishing control del bus. Despus de un comienzo REPETIDA, el autobs se considera ocupado hasta la prxima
DETNGASE. Esto es idntico al comportamiento START, y por lo tanto START se usa para describir tanto
START y REPETIDA START durante el resto de esta hoja de datos, a menos que se indique lo contrario. Como
representa a continuacin, START y condiciones de parada se sealizan mediante el cambio del nivel de la SDA
lnea cuando la lnea SCL es alta.

Figura 21-3. START, START y STOP REPETIDA condiciones

SDA

SCL

INICIO

DETNGASE
INICIO

START REPETIDA

DETNGASE

216
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


21.3.3

Direccin formato de paquetes


Todos los paquetes de direcciones de transmisin en el bus TWI son 9 bits de longitud, que consiste en 7 bits de direccin, uno
READ / WRITE bit de control y un bit de acuse. Si el bit READ / WRITE se establece, una lectura funcionamiento
la se va a realizar, de lo contrario una operacin de escritura se debe realizar. Cuando un esclavo
reconoce que se est abordando, cabe reconocer tirando SDA bajo en el noveno SCL
Ciclo (ACK). Si el esclavo direccionado est ocupado, o por alguna otra razn no puede dar servicio al Maestro
la peticin de ter, la lnea SDA debe dejarse alto en el ciclo de reloj ACK. El maestro puede entonces
transmitir una condicin de parada, o una condicin START REPETIDA para iniciar una nueva transmisin. Una
paquete de direccin que consiste en una direccin del esclavo y una lectura o un poco WRITE se llama SLA + R o
SLA + W, respectivamente.

El MSB del byte de direccin se transmite primero. Direcciones de los esclavos libremente pueden ser asignados por el
diseador, pero la direccin 0000 000 est reservado para una llamada general.
Cuando se emite una llamada general, todos los esclavos deben responder tirando de la lnea de baja SDA en el ACK
ciclo. Un llamado general se utiliza cuando un maestro desea transmitir el mismo mensaje a varios
esclavos en el sistema. Cuando la direccin de llamada general seguida por un bit de escritura se transmite en la
autobs, todos los esclavos cre para reconocer la llamada general se tire la baja lnea SDA en el ciclo ack.
Los siguientes paquetes de datos entonces sern recibidos por todos los esclavos que reconocieron al general
llamar. Tenga en cuenta que la transmisin de la direccin de llamada general seguida de una lectura poco tiene sentido, como
esto causara contencin si varios esclavos empezaron transmitir datos diferentes.

Todas las direcciones del formato 1111 xxx deben reservarse para usos futuros.
Figura 21-4. Direccin formato de paquetes
Dir MSB

Dir LSB

R/W

ACK

SDA

SCL
1

INICIO

21.3.4

Formato de Datos por Paquetes


Todos los paquetes de datos transmitidos en el bus TWI son nueve bits de longitud, consta de un byte de datos y
un bit de reconocimiento. Durante una transferencia de datos, el Maestro genera el reloj y el START y
PARAR condiciones, mientras que el receptor es responsable de reconocer la recepcin. Una
Acuse de recibo (ACK) es sealada por el receptor tirando de la lnea SDA baja durante el noveno SCL
ciclo. Si el receptor sale de la lnea de alta SDA, un NACK se seala. Cuando el receptor tiene
recibido el ltimo byte, o por alguna razn no puede recibir ms bytes, se debe informar a la
Transmisor mediante el envo de un NACK despus del byte final. El MSB del byte de datos se transmite primero.

217
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-5. Formato de Datos por Paquetes
Datos MSB

Datos LSB

ACK

Agregado
SDA
SDA desde
Transmisor
SDA desde
Receptor
SCL desde
Maestro
1

SLA + R / W

21.3.5

PARADA, REPETIDA
START o Siguiente
Byte de datos

Byte de datos

Combinando Direccin y paquetes de datos en una transmisin


Una transmisin consiste bsicamente en una condicin de arranque, un SLA + R / W, uno o ms paquetes de datos
y una condicin de STOP. Un mensaje vaco, que consiste en un START seguida de una condicin de STOP
cin, es ilegal. Tenga en cuenta que la conexin de cable-AND de la lnea SCL se puede utilizar para implementar
establecimiento de comunicacin entre el maestro y el esclavo. El esclavo puede extender el perodo de baja por SCL
tirando de la lnea de baja SCL. Esto es til si la velocidad de reloj creado por el Maestro es demasiado rpido para el
Esclavo, o el esclavo necesita tiempo adicional para el procesamiento entre las transmisiones de datos. El Esclavo
extender el perodo de baja SCL no afectar el perodo de alto SCL, que se determina por el
Maestro. Como consecuencia de ello, el esclavo puede reducir la velocidad de transferencia de datos TWI por la prolongacin de la
Ciclo de trabajo SCL.

Figura 21-6 muestra una transmisin de datos tpico. Tenga en cuenta que varios bytes de datos pueden ser transmitidos
entre el SLA + R / W y la condicin de parada, dependiendo del protocolo de aplicacin software
mentado por el software de aplicacin.

Figura 21-6. Tpico de Transmisin de Datos

Dir MSB

Dir LSB

R/W

ACK

Datos MSB

Datos LSB

ACK

SDA

SCL
1
INICIO

21.4

SLA + R / W

7
Byte de datos

DETNGASE

Multi-Master Bus Systems, Arbitraje y Sincronizacin


El protocolo TWI permite sistemas de bus con varios maestros. Preocupaciones especiales se han tomado
con el fin de garantizar que las transmisiones se proceder como normal, incluso si dos o ms maestros inician
una transmisin al mismo tiempo. Dos problemas se presentan en los sistemas multi-master:
Un algoritmo debe ser implementada permitiendo que slo uno de los maestros para completar la
la transmisin. Todos los otros maestros deben cesar la transmisin cuando descubren que tienen
perdido el proceso de seleccin. Este proceso de seleccin se llama arbitraje. Cuando un contendiente
maestro descubre que ha perdido el proceso de arbitraje, inmediatamente debe cambiar a Slave
modo para comprobar si est siendo explorado por el maestro ganar. El hecho de que mltiples

218
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


maestros han iniciado la transmisin al mismo tiempo no debe ser detectable a los esclavos, es decir,
los datos que se transfieren en el autobs no deben estar daados.
Diferentes maestros pueden usar diferentes frecuencias SCL. Un esquema debe ser diseado para
sincronizar los relojes de serie de todos los maestros, con el fin de dejar que la transmisin contine en una
moda unsono. Esto facilitar el proceso de arbitraje.
El AND cableada de las lneas de bus se utiliza para resolver ambos problemas. Los relojes de serie desde
todos los maestros estarn conectados-AND, produciendo un reloj combinado con un alto perodo igual al uno
del Maestro con el periodo de alta corto. La baja periodo del reloj combinado es igual a
el perodo de baja del Maestro con el periodo de baja por ms tiempo. Tenga en cuenta que todos los maestros escuchan la SCL
lnea, efectivamente empezar a contar sus perodos de alta y baja de tiempo de espera SCL cuando el combinado
Lnea SCL va alto o bajo, respectivamente.

Figura 21-7. SCL sincronizacin entre mltiples Masters

TA bajo

TA alta

SCL desde
Master A

SCL desde
Master B

SCL autobs
Lnea
TBlow
Maestros Inicio
Contando bajo Perodo

TBhigh
Maestros Inicio
Contando alta Perodo

El arbitraje se llevar a cabo por todos los maestros de monitoreo continuo de la lnea SDA despus de la salida
datos. Si el valor ledo en la lnea SDA no coincide con el valor que el Maestro tena salida, tiene
perdido el arbitraje. Tenga en cuenta que un maestro slo puede perder el arbitraje cuando muestra un alto valor SDA
mientras que otro maestro emite un valor bajo. El Maestro perdedora debe ir inmediatamente a Slave
modo, comprobar si est siendo dirigida por el Maestro ganar. La lnea SDA debe dejarse alta,
pero que pierden maestros pueden usarse para generar una seal de reloj hasta el final de los datos actuales o
paquete de direccin. Arbitraje continuar hasta que slo queda la Maestra, y esto puede tomar muchos
Bits. Si varios maestros estn tratando de abordar el mismo esclavo, el arbitraje continuar en el
paquete de datos.

219
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-8. Arbitraje entre dos maestros
INICIO

Master A pierde
Arbitraje, SDAA SDA

SDA desde
Master A

SDA desde
Master B

SDA Lnea

Sincronizado
SCL Lnea

Tenga en cuenta que el arbitraje no est permitido entre:


Una condicin START REPETIDA y un bit de datos.
Una condicin de STOP y un bit de datos.
Un START REPETIDA y estado STOP.
Es responsabilidad del usuario de software para asegurarse de que estas condiciones de arbitraje ilegales nunca
ocurrir. Esto implica que en los sistemas multi-master, todas las transferencias de datos deben utilizar la misma composicin
cin de paquetes de datos y W R / SLA +. En otras palabras: Todas las transmisiones deben contener el mismo
nmero de paquetes de datos, de lo contrario el resultado del arbitraje es indefinido.

220
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

21.5

Descripcin general del Mdulo TWI


El mdulo de TWI se compone de varios submdulos, como se muestra en Figura 21-9. Todos los registros
dibujado en una lnea gruesa son accesibles a travs del bus de datos AVR.
Figura 21-9. Descripcin general del Mdulo TWI
SCL

SDA

Espiga
La velocidad de respuesta
Filtro
Control

Espiga
La velocidad de respuesta
Filtro
Control

Unidad de interfaz de bus


START / STOP
Control

Deteccin de Arbitraje

Bit Rate Generador

Supresin de Spike

Precontador

Direccin / Desplazamiento de datos


Ack
Registrar (TWDR)

Bit Rate Registro


(TWBR)

Direccin de la unidad del partido


Registro de direcciones
(TWAR)

Direccin Comparador

Unidad de Control
Registro de estado
(TWSR)

Registro de Control
(TWCR)

Unidad
TWI

Mquina de Estado y
Control de estado

21.5.1

SCL y SDA prendedores


Estos pines interaccionan con el AVR TWI con el resto del sistema de MCU. Los controladores de salida contienen una
limitador de la velocidad de respuesta con el fin de ajustarse a la especificacin TWI. Las etapas de entrada contienen un pico
unidad de supresin de la eliminacin de los picos ms cortos de 50 ns. Tenga en cuenta que los pull-ups internas en el AVR
almohadillas se pueden activar mediante el establecimiento de los bits de puerto correspondiente a los pines SCL y SDA, como
se explica en la O / I seccin Puerto. Las flexiones internas pueden, en algunos sistemas eliminan la necesidad
para los externos.

21.5.2

Bit Rate Unidad de Generador


Esta unidad controla el perodo de SCL cuando se opera en un modo maestro. El perodo de SCL es concontrolada por los ajustes en el Bit Rate TWI Registro (TWBR) y los bits de divisor en el Estatuto TWI
Registro (TWSR). Operacin Esclavo no depende de la configuracin de velocidad de bits o de divisor, pero el
Frecuencia de reloj de la CPU en el esclavo debe ser al menos 16 veces mayor que la frecuencia SCL. Nota

221
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


que los esclavos pueden prolongar el perodo bajo SCL, reduciendo as el reloj media bus TWI
perodo. La frecuencia SCL se genera de acuerdo a la siguiente ecuacin:
Frecuencia de reloj de la CPU
Frecuencia SCL = ------------------------------------------------- --------------------------------------16 +2 (TWBR) ( PrescalerValue )
TWBR = Valor de la Tasa de Registro TWI Bit.
PrescalerValue = Valor de la pre-escalador, consulte Tabla 21-7 en la pgina 243.
Nota:

21.5.3

Valores de resistencia pull-up deben ser seleccionados de acuerdo a la frecuencia de SCL y el autobs capacitiva
carga de lnea. Ver Tabla 28-6 en la pgina 321 para el valor de la resistencia de pull-up.

Unidad de interfaz de bus


Esta unidad contiene los Datos y Direccin Shift Register (TWDR), un START / STOP y Controlador
Hardware de deteccin de Arbitraje. El TWDR contiene las direcciones o datos bytes a transmitir,
o la direccin o datos de bytes recibidos. Adems de los 8 bits TWDR, la unidad de interfaz de bus tambin
contiene un registro con la (N) bit ACK que se transmite o se recibe. Este (N) ACK Register no es accesible directamente por el software de aplicacin. Sin embargo, cuando se recibe, se puede establecer
o autorizados por la manipulacin del Registro de Control TWI (TWCR). En el modo de transmisor, el
valor de la recibida (N) bit ACK puede ser determinada por el valor en el TWSR.

El START / controlador de detencin es responsable de la generacin y deteccin de START, REPETIDA


Iniciar y detener condiciones. El controlador START / STOP es capaz de detectar iniciar y detener
condiciones incluso cuando el AVR MCU est en uno de los modos de suspensin, permitiendo a la MCU para despertar
si son dirigidas por un Maestro.
Si el TWI ha iniciado una transmisin como Maestro, la continuidad de hardware Deteccin de Arbitraje
ormente monitorea la transmisin tratando de determinar si el arbitraje se encuentra en proceso. Si el TWI ha perdido
un arbitraje, la Unidad de Control es informada. Actuacin correcta, se podrn adoptar y apropiada
cdigos de estado generados.

21.5.4

Direccin de la unidad del partido


El partido Direccin unidad comprueba si bytes de direccin recibidos coinciden con la direccin de siete bits en el
TWI Direccin Registro (TWAR). Si el reconocimiento TWI Convocatoria general Enable (TWGCE) poco en el
TWAR se escribe en uno, todos los bits de direccin entrantes tambin se comparan con la convocatoria general
direccin. Tras un partido de direccin, la Unidad de Control es informada, lo que permite la accin correcta para ser
tomado. El TWI puede o no reconocer su direccin, dependiendo de la configuracin en el TWCR.
La unidad de ajuste de Direccin es capaz de comparar las direcciones, incluso cuando el AVR MCU est en reposo
de modo, que permite al MCU para despertar si abordado por un Maestro.

Si otra interrupcin (por ejemplo, INT0) se produce durante TWI Energa-abajo coincidencia de direccin y se despierta el
CPU, el TWI aborta la operacin y el retorno a su estado de reposo. Si esto causa problemas, garantizar
Partido que TWI Direccin es la interrupcin slo permitido al entrar al apagar(1).
Nota:

21.5.5

1. Esto se aplica a todas las revisiones de dispositivos excepto ATmega88PA revisin C o ms reciente.

Unidad de Control
La unidad de control monitoriza el bus TWI y genera respuestas correspondientes a los ajustes en el
TWI Registro de Control (TWCR). Cuando un evento que requiere la atencin de la aplicacin se produce
en el bus TWI, la bandera de interrupcin TWI (TWINT) se afirma. En el siguiente ciclo de reloj, el TWI Status Register (TWSR) se actualiza con un cdigo de estado que identifica el evento. El TWSR slo
contiene informacin de estado relevante cuando la interrupcin de la bandera TWI se afirma. El resto del tiempo,
la TWSR contiene un cdigo de estado especial que indica que no hay informacin de estado relevante est disponible

222
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


capaz. Mientras se establece la Bandera TWINT, la lnea SCL se mantiene baja. Esto permite la aplicacin
software para completar sus tareas antes de permitir la transmisin TWI para continuar.
La bandera TWINT se establece en las siguientes situaciones:
Despus de la TWI ha transmitido a / condicin START REPETIDA START.
Despus de la TWI ha transmitido SLA + R / W.
Despus de la TWI ha transmitido un byte de direccin.
Despus de la TWI ha perdido el arbitraje.
Despus de la IST ha sido tratado por la direccin del esclavo propia o llamada general.
Despus de la TWI ha recibido un byte de datos.
Despus de un STOP o START REPETIDA se ha recibido mientras an abordado como un esclavo.
Cuando se ha producido un error de bus debido a una condicin de START o STOP ilegal.

21.6

Utilizando el TWI
El AVR TWI est orientado a byte e interrumpir basa. Las interrupciones se emiten despus de todos los eventos de autobuses,
como
recepcin de un byte o transmisin de una condicin START. Porque se basa interrupciones del TWI,
el software de la aplicacin es libre de continuar otras operaciones durante una transferencia de bytes TWI. Tenga en cuenta que
el bit de interrupcin Habilitar TWI (TWIE) en TWCR junto con la interrupcin Global Enable bit
SREG permitir que la aplicacin decida si procede o no la afirmacin de la Bandera TWINT debe genecomi una solicitud de interrupcin. Si el bit TWIE se borra, la aplicacin debe sondear la Bandera TWINT en
Para detectar acciones en el bus TWI.
Cuando la Bandera TWINT se afirma, el TWI ha terminado una operacin y espera la aplicacin
respuesta. En este caso, el Registro de Estado TWI (TWSR) contiene un valor que indica la corriente
estado del bus TWI. El software de aplicacin puede entonces decidir cmo el TWI debera comportarse de
el siguiente ciclo de bus TWI manipulando los TWCR y TWDR Registros.
Figura 21-10 es un ejemplo sencillo de cmo la aplicacin puede interactuar con el hardware TWI. En
este ejemplo, un maestro desea transmitir un solo byte de datos a un esclavo. Esta descripcin es bastante
abstracto, una explicacin ms detallada sigue adelante en esta seccin. Un ejemplo aplicacin simple cdigo
Menting el comportamiento deseado tambin se presenta.

223
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-10. Para conectar la aplicacin a la IST en una transmisin tpica
1. Aplicacin
Aplicacin escribe a TWCR a
Accin
iniciar
transmisin de
INICIO

Bus TWI

TWI
Hardware
Accin

3. Compruebe TWSR para ver si era START


enviado. Carga la aplicacin SLA + W en
TWDR, y cargas de control adecuado
seales en TWCR, Makin seguro de que
TWINT se escribe en uno,
y TWSTA est escrito a cero.

INICIO

SLA + W

Conjunto 2. TWINT.
El cdigo de estado indica
Condicin START envi

5. Compruebe TWSR para ver si SLA + W era


envi y ACK recibido.
Aplicacin carga los datos en TWDR y
cargas seales de control apropiadas en
TWCR, asegurndose de que es TWINT
escrito a uno

La

Conjunto 4. TWINT.
El cdigo de estado indica
SLA + W envi, ACK
recibido

Datos

7. Compruebe TWSR para ver si los datos se envan


y ACK recibido.
Cargas de aplicaciones de control adecuado
seales para enviar PARADA en TWCR,
asegurndose de que TWINT se escribe en uno

La

DETNGASE

Establece 6. TWINT.
El cdigo de estado indica
los datos enviados, ACK recibido

Indica
Conjunto TWINT

1. El primer paso en una transmisin TWI es para transmitir una condicin de arranque. Esto se hace
escribiendo un valor especfico en TWCR, instruyendo al hardware TWI para transmitir un START
condicin. Qu valor de escribir se describe ms adelante. Sin embargo, es importante que la
TWINT bit se establece en el valor escrito. Escribir un uno a TWINT despeja la bandera. El TWI
no se inicie ninguna operacin mientras el bit TWINT en TWCR se establece. Inmediatamente despus de la
aplicacin ha despejado TWINT, el TWI iniciar la transmisin de la condicin START.
2. Cuando la condicin de START se ha transmitido, la Bandera TWINT en TWCR est establecido, y
TWSR se actualiza con un cdigo de estado que indica que la condicin START tiene xitoplenamente sido enviado.
3. El software de aplicacin debe ahora examinar el valor de TWSR, para asegurarse de que el
Condicin START se transmiti con xito. Si TWSR indica lo contrario, la aplicacin
software cin pudiera tomar ciertas medidas especiales, como llamar a una rutina de error. Suponiendo que
el cdigo de estado es como se espera, la aplicacin debe cargar SLA + W en TWDR. Recordar
TWDR que se utiliza tanto para la direccin y de datos. Despus de TWDR se ha cargado con el
deseado SLA + W, un valor especfico debe ser escrito a TWCR, instruyendo al hardware TWI
para transmitir el SLA + W presente en TWDR. Qu valor de escribir se describe ms adelante.
Sin embargo, es importante que el bit TWINT se encuentra en el valor escrito. Escribir un uno a
TWINT despeja la bandera. El TWI no se iniciar ninguna operacin mientras el bit en TWINT
TWCR se establece. Inmediatamente despus de la aplicacin ha despejado TWINT, el TWI iniciar
la transmisin del paquete de direcciones.

4. Cuando el paquete direccin ha sido transmitida, la Bandera TWINT en TWCR est establecido, y
TWSR se actualiza con un cdigo de estado que indica que el paquete de direccin tiene xito
sido enviado. El cdigo de estado tambin reflejar si un esclavo reconoci el paquete o
no.
5. El software de aplicacin debe ahora examinar el valor de TWSR, para asegurarse de que el
paquete de direccin se transmiti con xito, y que el valor del bit de ACK era tan
esperado. Si TWSR indica lo contrario, el software de aplicacin podra tomar algn especial
accin, como llamar a una rutina de error. Suponiendo que el cdigo de estado es el esperado, el
aplicacin debe cargar un paquete de datos en TWDR. Posteriormente, un valor especfico debe ser
escrito a TWCR, instruyendo al hardware TWI para transmitir el paquete de datos presente en
TWDR. Qu valor de escribir se describe ms adelante. Sin embargo, es importante que la
TWINT bit se establece en el valor escrito. Escribir un uno a TWINT despeja la bandera. El TWI

224
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


no se inicie ninguna operacin mientras el bit TWINT en TWCR se establece. Inmediatamente despus de la
aplicacin ha despejado TWINT, el TWI iniciar la transmisin del paquete de datos.
6. Cuando el paquete de datos se ha transmitido, la Bandera TWINT en TWCR est establecido, y TWSR
se actualiza con un cdigo de estado que indica que el paquete de datos con xito ha sido enviado.
El cdigo de estado tambin reflejar si un esclavo reconoci el paquete o no.
7. El software de aplicacin debe ahora examinar el valor de TWSR, para asegurarse de que el
paquete de datos se transmiti con xito, y que el valor del bit de ACK era tan
esperado. Si TWSR indica lo contrario, el software de aplicacin podra tomar algn especial
accin, como llamar a una rutina de error. Suponiendo que el cdigo de estado es el esperado, el
aplicacin debe escribir un valor especfico a TWCR, instruyendo al hardware TWI para transmitir
una condicin STOP. Qu valor de escribir se describe ms adelante. Sin embargo, es importante que
el bit TWINT se establece en el valor escrito. Escribir un uno a TWINT despeja la bandera. El TWI
no se iniciar ninguna operacin mientras el bit TWINT en TWCR se establece. Inmediatamente despus de
la aplicacin ha despejado TWINT, el TWI iniciar la transmisin de la condicin de STOP
cin. Tenga en cuenta que TWINT NO se establece despus de un estado de STOP ha sido enviado.

A pesar de que este ejemplo es simple, que muestra los principios implicados en todas las transmisiones de inmersin recproca.
Estos se pueden resumir como sigue:
Cuando el TWI ha terminado una operacin y espera respuesta de las aplicaciones, la bandera es TWINT
establecer. La lnea SCL se baja hasta TWINT se borra.
Cuando la Bandera TWINT est establecido, el usuario debe actualizar todos los registros de inmersin recproca con el valor
correspondiente para
el siguiente ciclo de bus TWI. Como ejemplo, TWDR debe ser cargado con el valor a transmitir
en el siguiente ciclo de bus.
Despus de todas las actualizaciones de TWI Registro y otras tareas de software de aplicacin pendientes han sido
completado, TWCR est escrito. Al escribir TWCR, el bit TWINT debe establecerse. Escribir un uno
a TWINT borra la bandera. El TWI comenzar entonces la ejecucin de cualquier operacin fue
especificado por el ajuste TWCR.

En la siguiente asamblea y ejecucin C del ejemplo se da. Tenga en cuenta que el cdigo de
a continuacin se supone que varias definiciones se han hecho, por ejemplo mediante el uso de incluir ficheros.

225
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Cdigo Asamblea Ejemplo


LDI r16,
(1 << TWINT) | (1 << TWSTA) |
1

en

r16, TWCR

andi r16, 0xF8


cpi

TWDR, r16

LDI r16, (1 << TWINT) |


(1 << TWEN)
fuera TWCR, r16
wait2:
en

r16, TWCR

andi r16, 0xF8


cpi
5

r16, MT_SLA_ACK

Brne ERROR
LDI r16, DATOS
fuera

TWDR, r16

LDI r16, (1 << TWINT) |


(1 << TWEN)
fuera TWCR, r16
wait3:
6

en

r16, TWCR

si ((TWSR y 0xF8)! = START)


ERROR ();

andi r16, 0xF8


cpi

r16, MT_DATA_ACK

Brne ERROR
LDI r16,
(1 << TWINT) | (1 << TWEN) |
(1 << TWSTO)
fuera

Espere conjunto Bandera TWINT. Este


indica que el START
condicin ha sido transmitida

Comprobar el valor de TWI Estado


Registrar. Mscara bits de prescaler. Si
estado diferente de START ir a
ERROR

TWDR = SLA_W;
TWCR = (1 << TWINT) |
(1 << TWEN);

mientras (! (TWCR y (1 << TWINT)))


;

si ((TWSR y 0xF8)! =
MT_SLA_ACK)
ERROR ();

SLA_W Cargar en TWDR


Registrar. Claro poco TWINT en
TWCR para iniciar la transmisin de
direccin

Espere conjunto Bandera TWINT. Este


indica que el SLA + W tiene
sido transmitido, y
ACK / NACK se ha recibido.
Comprobar el valor de TWI Estado
Registrar. Mscara bits de prescaler. Si
estado diferente de
MT_SLA_ACK ir en ERROR

TWDR = DATOS;
TWCR = (1 << TWINT) |
(1 << TWEN);

mientras (! (TWCR y (1 << TWINT)))


;

SBR r16, TWINT


rjmp wait3
enr16, TWSR

SBR r16, TWINT


rjmp wait2
enr16, TWSR

Enviar condicin START

mientras (! (TWCR y (1 << TWINT)))

r16, START

Brne ERROR
LDI r16, SLA_W
fuera

(1 << TWEN)

SBR r16, TWINT


rjmp wait1
enr16, TWSR

Comentarios

TWCR = (1 << TWINT) | (1 << TWSTA) |

(1 << TWEN)
fuera TWCR, r16
wait1:

Ejemplo C

si ((TWSR y 0xF8)! =
MT_DATA_ACK)
ERROR ();

Cargar datos en TWDR Registro.


Claro poco TWINT en TWCR a
iniciar la transmisin de los datos

Espere conjunto Bandera TWINT. Este


indica que los datos han sido
transmitida, y ACK / NACK tiene
sido recibido.
Comprobar el valor de TWI Estado
Registrar. Mscara bits de prescaler. Si
estado diferente de
MT_DATA_ACK ir en ERROR

TWCR = (1 << TWINT) | (1 << TWEN) |


(1 << TWSTO);

Transmitir estado STOP

TWCR, r16

226
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


21.7

Modos de transmisin
El TWI puede funcionar en uno de los cuatro modos principales. Estos Transmisor Maestro se nombran (MT),
Maestro Receptor (MR), Transmisor Esclavo (ST) y el receptor Esclavo (SR). Varios de estos
modos se pueden utilizar en la misma aplicacin. A modo de ejemplo, el TWI puede utilizar el modo MT escribir
datos en una memoria EEPROM TWI, modo MR para leer los datos desde la EEPROM. Si otros maestros
estn presentes en el sistema, algunos de estos pueden transmitir datos a la IST, y el modo de continuacin, SR
sera utilizado. Es el software de aplicacin que decide qu modos son legales.

Las siguientes secciones describen cada uno de estos modos. Se describen los cdigos de estado posibles
junto con las figuras que detalla la transmisin de datos en cada uno de los modos. Estas figuras contienen el
siguientes abreviaturas:
S: condicin START
Rs: condicin START REPETIDA
R: Leer bits (nivel alto en SDA)
W: bit Write (bajo nivel en SDA)
A: poco Reconocimiento (bajo nivel en SDA)
R: No reconocer bits (nivel alto en SDA)
Byte de datos de 8 bits: Datos
P: estado de STOP
SLA: Esclavo Direccin
En Figura 21-12 a Figura 21-18, crculos se utilizan para indicar que la bandera TWINT se establece. La
nmeros en los crculos muestran el cdigo de estado que tuvo lugar en TWSR, con los bits precontador enmascarados a
cero. En estos puntos, se deben tomar acciones por la aplicacin para continuar o completar la TWI
transferencia. La transferencia TWI se suspende hasta que la bandera TWINT se borra por el software.
Cuando la Bandera TWINT est establecido, el cdigo de estado en TWSR se utiliza para determinar el soft- apropiado
accin cermica. Para cada cdigo de estado, la accin software necesario y los detalles de la siguiente serie
transferencia se dan en Tabla 21-2 a Tabla 21-5. Tenga en cuenta que los bits estn enmascarados prescaler a cero en
estas tablas.

21.7.1

Maestro Modo Transmisor


En el modo maestro transmisor, un nmero de bytes de datos se transmiten a un receptor Slave
(Ver Figura 21-11). Para entrar en un modo Master, una condicin START debe ser transmitida.
El formato del paquete siguiente direccin determina si el transmisor Maestro o Maestro
Modo receptor se debe introducir. Si se transmite SLA + W, se accede al modo MT, si SLA + R es transMitted, se entra en el modo MR. Todos los cdigos de estado mencionados en esta seccin asumen que el
bits de prescaler son cero o se enmascaran a cero.

227
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-11. Transferencia de datos en Master Mode Transmisor
VCC

El dispositivo 1
MAESTRO
TRANSMISOR

El dispositivo 2
ESCLAVO
RECEPTOR

Dispositivo 3

........

R1

Dispositivo n

R2

SDA

SCL

Una condicin START se enva por escrito el siguiente valor a TWCR:


TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

TWEN debe ajustarse para que el 2 cables de interfaz serie, TWSTA debe estar escrito a uno para transformar
mit una condicin START y TWINT debe estar escrito a uno para borrar la bandera TWINT. El TWI
luego probar el 2 cables Serial Bus y generar una condicin de arranque en cuanto el autobs se convierte en
libre. Despus de una condicin START ha sido transmitida, la Bandera TWINT se establece por el hardware, y la
cdigo de estado en TWSR ser 0x08 (ver Tabla 21-2). Para entrar en el modo MT, SLA + W debe ser
transmitida. Esto se hace escribiendo SLA + W para TWDR. A partir de entonces el bit debe ser TWINT
despejado (escribiendo a uno) para continuar con la transferencia. Esto se consigue escribiendo la siguiente
ing valor a TWCR:

TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Cuando SLA + W se han transmitido y un bit de acuse de recibo ha sido recibido, es TWINT
activarse de nuevo y un nmero de cdigos de estado en TWSR son posibles. Posibles cdigos de estado en Maestro
modo son 0x18, 0x20, 0x38 o. La accin correcta a desarrollar para cada uno de estos cdigos de estado
se detalla en Tabla 21-2.
Cuando SLA + W se ha transmitido correctamente, un paquete de datos debe ser transmitida. Es
hecho por escrito el byte de datos a TWDR. TWDR slo se debe escribir cuando TWINT es alta. Si no,
el acceso ser descartada, y el bit de escritura Collision (TWWC) se establecer en el TWCR Register. Despus de actualizar TWDR, el bit TWINT debe borrarse (escribiendo a uno) para continuar con la
transferencia. Esto se logra escribiendo el siguiente valor a TWCR:

TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Este esquema se repite hasta el ltimo byte se ha enviado y la transferencia se termin por geneing estado STOP o una condicin START repetida. Una condicin de parada se genera por la escritura
el siguiente valor a TWCR:
TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Una condicin START REPETIDA se genera escribiendo el siguiente valor a TWCR:


TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

228
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Despus de una condicin START repetida (0x10 estado) el 2 cables de interfaz serie puede tener acceso a la misma
Esclavo de nuevo, o un nuevo esclavo sin transmitir un estado de STOP. START repetida permite
Maestro para cambiar entre los esclavos, el modo Transmisor Maestro y el modo con- receptor Maestro
sin perder el control del bus.

Tabla 21-2.
Cdigo de estado
(TWSR)
Precontador Bits
son 0

Los cdigos de estado para el modo Transmisor Maestro


Respuesta Software de Aplicacin
Estado del 2 cables Serial Bus
y 2 cables de interfaz Serial
Hardware

Hasta / desde TWDR

0x08

Una condicin START ha sido


transmitida

0x10

Una condicin START repetida


ha sido transmitido

0x18

0x20

0x28

0x30

0x38

SLA + W se ha transmitido;
ACK se ha recibido

SLA + W se ha transmitido;
NO ACK se ha recibido

Byte de datos ha sido transmisor


ted;
ACK se ha recibido

Byte de datos ha sido transmisor


ted;
NO ACK se ha recibido

Arbitraje pierde en SLA + W o


bytes de datos

Para TWCR
STA

STO

TWIN
T

TWE
La

Cargar SLA + W

SLA + W se transmite;
ACK o NO ACK ser recibido

Cargar SLA + W o

Cargar SLA + R

SLA + W se transmite;
ACK o NO ACK ser recibido
SLA + R se transmite;
Lgica cambiar a modo maestro receptor

Byte de datos de carga o

Ninguna accin o TWDR


Ninguna accin o TWDR

1
0

0
1

1
1

X
X

Ninguna accin TWDR

Byte de datos de carga o

Ninguna accin o TWDR


Ninguna accin o TWDR

1
0

0
1

1
1

X
X

Ninguna accin TWDR

Byte de datos de carga o

Ninguna accin o TWDR


Ninguna accin o TWDR

1
0

0
1

1
1

X
X

Ninguna accin TWDR

Byte de datos de carga o

Ninguna accin o TWDR


Ninguna accin o TWDR

1
0

0
1

1
1

X
X

Ninguna accin TWDR

Ninguna accin o TWDR

Ninguna accin TWDR

Siguiente medida tomada por TWI Hardware

Byte de datos se transmitirn y ACK o NO ACK


ser recibido
Se transmitir START repetida
Se transmitir estado STOP y
Bandera TWSTO se restablecer
Estado STOP seguida de una condicin START ser
transmite y Bandera TWSTO se restablecer
Byte de datos se transmitirn y ACK o NO ACK
ser recibido
Se transmitir START repetida
Se transmitir estado STOP y
Bandera TWSTO se restablecer
Estado STOP seguida de una condicin START ser
transmite y Bandera TWSTO se restablecer
Byte de datos se transmitirn y ACK o NO ACK
ser recibido
Se transmitir START repetida
Se transmitir estado STOP y
Bandera TWSTO se restablecer
Estado STOP seguida de una condicin START ser
transmite y Bandera TWSTO se restablecer
Byte de datos se transmitirn y ACK o NO ACK
ser recibido
Se transmitir START repetida
Se transmitir estado STOP y
Bandera TWSTO se restablecer
Estado STOP seguida de una condicin START ser
transmite y Bandera TWSTO se restablecer
2 cables Serial Bus ser liberado y no se abordan
Modo esclavo entr
Se transmitir una condicin de START cuando el autobs
se convierte en gratuita

229
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-12. Formatos y Estados en el modo de transmisor Maestro
Montana

Exitoso
transmisin
a un esclavo
receptor

SLA

$ 08

La

DATOS

$ 18

La

$ 28

Transferencia Siguiente
comenz con una
inicio repetida
condicin

RS

SLA

$ 10
No reconocer
recibida despus de la
direccin del esclavo

La

$ 20
SR

No reconocer
recibida despus de un dato
byte

La

$ 30
Arbitraje pierde en esclavo
direccin o datos byte

AoA

Otro maestro
contina

AoA

$ 38
Arbitraje y perdi
abordarse como esclavo

La

$ 68

De maestro a esclavo

De esclavo a maestro

21.7.2

Otro maestro
contina

$ 38
Otro maestro
contina

$ 78

DATOS

Para correspondientes
estados en modo esclavo

$ B0

La

Cualquier nmero de bytes de datos


y sus asociados reconocen los bits

Este nmero (contenida en TWSR) corresponde


a un estado definido de la 2-Wire Serial Bus. La
bits de prescaler son cero o enmascarados a cero

Maestro modo de receptor


En el modo de receptor maestro, un nmero de bytes de datos se reciben desde un transmisor Slave
(Esclavo ver Figura 21-13). Para entrar en un modo Master, una condicin de inicio debe ser transmisor
ted. El formato del paquete siguiente direccin determina si emisor maestro o
Modo Receptor Maestro se debe introducir. Si se transmite SLA + W, se accede al modo MT, si SLA + R
se transmite, se entra en el modo MR. Todos los cdigos de estado mencionados en esta seccin asumen que
los bits prescaler son cero o se enmascaran a cero.

230
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-13. Transferencia de datos en el modo Maestro Receptor
VCC

El dispositivo 1
MAESTRO
RECEPTOR

El dispositivo 2
ESCLAVO
TRANSMISOR

Dispositivo 3

........

R1

Dispositivo n

R2

SDA

SCL

Una condicin START se enva por escrito el siguiente valor a TWCR:


TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

TWEN debe estar escrito a uno para que el 2 cables de interfaz serie, TWSTA debe estar escrito a
uno para transmitir una condicin de START y TWINT debe ajustarse para desactivar la bandera TWINT. El TWI
luego probar el 2 cables Serial Bus y generar una condicin de arranque en cuanto el autobs
se convierte en gratuita. Despus de una condicin START ha sido transmitida, la Bandera TWINT es fijado por hardware
ware, y el cdigo de estado en TWSR ser 0x08 (Ver Tabla 21-2). Para entrar en el modo MR,
SLA + R debe ser transmitida. Esto se realiza mediante la escritura SLA + R para TWDR. A partir de entonces el bit TWINT
debe ser limpiado (escribiendo a uno) para continuar con la transferencia. Esto se logra mediante la escritura
el siguiente valor a TWCR:

TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Cuando SLA + R haber sido transmitida y un bit de acuse de recibo ha sido recibido, es TWINT
activarse de nuevo y un nmero de cdigos de estado en TWSR son posibles. Posibles cdigos de estado en Maestro
modo son 0x38, 0x40, 0x48 o. La accin correcta a desarrollar para cada uno de estos cdigos de estado
se detalla en Tabla 21-3. Los datos recibidos se pueden leer en el Registro TWDR cuando el TWINT
Bandera est en lo alto por el hardware. Este esquema se repite hasta que se ha recibido el ltimo byte.
Despus de que se haya recibido el ltimo byte, el MR debe informar a la ST mediante el envo de un NACK despus de la
ltima recibido byte de datos. La transferencia se termin generando una condicin de STOP o un repiten
START condicin. Una condicin de parada se genera escribiendo el siguiente valor a TWCR:

TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Una condicin START REPETIDA se genera escribiendo el siguiente valor a TWCR:


TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Despus de una condicin START repetida (0x10 estado) el 2 cables de interfaz serie puede tener acceso a la misma
Esclavo de nuevo, o un nuevo esclavo sin transmitir un estado de STOP. START repetida permite

231
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Maestro para cambiar entre los esclavos, el modo Transmisor Maestro y el modo con- receptor Maestro
sin perder el control sobre el bus.
Tabla 21-3.
Cdigo de estado
(TWSR)
Precontador Bits
son 0

Los cdigos de estado para el modo Maestro Receptor


Respuesta Software de Aplicacin
Estado del 2 cables Serial Bus
y 2 cables de interfaz Serial
Hardware

Para TWCR
Hasta / desde TWDR

STA

STO

TWIN
T

TWE
La

Siguiente medida tomada por TWI Hardware

0x08

Una condicin START ha sido


transmitida

Cargar SLA + R

SLA + R se transmitir
ACK o NO ACK ser recibido

0x10

Una condicin START repetida


ha sido transmitido

Cargar SLA + R o

Cargar SLA + W

SLA + R se transmitir
ACK o NO ACK ser recibido
SLA + W se transmitir
Lgica Se activar el modo Transmisor Maestro

Ninguna accin o TWDR

Ninguna accin TWDR

Ninguna accin o TWDR

Ninguna accin TWDR

Ninguna accin o TWDR


Ninguna accin o TWDR

1
0

0
1

1
1

X
X

Ninguna accin TWDR

Leer byte de datos o

Leer byte de datos

Leer byte de datos o


Leer byte de datos o

1
0

0
1

1
1

X
X

Leer byte de datos

0x38

0x40

0x48

Arbitraje pierde en SLA + R o


NO bit ACK

SLA + R se ha transmitido;
ACK se ha recibido

SLA + R se ha transmitido;
NO ACK se ha recibido

0x50

Byte de datos se ha recibido;


ACK ha sido devuelto

0x58

Byte de datos se ha recibido;


NO ACK ha sido devuelto

2 cables Serial Bus ser liberado y no se abordan


Se entra en el modo Esclavo
Se transmitir una condicin de START cuando el autobs
se convierte en gratuita
Byte de datos ser recibida y NO ACK ser
devuelto
Byte de datos ser recibida y ACK ser devuelto
Se transmitir START repetida
Estado STOP se transmitir y Bandera TWSTO
se restablecer
Estado STOP seguida de una condicin START ser
transmite y Bandera TWSTO se restablecer
Byte de datos ser recibida y NO ACK ser
devuelto
Byte de datos ser recibida y ACK ser devuelto
Se transmitir START repetida
Estado STOP se transmitir y Bandera TWSTO
se restablecer
Estado STOP seguida de una condicin START ser
transmite y Bandera TWSTO se restablecer

232
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-14. Formatos y Estados en el modo de receptor Maestro
SR

Exitoso
recepcin
de un esclavo
receptor

SLA

$ 08

La

DATOS

La

$ 40

DATOS

$ 50

La

$ 58

Transferencia Siguiente
comenz con una
inicio repetida
condicin

RS

SLA

$ 10
No reconocer
recibida despus de la
direccin del esclavo

La

$ 48
Montana

Arbitraje pierde en esclavo


direccin o datos byte

AoA

Otro maestro
contina

La

$ 38
Arbitraje y perdi
abordarse como esclavo

La

$ 68

De maestro a esclavo

21.7.3

$ 38
Otro maestro
contina

$ 78

DATOS

De esclavo a maestro

Otro maestro
contina

Para correspondientes
estados en modo esclavo

$ B0

La

Cualquier nmero de bytes de datos


y sus asociados reconocen los bits

Este nmero (contenida en TWSR) corresponde


a un estado definido de la 2-Wire Serial Bus. La
bits de prescaler son cero o enmascarados a cero

El modo de receptor Esclavo


En el modo receptor esclavo, un nmero de bytes de datos se reciben desde un transmisor Maestro
(Ver Figura 21-15). Todos los cdigos de estado mencionados en esta seccin asumen que los bits precontador
son cero o se enmascaran a cero.

Figura 21-15. La transferencia de datos en modo receptor Esclavo


VCC

El dispositivo 1 El dispositivo 2
ESCLAVO
RECEPTOR

MAESTRO
TRANSMISOR

Dispositivo 3 ........

Dispositivo n

R1

R2

SDA

SCL

233
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Para iniciar el modo de receptor Esclavo, TWAR y TWCR deben inicializar la siguiente manera:
TWAR

TWA6

TWA5

valor

TWA4

TWA3

TWA2

TWA1

TWA0

TWGCE

Propio esclavo Direccin del dispositivo

Los 7 bits superiores son la direccin a la que responder el 2 cables de interfaz serie cuando
dirigida por un Maestro. Si el LSB se establece, el TWI responder a la direccin de llamada general (0x00),
de lo contrario, no tendr en cuenta la direccin de llamada general.
TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

TWEN debe estar escrito a uno para que el TWI. El bit TWEA debe estar escrito a uno para permitir
el reconocimiento de la propia direccin del esclavo del dispositivo o la direccin de llamada general. TWSTA
y TWSTO debe estar escrito a cero.
Cuando TWAR y TWCR han inicializado, el TWI espera hasta que se aborda en su propio
direccin del esclavo (o la direccin de llamada general si est habilitado), seguido por el bit de direccin de datos. Si el
direccin bit es "0" (escritura), el TWI funcionar en modo SR, de lo contrario se accede al modo ST. Despus
su propia direccin del esclavo y el bit de escritura se han recibido, la Bandera TWINT se establece y un vlido
cdigo de estado se puede leer desde TWSR. El cdigo de estado se utiliza para determinar el soft- apropiado
accin cermica. La accin correcta a desarrollar para cada cdigo de estado se detalla en Tabla 21-4.
El modo receptor Slave tambin se puede introducir si se pierde el arbitraje mientras que el TWI es en el Master
modo (ver estados 0x68 y 0x78).

Si el bit TWEA se restablece durante un traslado, el TWI devolver un "no reconoce" ("1") a SDA
despus de que el siguiente byte de datos recibido. Esto se puede utilizar para indicar que el esclavo no es capaz de
recibir ms bytes. Mientras TWEA es cero, el TWI no reconoce su propio esclavo
direccin. Sin embargo, el 2 hilos de bus serie est siendo monitoreado y reconocimiento de direcciones puede reanudar
en cualquier momento mediante el establecimiento TWEA. Esto implica que el bit TWEA se puede utilizar para aislar
temporalmente
el TWI del 2 cables Serial Bus.
En todos los modos de suspensin que no sean el modo de espera, el sistema de reloj a la IST est apagado. Si el TWEA
bit est establecido, la interfaz todava puede reconocer su propia direccin de esclavo o la direccin de llamada general por
utilizando el 2 hilos reloj de bus serie como fuente de reloj. La parte entonces se despertar de su sueo y
la IST llevar a cabo la baja de reloj SCL durante el velatorio y hasta la bandera TWINT se borra (por
escribiendo a uno). Adems de recepcin de datos se lleva a cabo como normal, con los relojes AVR Running como normal. Observe que si el AVR se ha configurado con un largo tiempo de puesta en marcha, la lnea SCL puede ser
mantiene baja durante mucho tiempo, el bloqueo de otras transmisiones de datos.

Tenga en cuenta que el 2 cables Serial Data Interface Registro - TWDR no refleja el ltimo byte presente
en el autobs cuando el despertar de estos modos de sueo.

234
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 21-4.
Cdigo de estado
(TWSR)
Precontador Bits
son 0
0x60

Cdigos de estado para el modo de receptor Esclavo


Respuesta Software de Aplicacin
Estado del 2 cables Serial Bus
y 2 cables Serial Interface Hardware
mercanca
Propio SLA + W se ha recibido;
ACK ha sido devuelto

Para TWCR
Hasta / desde TWDR

STA

STO

TWIN
T

TWE
La

Ninguna accin o TWDR

Ninguna accin TWDR

0x68

Arbitraje perdido en SLA + R / W como


Maestro; propio SLA + W ha sido
recibida; ACK ha sido devuelto

Ninguna accin o TWDR

Ninguna accin TWDR

0x70

Direccin de llamada general ha sido


recibida; ACK ha sido devuelto

Ninguna accin o TWDR

Ninguna accin TWDR

0x78

Arbitraje perdido en SLA + R / W como Ninguna accin o TWDR


Maestro; Direccin de llamada general tiene
ha recibido; ACK ha sido
Ninguna accin TWDR
devuelto

0x80

Anteriormente abordado con propia


SLA + W; los datos se ha recibido;
ACK ha sido devuelto

Leer byte de datos o

Leer byte de datos

0x88

Anteriormente abordado con propia


SLA + W; los datos se ha recibido;
NO ACK ha sido devuelto

Leer byte de datos o

Leer byte de datos o

Leer byte de datos o

Leer byte de datos

0x90

Anteriormente abordado con


llamada general; datos ha sido rerecibida; ACK ha sido devuelto

Leer byte de datos o

Leer byte de datos

0x98

Anteriormente abordado con


llamada general; de datos ha sido
recibida; NO ACK ha sido
devuelto

Leer byte de datos o

Leer byte de datos o

Leer byte de datos o

Leer byte de datos

0xA0

Una condicin de STOP o repetida


Ninguna accin
Condicin START ha sido
recibido mientras que todava abordarse como
Esclavo

Siguiente medida tomada por TWI Hardware


Byte de datos ser recibida y NO ACK ser
devuelto
Byte de datos ser recibida y ACK ser devuelto
Byte de datos ser recibida y NO ACK ser
devuelto
Byte de datos ser recibida y ACK ser devuelto
Byte de datos ser recibida y NO ACK ser
devuelto
Byte de datos ser recibida y ACK ser devuelto
Byte de datos ser recibida y NO ACK ser
devuelto
Byte de datos ser recibida y ACK ser devuelto
Byte de datos ser recibida y NO ACK ser
devuelto
Byte de datos ser recibida y ACK ser devuelto
Al cambiar a la modalidad de esclavo no se abordan;
hay un reconocimiento de la propia SLA o GCA
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1"
Al cambiar a la modalidad de esclavo no se abordan;
hay un reconocimiento de la propia SLA o GCA;
se transmitir una condicin de START cuando el autobs
se convierte en gratuita
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1";
se transmitir una condicin de START cuando el autobs
se convierte en gratuita

Byte de datos ser recibida y NO ACK ser


devuelto
Byte de datos ser recibida y ACK ser devuelto
Al cambiar a la modalidad de esclavo no se abordan;
hay un reconocimiento de la propia SLA o GCA
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1"
Al cambiar a la modalidad de esclavo no se abordan;
hay un reconocimiento de la propia SLA o GCA;
se transmitir una condicin de START cuando el autobs
se convierte en gratuita
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1";
se transmitir una condicin de START cuando el autobs
se convierte en gratuita

Al cambiar a la modalidad de esclavo no se abordan;


hay un reconocimiento de la propia SLA o GCA
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1"
Al cambiar a la modalidad de esclavo no se abordan;
hay un reconocimiento de la propia SLA o GCA;
se transmitir una condicin de START cuando el autobs
se convierte en gratuita
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1";
se transmitir una condicin de START cuando el autobs
se convierte en gratuita

235
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-16. Formatos y Estados en el modo de receptor Esclavo
La recepcin de la propia
direccin del esclavo y uno o
ms bytes de datos. Todos son
admitido

SLA

La

DATOS

$ 60

La

DATOS

La

$ 80

$ 80

Byte ltima datos recibidos


no se reconoce

La

PoS

$ A0

PoS

$ 88
Arbitraje perdi como maestro
y abordado como esclavo

La

$ 68

La recepcin de la convocatoria general


direccin y uno o ms de datos
bytes

Convocatoria general

La

DATOS

$ 70

La

DATOS

La

$ 90

$ 90

ltimo byte de datos recibido es


no reconocido

La

PoS

$ A0

PoS

$ 98
Arbitraje perdi como maestro y
abordado como esclavo al llamado general

La

$ 78

DATOS

De maestro a esclavo

De esclavo a maestro

21.7.4

La

Cualquier nmero de bytes de datos


y sus asociados reconocen los bits

Este nmero (contenida en TWSR) corresponde


a un estado definido de la 2-Wire Serial Bus. La
bits de prescaler son cero o enmascarados a cero

Modo Transmisor Esclavo


En el modo Transmisor Esclavo, un nmero de bytes de datos se transmiten a un receptor Maestro
(Ver Figura 21-17). Todos los cdigos de estado mencionados en esta seccin asumen que los bits precontador
son cero o se enmascaran a cero.

Figura 21-17. Transferencia de datos en el modo Transmisor Esclavo


VCC

El dispositivo 1
ESCLAVO
TRANSMISOR

El dispositivo 2
MAESTRO
RECEPTOR

Dispositivo 3 ........

Dispositivo n

R1

R2

SDA

SCL

236
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Para iniciar el modo Transmisor Esclavo, TWAR y TWCR deben inicializar la siguiente manera:
TWAR

TWA6

TWA5

valor

TWA4

TWA3

TWA2

TWA1

TWA0

TWGCE

Propio esclavo Direccin del dispositivo

Los siete bits superiores son la direccin a la que responder el 2 cables de interfaz serie cuando
dirigida por un Maestro. Si el LSB se establece, el TWI responder a la direccin de llamada general (0x00),
de lo contrario, no tendr en cuenta la direccin de llamada general.
TWCR
valor

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

TWEN debe estar escrito a uno para que el TWI. El bit TWEA debe estar escrito a uno para permitir
el reconocimiento de la propia direccin del esclavo del dispositivo o la direccin de llamada general. TWSTA
y TWSTO debe estar escrito a cero.
Cuando TWAR y TWCR han inicializado, el TWI espera hasta que se aborda en su propio
direccin del esclavo (o la direccin de llamada general si est habilitado), seguido por el bit de direccin de datos. Si el
direccin bit es "1" (lectura), el TWI funcionar en modo ST, de lo contrario se accede al modo SR. Despus
su propia direccin del esclavo y el bit de escritura se han recibido, la Bandera TWINT se establece y un vlido
cdigo de estado se puede leer desde TWSR. El cdigo de estado se utiliza para determinar el soft- apropiado
accin cermica. La accin correcta a desarrollar para cada cdigo de estado se detalla en Tabla 21-5.
El modo esclavo transmisor tambin se puede introducir si se pierde el arbitraje mientras que el TWI est en el
Modo maestro (ver estado 0xB0).

Si el bit TWEA est escrito a cero durante un traslado, el TWI transmitir el ltimo byte de la transfer. 0xC0 Estado o Estado 0xC8 se ingresarn, en funcin de si el receptor Maestro
transmite un NACK o ACK despus de que el byte final. El TWI se cambia al esclavo no se abordan
modo, y no har caso al Maestro si contina la transferencia. As, el receptor recibe Maestro
todos "1", como datos en serie. Estado 0xC8 se introduce si las demandas Mster bytes de datos adicionales (por
transmitir ACK), a pesar de que el esclavo ha transmitido el ltimo byte (TWEA cero y esperaring NACK del Maestro).

Mientras TWEA es cero, el TWI no responde a su propia direccin de esclavo. Sin embargo, el 2-wire
Serial Bus todava se supervisa y reconocimiento de direcciones puede reanudarse en cualquier momento mediante el
establecimiento TWEA.
Esto implica que el bit TWEA se puede utilizar para aislar temporalmente el TWI de la serie de 2 hilos
Bus.
En todos los modos de suspensin que no sean el modo de espera, el sistema de reloj a la IST est apagado. Si el TWEA
bit est establecido, la interfaz todava puede reconocer su propia direccin de esclavo o la direccin de llamada general por
utilizando el 2 hilos reloj de bus serie como fuente de reloj. La parte entonces se despertar de su sueo y
el TWI celebrar el reloj SCL ser baja durante el velatorio y hasta la bandera TWINT se borra
(Escribiendo a uno). Adems la transmisin de datos se lleva a cabo como normal, con los relojes AVR
funcionando de forma normal. Observe que si el AVR se ha configurado con un largo tiempo de puesta en marcha, la lnea SCL
puede
se llevar a cabo bajo durante un largo tiempo, el bloqueo de otras transmisiones de datos.
Tenga en cuenta que el 2 cables Serial Data Interface Registro - TWDR no refleja el ltimo byte presente
en el autobs cuando el despertar de estos modos de suspensin.

237
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 21-5.

Cdigos de estado para el modo Transmisor Esclavo

Cdigo de estado
(TWSR)
Estado del 2 cables Serial Bus
Precontador
y 2 cables Serial Interface Hardware
Bits
mercanca
son 0
0xA8

0xB0

0xB8

0xC0

0xC8

Respuesta Software de Aplicacin


Para TWCR
Hasta / desde TWDR

STA

STO

TWIN
T

TWE
La

Byte de datos de carga o

Byte de datos de carga

Arbitraje perdido en SLA + R / W como


Maestro; propio SLA + R ha sido
recibida; ACK ha sido devuelto

Byte de datos de carga o

Byte de datos de carga

Byte de datos en TWDR ha sido


transmitida; ACK ha sido
recibido

Byte de datos de carga o

Byte de datos de carga

Byte de datos en TWDR ha sido


transmitida; NO ACK ha sido
recibido

Ninguna accin o TWDR

Ninguna accin o TWDR

Ninguna accin o TWDR

Ninguna accin TWDR

Ninguna accin o TWDR

Ninguna accin o TWDR

Ninguna accin o TWDR

Ninguna accin TWDR

Propio SLA + R se ha recibido;


ACK ha sido devuelto

ltima byte de datos en TWDR ha sido


transmitida (TWEA = "0"); ACK
se ha recibido

Siguiente medida tomada por TWI Hardware


ltimo byte de datos se transmitirn y NO ACK debe
ser recibido
Byte de datos se transmitirn y ACK debe ser rerecibida
ltimo byte de datos se transmitirn y NO ACK debe
ser recibido
Byte de datos se transmitirn y ACK debe ser rerecibida
ltimo byte de datos se transmitirn y NO ACK debe
ser recibido
Byte de datos se transmitirn y ACK debe ser rerecibida
Al cambiar a la modalidad de esclavo no se abordan;
hay un reconocimiento de la propia SLA o GCA
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1"
Al cambiar a la modalidad de esclavo no se abordan;
hay un reconocimiento de la propia SLA o GCA;
se transmitir una condicin de START cuando el autobs
se convierte en gratuita
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1";
se transmitir una condicin de START cuando el autobs
se convierte en gratuita

Al cambiar a la modalidad de esclavo no se abordan;


hay un reconocimiento de la propia SLA o GCA
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1"
Al cambiar a la modalidad de esclavo no se abordan;
hay un reconocimiento de la propia SLA o GCA;
se transmitir una condicin de START cuando el autobs
se convierte en gratuita
Al cambiar a la modalidad de esclavo no se abordan;
propio SLA ser reconocida;
GCA se reconocer si TWGCE = "1";
se transmitir una condicin de START cuando el autobs
se convierte en gratuita

238
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-18. Formatos y Estados en el modo Transmisor Esclavo
La recepcin de la propia
direccin del esclavo y uno o
ms bytes de datos

SLA

La

DATOS

$ A8

Arbitraje perdi como maestro


y abordado como esclavo

La

DATOS

$ B8

La

PoS

$ C0

La

$ B0

ltimo byte de datos transmitida.


Cambiado a no abordado
esclavo (TWEA = '0')

La

Todos los 1 de
PoS

$ C8

DATOS

De maestro a esclavo

De esclavo a maestro

21.7.5

Cualquier nmero de bytes de datos


y sus asociados reconocen los bits

La

Este nmero (contenida en TWSR) corresponde


a un estado definido de la 2-Wire Serial Bus. La
bits de prescaler son cero o enmascarados a cero

Varios Estados
Existen dos cdigos de estado que no corresponden a un estado definido TWI, ver Tabla 21-6.
Estado 0xF8 indica que no hay informacin relevante est disponible porque la bandera no es TWINT
establecer. Esto ocurre entre otros estados, y cuando el TWI no est involucrado en la transferencia serie.
Status 0x00 indica que ha ocurrido un error de bus durante una transferencia Serial Bus de 2 hilos. Un autobs
se produce un error cuando una condicin START o STOP se produce en una posicin ilegal en el marco de formato.
Ejemplos de tales posiciones son ilegales durante la transferencia serie de un byte de direccin, un byte de datos,
o un bit de reconocimiento. Cuando se produce un error de bus, TWINT se establece. Para recuperarse de un error de bus, la
Bandera TWSTO debe establecer y TWINT debe ser aprobado por escrito un uno lgico para l. Esto hace que el
TWI para entrar en el modo esclavo no se aborda y para borrar la bandera TWSTO (no hay otros bits en
TWCR son afectados). Las lneas SDA y SCL son liberados, y ninguna condicin de parada
transmitida.

Tabla 21-6.

Varios Estados

Cdigo de estado
(TWSR)
Precontador Bits
son 0

Respuesta Software de Aplicacin


Estado del 2 cables Serial Bus
y 2 cables de interfaz Serial
Hardware

Para TWCR
Hasta / desde TWDR

0xF8

No hay informacin de estado relevanteNinguna accin TWDR


disponible; TWINT = "0"

0x00

Error de bus debido a un ilegal


Arranque o parada

21.7.6

STA

Ninguna accin TWDR

STO

TWIN
T

TWE
La

Ninguna accin TWCR


0

Siguiente medida tomada por TWI Hardware


Esperar o proceder transferencia de corriente

Slo el hardware interno se ve afectada, sin condicin de STOP


cin se enva al bus. En todos los casos, se libera el bus
y TWSTO se borra.

Combinando varios modos TWI


En algunos casos, varios modos de inmersin recproca se deben combinar con el fin de completar la accin deseada.
Consideremos por ejemplo la lectura de datos a partir de una EEPROM serie. Normalmente, esta transferencia implica
los siguientes pasos:
1. La transferencia debe ser iniciado.
2. La EEPROM debe ser instruido qu lugar se debe leer.
3. La lectura debe realizarse.
4. La transferencia debe ser terminado.

239
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tenga en cuenta que los datos se transmiten tanto del maestro al esclavo y viceversa. El Maestro debe instruir
Esclavo qu ubicacin que quiere leer, lo que requiere el uso del modo MT. Posteriormente, los datos
debe leerse desde el esclavo, lo que implica el uso del modo de MR. Por lo tanto, la direccin de transferencia debe
ser cambiado. El maestro debe mantener el control del bus durante todos estos pasos y los pasos
debe llevarse a cabo como una operacin Atomical. Si este principio es violado en un multi master ma
tem, otro Maestro puede alterar el puntero de datos en la EEPROM entre los pasos 2 y 3, y el
Maestro leer la localizacin de datos incorrecto. Tal cambio en la direccin de transferencia se lleva a cabo
transmitir un START REPETIDA entre la transmisin del byte y recepcin direccin
de los datos. Despus de un comienzo REPETIDA, el Maestro mantiene la propiedad del autobs. La siguiente
figura muestra el flujo en esta transferencia.

Figura 21-19. Combinando varios modos de inmersin recproca acceder a una EEPROM serial
Transmisor Maestro

SLA + W

La

DIRECCIN

S = START

La

Rs

SLA + R

La

DATOS

Rs = START REPETIDA

Transmisin del maestro al esclavo

21.8

Receptor Maestro

La

P = PARO

Transmitido de esclavo a maestro

Sistemas Multi-Master y Arbitraje


Si hay varios maestros conectados al mismo bus, las transmisiones pueden iniciarse simultneaormente por uno o ms de ellos. El estndar TWI asegura que este tipo de situaciones se manejan en
de tal manera que uno de los maestros se les permitir continuar con la transferencia, y que no hay datos
se pierde en el proceso. Un ejemplo de una situacin de arbitraje se representa a continuacin, donde dos
maestros estn tratando de transmitir datos a un receptor Esclavo.

Figura 21-20. Un ejemplo de Arbitraje


VCC

El dispositivo 1
MAESTRO
TRANSMISOR

El dispositivo 2
MAESTRO
TRANSMISOR

Dispositivo 3
ESCLAVO
RECEPTOR

........

Dispositivo n

R1

R2

SDA

SCL

Varios escenarios diferentes pueden surgir durante el arbitraje, tal como se describe a continuacin:
Dos o ms maestros estn realizando comunicacin idnticos con el mismo esclavo. En este
caso, ni el esclavo ni ninguno de los maestros sabrn sobre la contencin de bus.
Dos o ms maestros estn accediendo al mismo esclavo con diferentes datos o direccin bits. En este
caso, el arbitraje se producir, ya sea en el / bit lectura o de escritura en los bits de datos. Los maestros que intentan
a la salida de un uno en SDA mientras que otro maestro emite un cero perdern el arbitraje. Perder
maestros pasarn a modo esclavo no se abordan o esperar hasta que el autobs es gratuito y transmitir una nueva
EMPIEZA A condicin, dependiendo de la accin de software de aplicacin.

240
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Dos o ms maestros tienen acceso a diferentes esclavos. En este caso, el arbitraje se producir en el
Bits de SLA. Maestros tratan de salida de un ataque SDA mientras que otro maestro emite un cero perder
el arbitraje. Masters perdiendo arbitraje de SLA se cambiar al modo Slave para comprobar si son
siendo dirigida por el Maestro ganar. Si abordado, van a cambiar al modo de SR o ST,
dependiendo del valor del bit / lectura y escritura. Si no se abordan, lo harn
cambiar al modo Slave no se abordan o esperar hasta que el autobs es gratuito y transmitir un nuevo START
condicin, dependiendo de la accin software de aplicacin.

Esto se resume en Figura 21-21. Los valores de estado posibles se dan en crculos.
Figura 21-21. Cdigos de estado que pueda causar Arbitraje
INICIO

SLA

Datos

Arbitraje pierde en SLA

Propio
Direccin / Convocatoria general
recibido

DETNGASE

Arbitraje pierde en Data

No

38

Bus TWI se dar a conocer y se introducirn ms no en modo esclavo direccionado


Una condicin START ser transmitido cuando el autobs llega a ser libre

Direccin

Escribir

68/78

Leer
B0

21.9

Byte de datos ser recibida y NO ACK ser devuelto


Byte de datos ser recibida y ACK ser devuelto

ltimo byte de datos se transmitirn y NO ACK debe ser recibido


Byte de datos se transmitirn y ACK debe ser recibido

Registro Descripcin

21.9.1

TWBR - TWI Bit Rate Registro


Bit
(0xB8)
Lectura / Escritura
Valor inicial

TWBR7

TWBR6

TWBR5

TWBR4

TWBR3

TWBR2

TWBR1

TWBR0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

TWBR

Los bits 7..0 - TWI Bit Rate Registro


TWBR selecciona el factor de divisin para el generador de tasa de bits. El generador de tasa de bits es una frecuencia
divisor que genera la frecuencia de reloj SCL en los modos Maestro. Ver "Bit Rate Generador
Unidad "en la pgina 221 para el clculo de las tasas de bits.

21.9.2

TWCR - TWI Registro de Control


Bit
(0xBC)
Lectura / Escritura
Valor inicial

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

R/W

R/W

R/W

R/W

R/W

R/W

TWCR

El TWCR se utiliza para controlar el funcionamiento de la TWI. Se utiliza para permitir que el TWI, para iniciar una
Acceso Maestro mediante la aplicacin de una condicin START para el autobs, para generar un receptor reconoce,
para generar una condicin de parada, y para controlar detencin del autobs, mientras que los datos se escriben en el
bus se escriben en el TWDR. Tambin indica una colisin de escritura, si los datos se intenta escribir en
TWDR mientras que el registro es inaccesible.

241
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Bit 7 - TWINT: TWI interrupcin Bandera
Este bit es activado por hardware cuando el TWI ha terminado su trabajo actual y espera la aplicacin
respuesta software. Si el bit I en SREG y TWIE en TWCR se establece, el MCU saltar a la
TWI vector de interrupcin. Mientras que la bandera TWINT se establece, se estira el perodo de baja SCL. El TWINT
Bandera debe ser despejado por el software escribiendo un uno lgico para l. Tenga en cuenta que esta bandera no est automcamente despejado por hardware cuando se ejecuta la rutina de interrupcin. Tambin tenga en cuenta que la limpieza de esta
bandera
se inicia la operacin de la IST, por lo que todos los accesos a la IST registro de direcciones (TWAR), TWI Status Registro (TWSR), y TWI registro de datos (TWDR) deben estar completos antes de borrar esta
bandera.

Bit 6 - TWEA: TWI Activar bit de reconocimiento


El bit TWEA controla la generacin del acuse de recibo de pulso. Si el bit se escribe en TWEA
uno, se genera el pulso ACK en el bus TWI si se cumplen las siguientes condiciones:
1. propia direccin de esclavo del dispositivo se ha recibido.
2. Una llamada general ha sido recibido, mientras que el bit TWGCE en el TWAR se establece.
3. Un byte de datos se ha recibido en el receptor Maestro o el modo receptor Esclavo.
Al escribir el bit TWEA a cero, el dispositivo puede ser prcticamente desconectado de la serie de 2 hilos
Bus temporalmente. Reconocimiento de direcciones se puede reanudar entonces escribiendo el bit TWEA a uno
de nuevo.
Bit 5 - TWSTA: TWI START Condicin Bit
La aplicacin escribe el bit TWSTA a uno cuando se desea llegar a ser un maestro en el 2 hilos
Serial Bus. Los controles de hardware TWI si el bus est disponible, y genera una condicin de START
en el autobs si est libre. Sin embargo, si el autobs no es libre, el TWI espera hasta que una condicin de parada
detectado, y genera una nueva condicin START para reivindicar la condicin Maestro autobs. TWSTA
deben ser aprobados por el software cuando la condicin START ha sido transmitida.

Bit 4 - TWSTO: TWI PARADA Condicin Bit


Escribiendo el bit TWSTO a uno en el modo Maestro generar una condicin de STOP en el 2 hilos
Serial Bus. Cuando la condicin de STOP se ejecuta en el autobs, el bit TWSTO se borra autoticamente. En el modo esclavo, establecer el bit TWSTO se puede utilizar para recuperarse de una condicin de error.
Esto no va a generar una condicin de parada, pero el TWI devuelve a un sin resolverse bien definido
Modo esclavo y libera los SCL y SDA lneas a un estado de alta impedancia.

Bit 3 - TWWC: TWI Escriba Bandera Collision


El bit TWWC se establece cuando se intenta escribir en el registro de datos TWI - TWDR cuando TWINT es
bajo. Esta bandera es despejado por escrito al Registro TWDR cuando TWINT es alta.

Bit 2 - TWEN: TWI Activar Bit


El bit TWEN permite la operacin TWI y activa la interfaz TWI. Cuando TWEN se escribe
uno, el TWI tiene control sobre los pines de E / S conectados a los pines SCL y SDA, lo que permite la
limitador y del filtro de pico la velocidad de respuesta. Si este bit est escrito en cero, el TWI se apaga y todo TWI
transmisiones se terminan, independientemente de cualquier operacin en curso.

Bit 1 - Res: Reservado Bit


Este bit es un bit reservado y siempre lea como cero.

242
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Bit 0 - TWIE: TWI habilitacin de interrupcin


Cuando este bit se escribe en uno, y el bit I en SREG se establece, la solicitud de interrupcin TWI ser activada durante el tiempo que la bandera TWINT es alta.

21.9.3

TWSR - Estado TWI Registro


Bit

TWS7

TWS6

TWS5

TWS4

TWS3

TWPS1

TWPS0

Lectura / Escritura

R/W

R/W

Valor inicial

(0xB9)

TWSR

Los bits 7..3 - TWS: TWI de estado


Estos 5 bits reflejan el estado de la lgica TWI y la 2-wire bus serie. El estatus diferente
cdigos se describen ms adelante en esta seccin. Tenga en cuenta que el valor ledo de TWSR contiene tanto la
Valor de estado de 5 bits y el valor pre-escalador de 2 bits. El diseador de la aplicacin debe enmascarar la presencia
caler los bits a cero cuando la comprobacin de los bits de estado. Esto hace que la comprobacin de estado independiente de
ajuste prescaler. Este enfoque se utiliza en esta hoja de datos, a menos que se indique lo contrario.

Bit 2 - Res: Reservado Bit


Este bit est reservado y siempre lea como cero.
Los bits 1..0 - TWPS: TWI de divisor Bits
Estos bits pueden ser ledos y escritos, y controlan el prescaler tasa de bits.
Tabla 21-7.

TWI Bit Rate Precontador

TWPS1

TWPS0

Precontador Valor

16

64

Para calcular las tasas de bits, consulte "Bit Rate Generator Unit" en la pgina 221. El valor de TWPS1..0 es
utilizado en la ecuacin.
21.9.4

TWDR - TWI Registro de Datos


Bit
(0xBB)
Lectura / Escritura
Valor inicial

TWD7

TWD6

TWD5

TWD4

TWD3

TWD2

TWD1

TWD0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

TWDR

En modo de transmisin, TWDR contiene el siguiente byte a transmitir. En el modo de recepcin, el TWDR
Contiene el ltimo byte recibido. Es modificable mientras que el TWI no est en el proceso de cambio de un byte.
Esto ocurre cuando el indicador de interrupcin TWI (TWINT) es fijado por hardware. Tenga en cuenta que el Regis- datos
ter no puede ser inicializado por el usuario antes de que ocurra la primera interrupcin. Los datos de restos TWDR
estable mientras se establece TWINT. Si bien los datos se desplaza hacia fuera, los datos en el bus es a la vez
desplazado en. TWDR siempre contiene el ltimo byte en el bus, excepto despus de un despertar de
un modo de espera por el TWI interrumpir. En este caso, el contenido de TWDR no est definido. En el caso

243
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


de un arbitraje de bus perdido, no se pierden datos en la transicin de maestro a esclavo. Manejo de la
ACK bit es controlado automticamente por la lgica TWI, la CPU no puede acceder al bit ACK directamente.
Los bits 7..0 - TWD: TWI registro de datos
Estos ocho bits constituyen el siguiente byte de datos a transmitir, o el ltimo byte de datos recibido
en el 2 cables Serial Bus.

21.9.5

TWAR - TWI (Esclavo) Direccin Registro


Bit
(0xBA)
Lectura / Escritura
Valor inicial

TWA6

TWA5

TWA4

TWA3

TWA2

TWA1

TWA0

TWGCE

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

TWAR

El TWAR debe cargarse con la direccin de esclavo de 7 bits (en los siete bits ms significativos de
TWAR) a los que el TWI responder cuando se programa como un transmisor o receptor Esclavo,
y no es necesario en los modos Maestro. En sistemas maestros mltiples, TWAR debe configurarse en maestros
que pueden ser abordados como esclavos por otros Maestros.
El LSB de TWAR se utiliza para permitir el reconocimiento de la direccin de llamada general (0x00). Hay una
comparador electrnico asociada que busca la direccin del esclavo (o llamada general direccin si
habilitado) en la direccin de serie recibido. Si se encuentra una coincidencia, se genera una solicitud de interrupcin.
Los bits 7..1 - TWA: TWI (Esclavo) Direccin del Registro
Estos siete bits constituyen la direccin del esclavo de la unidad TWI.
Bit 0 - TWGCE: TWI general de reconocimiento de llamadas Activar Bit
Si se establece, este bit permite el reconocimiento de una convocatoria general dado el 2 cables Serial Bus.
21.9.6

TWAMR - TWI (Esclavo) Mscara de Registro


Bit

Lectura / Escritura
Valor inicial

TWAM [6: 0]

(0xBD)

R/W

R/W

R/W

R/W

R/W

R/W

R/W

TWAMR

Los bits 7..1 - Twam: TWI Mscara Direccin


El TWAMR se puede cargar con una mscara Salve Direccin 7 bits. Cada uno de los bits en TWAMR puede
mscara (deshabilitar) los bits de direccin correspondientes en el TWI direccin de registro (TWAR). Si la mscara
bit se pone a uno, entonces la lgica de coincidencia de direccin ignora la comparacin entre el entrante
bit de direccin y el bit correspondiente en TWAR. Figura 21-22 se muestra la lgica de coincidencia de direccin en
detalle.

244
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 21-22. TWI Direccin Partido Lgica, Diagrama de bloques

TWAR0
Direccin
Partido

Direccin
Bit 0

TWAMR0
Direccin de bit Comparador 0

Direccin Comparador Bit 6..1

Bit 0 - Res: Reservado Bit


Este bit es un bit no utilizado en la ATmega48PA / 88PA / 168PA / 328P, y siempre lea como cero.

245
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

22. Comparador analgico


22.1

Visin de conjunto
El comparador analgico se comparan los valores de entrada en la AIN0 pin positivo y el pin negativo
AIN1. Cuando el voltaje en el pin AIN0 positivo es mayor que el voltaje en el pin negativo
AIN1, la salida de comparador analgico, ACO, se establece. La salida del comparador se puede configurar para activar
la funcin de captura de entrada Temporizador / Counter1. Adems, el comparador puede desencadenar una separada
interrumpir, exclusiva al Comparador analgico. El usuario puede seleccionar Disparan interrupciones en comlugar de salida parator, otoo o de palanca. Un diagrama de bloques del comparador y su lgica circundante es
se muestra en la Figura 22-1.

El bit de energa Reduccin de ADC, PRADC, en "Minimizar el consumo de energa" en la pgina 42 necesario
estar deshabilitado escribiendo un cero lgico para ser capaz de utilizar el MUX de entrada ADC.
Figura 22-1. Comparador Diagrama de bloques analgicos(2)
BANDGAP
REFERENCIA
ACBG

ACME
ADEN

MULTIPLEXER ADC
SALIDA (1)

Notas:

22.2

1. Ver Tabla 22-1 en la pgina 247.


2. Consulte Figura 1-1 en la pgina 2 y Tabla 13-9 en la pgina 88 por pin analgico Comparador
colocacin.

Comparador Analgico multiplexado entrada


Es posible seleccionar cualquiera de los pines ADC7..0 para reemplazar la entrada negativa de la Comisin analgica
parator. El multiplexor ADC se utiliza para seleccionar esta entrada, y, en consecuencia, el ADC debe ser
apagado para utilizar esta caracterstica. Si Comparador multiplexor analgico Enable bit (ACME en
ADCSRB) se establece y el ADC est apagado (ADEN en ADCSRA es cero), MUX2..0 en ADMUX
seleccionar el pin de entrada para reemplazar la entrada negativa al comparador analgico, como se muestra en Mesa
22-1. Si ACME se borra o ADEN se establece, AIN1 se aplica a la entrada negativa a la analgica
Comparador

246
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


.
Tabla 22-1.

22.3

Comparador Analgico multiplexado entrada

ACME

ADEN

MUX2..0

Comparador Analgico entrada negativa

xxx

AIN1

xxx

AIN1

000

ADC0

001

ADC1

010

ADC2

011

ADC3

100

ADC4

101

ADC5

110

ADC6

111

ADC7

Registro Descripcin

22.3.1

ADCSRB - Control ADC y Registro de Estado B


Bit

(0x7B)

ACME

ADTS2

ADTS1

ADTS0

Lectura / Escritura

R/W

R/W

R/W

R/W

Valor inicial

ADCSRB

Bit 6 - ACME: Comparador multiplexor analgico Activar


Cuando este bit se escribe uno lgico y el ADC est apagado (ADEN en ADCSRA es cero), el
Multiplexor ADC selecciona la entrada negativa del comparador analgico. Cuando se escribe este bit
cero lgico, AIN1 se aplica a la entrada negativa del comparador analgico. Para una detallada
Descripcin de este bit, consulte "Entrada analgica Comparador multiplexado" en la pgina 246.

22.3.2

ACSR - Comparador Analgico Control y Registro de Estado


Bit

0x30 (0x50)

ACD

ACBG

ACO

ACI

ACIE

ACIC

ACIS1

ACIS0

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

R/W

N/A

Valor inicial

ACSR

Bit 7 - ACD: Comparador Analgico Desactivar


Cuando este bit se escribe uno lgico, la alimentacin del comparador analgico est apagado. Este bit
se puede establecer en cualquier momento para apagar el comparador analgico. Esto reducir el consumo de energa en
El modo activo y de reposo. Al cambiar el bit ACD, Comparador de interrupcin analgica debe ser
desactivado desactivando el bit ACIE en ACSR. De lo contrario, una interrupcin puede ocurrir cuando el bit es
cambiado.

Bit 6 - ACBG: Comparador Analgico Bandgap Select


Cuando se establece este bit, una tensin de referencia de banda prohibida fijo sustituye a la entrada positiva a la analgica
Comparador. Cuando se borra este bit, AIN0 se aplica a la entrada positiva del Al comparar analgica
ator. Cuando se utiliza el referance banda prohibida como entrada al Comparador analgico, tardar un

247
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


cierto tiempo para la tensin se estabilice. Si no estabilizado, la primera conversin puede dar un mal
valor. Ver "Tensin de referencia interna" en la pgina 49
Bit 5 - ACO: Comparador analgico de salida
La salida del comparador analgico se sincroniza y luego conectado directamente a ACO. La
la sincronizacin introduce un retardo de 1 - 2 ciclos de reloj.

Bit 4 - ACI: analgico Comparador de interrupcin de la bandera


Este bit es activado por hardware cuando un evento de salida del comparador activa el modo de interrupcin definido
por ACIS1 y ACIS0. La rutina de interrupcin comparador analgico se ejecuta si el bit est establecido ACIE
y la I-bit en SREG se establece. ACI es despejado por hardware al ejecutar la interfaz correspondiente
RUPT manejo de vectores. Alternativamente, ACI se borra escribiendo un uno lgico a la bandera.

Bit 3 - ACIE: Comparador Analgico habilitacin de interrupcin


Cuando el bit ACIE se escribe uno lgico y el bit I en el Registro de Estado est establecido, la Comisin analgica
interrupcin parator se activa. Cuando se escribe cero lgico, la interrupcin est desactivada.

Bit 2 - ACIC: Comparador analgico de captura de entrada Enable


Cuando se escribe un uno lgico, este bit se habilita la funcin de captura de entrada en el Timer / Counter1 para ser disparada
Amenazadas por el comparador analgico. La salida del comparador es en este caso directamente conectado a la
captura de la entrada lgica front-end, lo que hace el comparador utilizar el cancelador de ruido y el borde de seleccin
caractersticas de la captura de entrada Temporizador / Counter1 interrumpen. Cuando se escribe un cero lgico, no hay conexin
entre Comparador analgico y la funcin de captura de entrada existe. Para hacer que el comparador
provocar la interrupcin de captura de entrada Temporizador / Counter1, el bit ICIE1 de la mscara de interrupcin de
temporizador
Registro (TIMSK1) debe ajustarse.

Los bits 1, 0 - ACIS1, ACIS0: Modo de interrupcin comparador analgico Seleccione


Estos bits determinan acontecimientos que comparadores que desencadenan la interrupcin comparador analgico. La
diferentes ajustes se muestran en Tabla 22-2.

Tabla 22-2.

Ajustes ACIS1 / ACIS0

ACIS1

ACIS0

Modo de interrupcin

Comparador de interrupcin en Conmutar salida.

Reservado

Comparador de interrupcin en el flanco descendente de salida.

Comparador de interrupcin en el flanco ascendente de salida.

Al cambiar los bits ACIS1 / ACIS0, Comparador de interrupcin analgica debe ser desactivado
limpiar su habilitacin de interrupcin poco en el Registro ACSR. De lo contrario, una interrupcin puede ocurrir cuando el
los bits se cambian.

248
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

22.3.3

DIDR1 - Entrada digital Desactivar Registro 1


Bit

(0x7F)

AIN1D

AIN0D

Lectura / Escritura

R/W

R/W

Valor inicial

DIDR1

Bit 7..2 - Res: Bits Reservados


Estos bits son bits no utilizados en el ATmega48PA / 88PA / 168PA / 328P, y siempre que se lea como
cero.

El bit 1, 0 - AIN1D, AIN0D: AIN1, AIN0 digital Desactivar entrada


Cuando este bit se escribe uno lgico, el buffer de entrada digital en el AIN1 / 0 pin est deshabilitado. El diente
corres- PIN Registro poco siempre leer como cero cuando se establece este bit. Cuando una seal analgica es
aplicada a la AIN1 / 0 pin y la entrada digital de este perno no es necesario, este bit debe ser escrito
diez uno lgico para reducir el consumo de energa en el buffer de entrada digital.

249
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

23. analgico a digital


23.1

Caractersticas

23.2

10-bit Resolucin
0,5 LSB Integral No linealidad
2 LSB Absolute Accuracy
13-260 mS Tiempo de conversin
Hasta 76,9 ksps (Hasta 15 ksps en la Resolucin Mxima)
6 multiplexado simples canales de entrada de composicin
2 adicionales multiplexado simples canales de entrada Ended (TQFP y QFN / FML paquete solamente)
Sensor de temperatura del canal de entrada
Ajuste Izquierda opcional para ADC Resultado Lectura
0 - VCC ADC Rango de voltaje de entrada
Seleccionable 1.1V Voltaje de referencia ADC
Free Running o modo de conversin individual
Interrumpir el ADC conversin completa
Sleep Canceler Modo de ruido

Visin de conjunto
El ATmega48PA / 88PA / 168PA / 328P ofrece una aproximacin sucesiva ADC de 10 bits. La
ADC est conectado a un multiplexor analgico de 8 canales que permite que ocho de composicin nica tensin
entradas construidas a partir de los pines de puerto A. Las entradas de un solo extremo de tensin se refieren a 0V (GND).
El ADC contiene un circuito de muestreo y retencin que asegura que el voltaje de entrada al ADC es
mantiene a un nivel constante durante la conversin. Un diagrama de bloques del ADC se muestra en Figura 23-1
en la pgina 251.
El ADC tiene un pasador tensin de alimentacin analgica separada, AVCC. AVCC no debe diferir en ms de 0,3 V
de VCC. Ver el prrafo "ADC Canceler ruido" en la pgina 256 sobre cmo conectar este pin.
Tensiones de referencia interna de 1.1V nominalmente o AVCC se proporcionan en el chip. La referencia de tensin
ENCE podr estar desacoplado externamente en el pin AREF por un condensador para un mejor rendimiento de ruido.
El bit de energa Reduccin de ADC, PRADC, en "Minimizar el consumo de energa" en la pgina 42 necesario
desactivado escribiendo un cero lgico para que el ADC.
El ADC convierte una tensin de entrada analgica a un valor digital de 10 bits a travs de sucesivas aproximado
macin. El valor mnimo representa GND y el valor mximo representa el voltaje en
el pasador AREF menos 1 LSB. Opcionalmente, AVCC o un voltaje interno de referencia 1.1V pueden ser conconectado al pin AREF por escrito a los bits REFSn en el Registro ADMUX. El interior
referencia de tensin puede, pues, ser desacoplado por un condensador externo en el pin AREF mejorar
inmunidad al ruido.

250
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 23-1. Analgico a digital del convertidor de bloques esquemtico de funcionamiento,
CONVERSIN ADC
COMPLETA IRQ

8-BIT BUS DE DATOS


ADIFADIE

15
MULTIPLEXER ADC
SELECT (ADMUX)
REFS1

REFS0Adlar

MUX3MUX2MUX1MUX0

0
ADC DATOS REGISTRO
(ADCH / ADCL)

ADC CTRL. Y ESTADO


REGISTRO (ADCSRA)
ADENADSCADFR
ADIF

ADPS2ADPS1ADPS0
ADC [9: 0]

MUX DECODIFICADOR
Prescaler
SELECCIN DE CANAL

LGICA DE CONVERSIN
AVCC

1.1V INTERNO
REFERENCIA

Sample & Hold


COMPARATIVA

AREF

10-BIT DAC

TEMPERATURA
SENSOR
GND

BANDGAP
REFERENCIA
ADC7
ADC6

ENTRADA
MUX

MULTIPLEXER ADC
SALIDA

ADC5
ADC4
ADC3
ADC2
ADC1
ADC0

El canal de entrada analgica se selecciona por escrito a los bits MUX en ADMUX. Cualquiera de la entrada del ADC
pasadores, as como GND y una referencia de tensin de banda prohibida fija, se pueden seleccionar como un solo extremo
entradas a la ADC. El ADC se habilita estableciendo el ADC Enable bit, ADEN en ADCSRA. Tensin
selecciones de referencia la edad y de los canales de entrada no entrarn en vigor hasta que ADEN est establecido. El ADC
no consume energa cuando ADEN est desactivada, por lo que se recomienda apagar el ADC
antes de entrar en los modos de suspensin de ahorro de energa.

El ADC genera un resultado de 10 bits que se presenta en el ADC registros de datos, y ADCH
ADCL. Por defecto, el resultado se presenta ajustado a la derecha, pero opcionalmente se puede presentar izquierda
ajustado al establecer el bit Adlar en ADMUX.
Si el resultado se deja ajustado y no ms de 8 bits se requiere precisin, es suficiente para leer
ADCH. De lo contrario, ADCL debe leerse primero, a continuacin, ADCH, para asegurar que el contenido de los datos
Registros pertenece a la misma conversin. Una vez ADCL se lee, el acceso a registros de datos ADC
est bloqueada. Esto significa que si ADCL se ha ledo, y una conversin completa antes ADCH es

251
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


leer, ni registro se actualiza y el resultado de la conversin se pierde. Cuando se lee ADCH,
El acceso a la ADC ADCH y ADCL Registros se vuelve a activar.
El ADC tiene su propia interrupcin que puede ser activado cuando una conversin completa. Cuando ADC
el acceso a los registros de datos est prohibido entre la lectura de ADCH y ADCL, la interrupcin
activar incluso si el resultado se pierde.

23.3

Inicio de una conversin


Una sola conversin se inicia mediante la desactivacin del bit de energa Reduccin de ADC, PRADC, en "Minimizando
Consumo de energa "en la pgina 42 escribiendo un cero lgico a ella y escribiendo un uno lgico para la
ADC Iniciar conversin poco, ADSC. Este bit se mantiene alta, siempre y cuando la conversin est en curso
y se borrar por el hardware cuando se completa la conversin. Si un canal de datos diferente es
seleccionar mientras una conversin est en curso, el ADC terminar la conversin actual antes de performando el cambio de canal.

Alternativamente, una conversin puede ser activado automticamente por diversas fuentes. Auto Activacin es
habilitado mediante el establecimiento de la ADC Auto disparador Activar bit, ADATE en ADCSRA. La fuente de disparo es
seleccionado mediante el establecimiento de los bits ADC Gatillo Select, ADTS en ADCSRB (Ver descripcin de las ADTS
bits para una lista de las fuentes de disparo). Cuando un flanco positivo se produce en la seal de disparo seleccionado,
el prescaler ADC se restablece y se inicia una conversin. Esto proporciona un mtodo de iniciar conversiones a intervalos fijos. Si la seal de disparo todava se establece cuando la conversin se completa, una nueva
no se iniciar la conversin. Si otro flanco positivo se produce en la seal de disparo durante la conversin, se ignorar el borde. Tenga en cuenta que una bandera de interrupcin se establecer aun cuando el especfico
interrupcin est deshabilitado o la interrupcin Global Enable bit en SREG se borra. Una conversin puede por lo tanto
desencadenarse sin causar una interrupcin. Sin embargo, la bandera de interrupcin debe borrarse con el fin de
desencadenar una nueva conversin en el prximo evento de interrupcin.

Figura 23-2. ADC Auto Trigger Logic


ADTS [2: 0]
Prescaler

INICIO
ADIF

CLKADC

ADATE

FUENTE 1
.
.
.
.
FUENTE n

CONVERSIN
LGICA
EDGE
DETECTOR

ADSC

Uso de la interrupcin de la bandera de ADC como fuente de disparo hace que el ADC iniciar una nueva conversin tan pronto
como la conversin en curso ha terminado. El ADC entonces funciona en modo de funcionamiento libre, conconstantemente el muestreo y la actualizacin del registro de datos ADC. La primera conversin debe ser iniciado por
escribiendo un uno lgico en el bit ADSC en ADCSRA. En este modo el ADC llevar a cabo sucesiva
conversiones independientemente de si la interrupcin de la bandera de ADC, ADIF se borra o no.

252
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Si el disparo automtico est activado, las conversiones individuales se pueden iniciar escribiendo ADSC en ADCSRA a
uno. ADSC tambin se puede utilizar para determinar si una conversin est en curso. El bit de ADSC ser
leer como uno durante una conversin, independientemente de cmo se inici la conversin.

23.4

Preescala y Conversin Timing


Figura 23-3. ADC Precontador
ADEN
INICIO

Reajustar
7-BIT ADC prescaler
CK
CK / 128
32 / 64
CK / CK
16 / CK
CK / CK
2 / CK
4 /8

ADPS0
ADPS1
ADPS2

ADC RELOJ FUENTE

Por defecto, el circuito de aproximacin sucesiva requiere una frecuencia de reloj de entrada entre 50
kHz y 200 kHz para obtener la mxima resolucin. Si se necesita una resolucin inferior a 10 bits, la
Entrada de frecuencia de reloj a la ADC puede ser superior a 200 kHz para obtener una frecuencia de muestreo superior.
El mdulo ADC contiene un pre-escalador, que genera una frecuencia de reloj ADC aceptable
de cualquier frecuencia de la CPU por encima de 100 kHz. El preescala se establece por los bits ADPS en ADCSRA.
El prescaler empieza a contar desde el momento en que el ADC se enciende activando el bit ADEN
en ADCSRA. El pre-escalador sigue funcionando durante el tiempo que el bit ADEN est establecido, y es continuamente
reajustar cuando ADEN es baja.

Cuando se inicia una sola conversin ended activando el bit ADSC en ADCSRA, la conversin
comienza en el siguiente flanco ascendente del ciclo de reloj ADC.
Una conversin normal tarda 13 ciclos de reloj ADC. La primera conversin despus de la ADC se enciende
en (ADEN en ADCSRA est establecido) toma 25 ciclos de reloj ADC para inicializar los circuitos analgicos.
Cuando se utiliza la tensin de referencia de banda prohibida como entrada al ADC, tomar un cierto tiempo para
la tensin se estabilice. Si no estabilizado, el primer valor ledo despus de la primera conversin puede ser
mal.
La muestra y retencin real se lleva a cabo ciclos de reloj de 1,5 ADC despus del inicio de una conversacin normal,
Sion y 13.5 de reloj ADC ciclos despus del inicio de una primera conversin. Cuando una conversin es
completa, el resultado se escribe en el registros de datos ADC, y ADIF se establece. En Conversin Individual
modo, ADSC se borra simultneamente. El software puede entonces establecer ADSC de nuevo, y un nuevo
la conversin se iniciar en la primera ascendente de reloj ADC.

Cuando se utiliza el disparo automtico, el pre-escalador se restablece cuando se produce el evento de disparo. Esto asegura
un retardo fijo desde el evento de disparo para el comienzo de la conversin. En este modo, la muestra y retencin
tiene lugar dos ciclos de reloj ADC despus del flanco ascendente de la seal de fuente de disparo. Tres Adems
ciclos de reloj de la CPU cional se utilizan para la lgica de sincronizacin.

253
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


En el modo de funcionamiento libre, una nueva conversin se iniciar inmediatamente despus de la conversin comPletes, mientras ADSC sigue siendo alta. Para un resumen de los tiempos de conversin, consulte Tabla 23-1 en la pgina
255.

Figura 23-4. ADC Cronograma, primera conversin (conversin del modo individual)
Siguiente
Conversin

Primera conversin

Nmero Ciclo

12

13

14

15

16

17

18

19

20

21

22

23

24

25

ADC Reloj

ADEN

ADSC

ADIF
Regstrate y MSB de Resultado

ADCH

LSB de Resultado

ADCL

MUX y REFS
Actualizacin

Conversin
Completo

Sample & Hold

MUX y REFS
Actualizacin

Figura 23-5. ADC Cronograma, Conversin Individual


Una conversin

Nmero Ciclo

Conversin Siguiente

10

11

12

13

ADC Reloj

ADSC

ADIF

ADCH

Regstrate y MSB de Resultado

ADCL

LSB de Resultado
Sample & Hold

Conversin
Completo

MUX y REFS
Actualizacin

MUX y REFS
Actualizacin

Figura 23-6. ADC Cronograma, Conversin causadas auto


Una conversin

Nmero Ciclo

Conversin Siguiente

10

11

12

13

ADC Reloj
Gatillo
Fuente

ADATE
ADIF

ADCH

Regstrate y MSB de Resultado

ADCL

LSB de Resultado

Sample &
Mantener

Precontador
Reajustar

Conversin
Completo

Precontador
Reajustar

MUX y REFS
Actualizacin

254
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 23-7. ADC Cronograma, gratuito Conversin Correr
Una conversin

Nmero Ciclo

11

12

Conversin Siguiente

13

ADC Reloj

ADSC

ADIF

ADCH

Regstrate y MSB de Resultado

ADCL

LSB de Resultado

Sample & Hold

Conversin
Completo

Tabla 23-1.

ADC Tiempo de conversin

Condicin

Sample & Hold


(Ciclos de inicio de conversin)

Tiempo de conversin
(Ciclos)

En primer lugar la conversin

13.5

25

Conversiones normales, terminaron sola

1.5

13

13.5

Conversiones con disparo automtico

23.5

MUX y REFS
Actualizacin

Cambio de canal o Seleccin de referencia


Los MUXn y REFS1: 0 bits en el Registro ADMUX son solo buffer a travs de un temporal
registrarse para que la CPU tiene acceso aleatorio. Esto asegura que los canales y referencia
seleccin slo tiene lugar en un punto seguro durante la conversin. El canal y referencia
la seleccin se actualiza continuamente hasta que se inicie una conversin. Una vez que comienza la conversin, la
canal y la seleccin de referencia est bloqueado para garantizar un tiempo de muestreo suficiente para la ADC. Conactualizacin continua se reanuda en el ltimo ciclo de reloj ADC antes de la conversin completa (ADIF en
ADCSRA est establecido). Tenga en cuenta que la conversin se inicia en el siguiente flanco ascendente de reloj ADC despus
ADSC est escrito. El usuario est por lo tanto aconsej no escribir nuevos valores de seleccin de canal o de referencia
a ADMUX hasta un ciclo de reloj ADC despus ADSC est escrito.

Si se utiliza el disparo automtico, la hora exacta del evento desencadenante puede ser indeterminista. Especial
se debe tener cuidado al actualizar el Registro ADMUX, con el fin de controlar que la conversin
se vern afectados por la nueva configuracin.
Si tanto ADATE y ADEN se escriben en uno, un evento de interrupcin puede ocurrir en cualquier momento. Si el
ADMUX Registro se cambia en este periodo, el usuario no puede saber si la siguiente conversin se basa
en la vieja o la nueva configuracin. ADMUX se puede actualizar de forma segura de las siguientes maneras:
a. Cuando se borra ADATE o ADEN.
b.

Durante la conversin, un ciclo de reloj ADC mnimo despus de que el evento de disparo.

c.

Despus de una conversin, antes de la bandera de interrupcin utiliza como fuente de disparo es despejado.

Al actualizar ADMUX en una de estas condiciones, los nuevos ajustes afectarn la prxima ADC
conversin.

255
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


23.5.1

Canales de entrada ADC


Al cambiar la seleccin de canales, el usuario debe seguir las siguientes pautas para garantizar
que se ha seleccionado el canal correcto:
En el modo de conversin individual, siempre seleccionar el canal antes de iniciar la conversin. El Chanseleccin nel se puede cambiar un ciclo de reloj ADC despus de escribir uno de ADSC. Sin embargo, el
mtodo ms sencillo es esperar a que la conversin para completar antes de cambiar la seleccin de canal.
En el modo de funcionamiento libre, siempre seleccionar el canal antes de comenzar la primera conversin. El Chanseleccin nel se puede cambiar un ciclo de reloj ADC despus de escribir uno de ADSC. Sin embargo, el
mtodo ms simple es esperar a que la primera conversin para completar y, a continuacin, cambiar el canal
seleccin. Desde la prxima conversin ya ha comenzado de forma automtica, el siguiente resultado reflejar
la seleccin de canal anterior. Conversiones posteriores reflejarn la nueva seleccin de canales.

23.5.2

ADC Referencia de tensin


El voltaje de referencia del ADC (VREF) indica el rango de conversin para el ADC. Solo
canales terminados que exceden VREF resultarn en cdigos cercanos a 0x3ff. VREF se puede seleccionar como
ya sea AVCC, referencia 1.1V interna, o pin AREF externo.
AVCC est conectado al ADC travs de un conmutador pasivo. La referencia 1.1V interna se genera
ATED de la referencia de banda prohibida interna (VBG) a travs de un amplificador interno. En cualquier caso, el
pin AREF externo est conectado directamente a la ADC, y la tensin de referencia se puede hacer
ms inmune al ruido mediante la conexin de un condensador entre el pin AREF y tierra. VREF puede
tambin debe medirse en el pin AREF con un voltmetro de alta impedancia. Tenga en cuenta que VREF es un alto
Impedancia de la fuente, y slo una carga capacitiva deben estar conectados en un sistema.

Si el usuario tiene una fuente de voltaje fijo conectado al pin AREF, el usuario no puede utilizar el otro
opciones de voltaje de referencia en la aplicacin, ya que se reducir a la tensin externa. Si no hay
tensin externa se aplica al pin AREF, el usuario puede cambiar entre AVCC y 1.1V como rencia
Seleccin de referencia. El primer resultado de la conversin ADC despus de cambiar la fuente de voltaje de referencia puede
es inexacta, y se advierte al usuario de desechar este resultado.

23.6

ADC Canceler Ruido


El ADC cuenta con un cancelador de ruido que permite la conversin durante el modo de reposo para reducir el ruido
inducida desde el ncleo de la CPU y otros perifricos de E / S. El cancelador de ruido se puede utilizar con ADC
Reduccin de ruido y la pantalla de inicio. Para hacer uso de esta funcin, el siguiente procedimiento debe ser
utilizado:
a. Asegrese de que el ADC est habilitado y no est ocupado de convertir. Conversin Individual
de modo debe ser seleccionado y la conversin ADC interrupcin completa debe estar habilitado.
b.

Entre en el modo de reduccin de ruido ADC (o el modo de espera). El ADC se iniciar una conversin
una vez que la CPU se ha detenido.

c.

Si no hay otras interrupciones se producen antes de que finalice la conversin ADC, el ADC interrumpir
despertar la CPU y ejecutar la conversin ADC rutina de interrupcin completa. Si
otra interrupcin despierta la CPU antes de la conversin ADC es completa, que
interrupcin se ejecutar, y una solicitud de interrupcin completa conversin ADC ser
generada cuando la conversin ADC completa. La CPU permanecer en modo activo
hasta que se ejecuta un comando nuevo sueo.

Tenga en cuenta que el ADC no se apaga automticamente al entrar en otros modos de suspensin al ralent
el modo y el modo de reduccin de ruido ADC. Se aconseja al usuario escribir cero a ADEN antes de entrar
ing esos modos de suspensin para evitar el consumo excesivo poder.

256
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


23.6.1

Circuito de entrada analgica


Los circuitos de entrada analgica para canales individuales terminados se ilustra en la Figura 23-8. Un anlogo
fuente aplicada a ADCn se somete a la capacitancia pin de entrada y fugas de que el pin, CON RESPECTO
menos de si se selecciona ese canal como entrada para el ADC. Cuando se selecciona el canal, el
fuente debe conducir el condensador S / H a travs de la resistencia en serie (resistencia combinada en el
ruta de entrada).

Este producto est optimizado para seales analgicas con una impedancia de salida de aproximadamente 10 kW o
menos. Si se utiliza una fuente tal, el tiempo de muestreo ser insignificante. Si una fuente con una mayor impedancia
se utiliza ANCE, el tiempo de muestreo depender de cunto tiempo la fuente necesita cargar la
S condensador / H, con puede variar ampliamente. Se recomienda al usuario utilizar slo baja impedancia
fuentes de variacin lenta seales, ya que esto minimiza la transferencia de carga requerida a la S / H
capacitor.

Componentes de seal superiores a la frecuencia de Nyquist (FADC / 2) no deben estar presentes para que sea
tipo de canales, para evitar la distorsin de la convolucin de la seal impredecible. Se recomienda al usuario
para eliminar los componentes de alta frecuencia con un filtro de paso bajo antes de aplicar las seales como
entradas a la ADC.

Figura 23-8. Circuito de entrada analgica

IIH
ADCn
1..100 kW
CS / H = 14 pF
IIL
VCC / 2

23.6.2

Tcnicas de Cancelacin de Ruido Analog


Circuito digital dentro y fuera del dispositivo genera EMI que pudiera afectar la exactitud de
mediciones analgicas. Si precisin de la conversin es crtica, el nivel de ruido se puede reducir
la aplicacin de las tcnicas siguientes:
a. Mantener rutas de seal analgicas tan corto como sea posible. Haga pistas analgicas seguro se extienden sobre el
plano de tierra analgica, y mantenerlos bien lejos de digital de conmutacin de alta velocidad
pistas.
b.

El pasador de AVCC en el dispositivo debe estar conectado a la tensin de suministro digital de VCC a travs de
una red LC como se muestra en Figura 23-9.

c.

Utilice la funcin cancelador de ruido ADC para reducir el ruido inducido de la CPU.

d. Si cualquier ADC [3..0] pines del puerto se utilizan como salidas digitales, es esencial que estos no hacen
interruptor mientras una conversin est en curso. Sin embargo, utilizando la interfaz de 2 hilos (ADC4

257
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


y ADC5) slo afectar a la conversin en ADC4 y ADC5 y no a la ADC
canales.
Figura 23-9. Conexiones elctricas ADC
PC4/ (ADC4 /
PC5 (ADC5
SCL) SDA)
PC3 (ADC3)
PC2 (ADC2)

Plano de
tierra
analgica

GND VCC

PC1 (ADC1)

PC0 (ADC0)

ADC7

GND

AREF
ADC6

10H

100nF

AVCC

PB5

23.6.3

ADC Precisin Definiciones


Un n-bit ADC de un solo extremo convierte una tensin linealmente entre GND y V REF en 2 n pasos
(LSB). El cdigo ms bajo se lee como 0, y el cdigo de ms alta se lee como 2n-1.
Varios parmetros describen la desviacin del comportamiento ideal:
Offset: La desviacin de la primera transicin (0x000 a 0x001) en comparacin con la transicin ideal (en
0,5 LSB). Valor ideal: 0 LSB.

258
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 23-10. Error de desplazamiento
Cdigo de salida

ADC Ideal
ADC Actual

Offset
Error

VREF Voltaje de entrada

Error de ganancia: Despus de ajustar por offset, el error de ganancia se encuentra como la desviacin de la ltima transicin
(0x3FE a 0x3ff) en comparacin con la transicin ideales (al 1,5 LSB por debajo del mximo). Valor ideal: 0
LSB

Figura 23-11. Ganancia de error


Cdigo de salida

Ganancia
Error

ADC Ideal
ADC Actual

VREF Voltaje de entrada

Integral No linealidad (INL): Despus de ajustar por error de desplazamiento y la ganancia, la INL es el mximo
desviacin de una transicin real en comparacin con una transicin ideal para cualquier cdigo. Valor ideal: 0
LSB.

259
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 23-12. Integral No linealidad (INL)
Cdigo de salida

INL
ADC Ideal
ADC Actual

VREF

Voltaje de entrada

No linealidad diferencial (DNL): La desviacin mxima de la anchura de cdigo real (el intervalo
entre dos transiciones adyacentes) de la anchura de cdigo ideales (1 LSB). Valor ideal: 0 LSB.
Figura 23-13. No linealidad diferencial (DNL)
Cdigo de salida
0x3ff

1 LSB

DNL
0x000
0

VREF Voltaje de entrada

Cuantificacin Error: Debido a la cuantizacin de la tensin de entrada en un nmero finito de cdigos, una
gama de voltajes de entrada (1 LSB ancho) codificar en el mismo valor. Siempre 0,5 LSB.
La precisin absoluta: La desviacin mxima de una (sin ajustar) transicin real en comparacin con
una transicin ideal para cualquier cdigo. Este es el efecto compuesto de offset, error de ganancia, diferencial
error, no linealidad, y el error de cuantificacin. Valor ideal: 0,5 LSB.

260
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

23.7

ADC Conversin Resultado


Despus de la conversin es completa (ADIF es alta), el resultado de la conversin se puede encontrar en el ADC
Registros de Resultados (ADCL, ADCH).
Para la conversin de un solo extremo, el resultado es
V IN 1024
ADC = -------------------------V REF

donde VIN es el voltaje en el pin de entrada seleccionado y VREF la referencia de tensin seleccionado (ver
Tabla 23-3 en la pgina 262 y Tabla 23-4 en la pgina 263). 0x000 representa tierra analgica, y
0x3ff representa el uno menos tensin de referencia seleccionado LSB.

23.8

Medicin de temperatura
La medicin de temperatura se basa en un sensor de temperatura en el chip que est acoplado a una
canal ADC8 solo extremo. Seleccin del canal ADC8 escribiendo los bits MUX3..0 en ADMUX
registrarse para "1000" permite que el sensor de temperatura. La referencia de voltaje 1.1V interna debe
tambin ser seleccionado para la fuente de voltaje de referencia ADC en la medicin del sensor de temperatura.
Cuando el sensor de temperatura est activada, el convertidor ADC se puede utilizar en la conversin solo
el modo de medir la tensin en el sensor de temperatura.

La tensin medida tiene una relacin lineal con la temperatura como se describe en Tabla 23-2.
La sensibilidad de tensin es de aproximadamente 1 mV / C y la exactitud de la medicin de temperatura
cin es de +/- 10 C.
Tabla 23-2.

Temperatura vs. sensor de voltaje de salida (caso tpico)

Temperatura / C
Tensin / mV

-45 C
242 mV

+ 25 C
314 mV

+ 85 C
380 mV

Los valores descritos en Tabla 23-2 son valores tpicos. Sin embargo, debido a la variacin del proceso de la
tensin de salida del sensor de temperatura vara de un chip a otro. Para ser capaz de alcanzar
bsqueda precisa la medicin de temperatura pueden ser calibrados en la aplicacin de softWare. La calibracin del software requiere que un valor de calibracin se mide y se almacena en una
registrar o EEPROM para cada chip, como parte de la prueba de produccin. La calibracin del software puede
hacerse utilizando la frmula:

T = {[(ADCH << 8) | ADCL] - TOS} / k


donde ADCn son los registros de datos de ADC, k es un coeficiente fijo y TOS es la temperatura sensor valor de desplazamiento determina y se almacena en la EEPROM como parte de la prueba de produccin.

261
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

23.9

Registro Descripcin

23.9.1

ADMUX - ADC multiplexor Seleccin Registro


Bit
(0x7C)
Lectura / Escritura
Valor inicial

REFS1

REFS0

R/W

R/W

Adlar

MUX3

MUX2

MUX1

MUX0

R/W

R/W

R/W

R/W

R/W

ADMUX

Bit 7: 6 - REFS1: 0: Referencia Bits de seleccin


Estos bits seleccionar la referencia de tensin para el ADC, como se muestra en Tabla 23-3. Si estos bits son
cambiado durante una conversin, el cambio no va a ir en efecto hasta que esta conversin es completa
(ADIF en ADCSRA est establecido). Las opciones de referencia de tensin interna no se pueden usar si un externa
tensin de referencia se aplica a la patilla AREF.

Tabla 23-3.

Tensin Seleccin de referencia para la ADC

REFS1

REFS0

Seleccin de referencia de voltaje

AREF, Vref interna apagada

AVCC con condensador externo en el pin AREF

Reservado

Referencia 1.1V Voltaje interno con condensador externo en el pin AREF

Bit 5 - Adlar: ADC izquierdo Ajuste Resultado


El bit Adlar afecta a la presentacin del resultado de la conversin ADC en el registro de datos ADC.
Escribe una a Adlar a izquierda ajustar el resultado. De lo contrario, el resultado se ajusta derecha. Cambio de la
Poco Adlar afectar el registro de datos ADC inmediatamente, independientemente de cualquier conversacin en curso
siones. Para una descripcin completa de este bit, consulte "ADCL y ADCH - El Registro ADC datos" en la
pgina 265.

Bit 4 - Res: Reservado Bit


Este bit es un bit no utilizado en la ATmega48PA / 88PA / 168PA / 328P, y siempre lea como cero.
Bits 3: 0 - MUX3: 0: Analgico Canal Bits de seleccin
El valor de estos bits selecciona qu entradas analgicas estn conectadas a la ADC. Ver Tabla 23-4
para ms detalles. Si se cambian estos bits durante una conversin, el cambio no entra en vigor hasta que
la conversin es completa (ADIF en ADCSRA est establecido).

262
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 23-4.

Entrada selecciones de canales


MUX3..0

Nota:

23.9.2

Individual entrada Terminacin

0000

ADC0

0001

ADC1

0010

ADC2

0011

ADC3

0100

ADC4

0101

ADC5

0110

ADC6

0111

ADC7

1000

ADC8(1)

1001

(Reservado)

1010

(Reservado)

1011

(Reservado)

1100

(Reservado)

1101

(Reservado)

1110

1.1V (VBG)

1111

0V (GND)

1. Para el sensor de temperatura.

ADCSRA - Control ADC y Registro de Estado A


Bit
(0x7A)
Lectura / Escritura
Valor inicial

ADEN

ADSC

ADATE

ADIF

ADIE

ADPS2

ADPS1

ADPS0

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

ADCSRA

Bit 7 - ADEN: ADC Habilitar


Escribir este bit a uno permite al ADC. Al escribir a cero, el ADC est apagado. Al girar el
ADC apagado mientras que la conversin est en curso, terminar esta conversin.

Bit 6 - ADSC: ADC Iniciar conversin


En el modo de conversin individual, escribir este bit a uno para comenzar cada conversin. En el modo de funcionamiento libre,
escribir este bit a uno para iniciar la primera conversin. La primera conversin tras ADSC se ha escrito
despus de la ADC se ha habilitado, o si ADSC est escrito en el mismo tiempo que el ADC est habilitada,
tendr 25 ciclos de reloj ADC en lugar de la normal de 13. Esta primera conversin realiza inicializacin
cin del ADC.

ADSC leer como uno mientras una conversin est en curso. Cuando se completa la conversin,
vuelve a cero. Escribir cero a este bit no tiene ningn efecto.

263
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Bit 5 - ADATE: ADC Auto disparador permiten


Cuando este bit se escribe en uno, el disparo automtico de la ADC est habilitada. El ADC se iniciar un conversin en un flanco positivo de la seal de disparo seleccionado. La fuente de disparo se selecciona ajustando
los bits ADC Gatillo Select, ADTS en ADCSRB.

Bit 4 - ADIF: ADC interrupcin Bandera


Este bit se establece cuando una conversin ADC completa y los registros de datos se actualizan. La
Conversin ADC completa interrupcin se ejecuta si el bit ADIE y la I-bit en SREG se establecen.
ADIF se borra por hardware al ejecutar el vector de manejo de interrupciones correspondiente. Alternativo
nativamente, ADIF se borra escribiendo un uno lgico a la bandera. Ten en cuenta que si hace una lectura ModifyEscribir en ADCSRA, una interrupcin pendiente se puede desactivar. Esto tambin se aplica si el OSE y CBI
se utilizan instrucciones.

Bit 3 - ADIE: ADC habilitacin de interrupcin


Cuando este bit se escribe en uno y el bit I en SREG est establecido, la conversin ADC completa Interrupt se activa.

Bits 2: 0 - ADPS2: 0: ADC de divisor Seleccione Bits


Estos bits determinan el factor de divisin entre la frecuencia de reloj del sistema y el reloj de entrada
al ADC.
Tabla 23-5.

ADC de divisor Selecciones

ADPS2

ADPS1

ADPS0

Factor Divisin

16

32

64

128

264
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

23.9.3
23.9.3.1

ADCL y ADCH - El registro de datos ADC


Adlar = 0
Bit

15

14

13

12

11

10

(0x79)

ADC9

ADC8

ADCH

(0x78)

ADC7

ADC6

ADC5

ADC4

ADC3

ADC2

ADC1

ADC0

ADCL

Lectura / Escritura

Valor inicial

23.9.3.2

Adlar = 1
Bit

15

14

13

12

11

10

(0x79)

ADC9

ADC8

ADC7

ADC6

ADC5

ADC4

ADC3

ADC2

ADCH

(0x78)

ADC1

ADC0

ADCL

Lectura / Escritura

Valor inicial

Cuando una conversin ADC es completa, el resultado se encuentra en estos dos registros.
Cuando ADCL es ledo, el registro de datos ADC no se actualiza hasta que se lea ADCH. En consecuencia, si
el resultado se deja ajustado y no ms de 8 bits se requiere precisin, es suficiente para leer
ADCH. De lo contrario, ADCL debe leerse primero, luego ADCH.
El bit Adlar en ADMUX, y los bits de MUXn en ADMUX afectan a la forma en que el resultado se lee desde
los registros. Si Adlar se establece, el resultado se ajusta izquierda. Si Adlar se borra (por defecto), el resultado
se ajusta bien.
ADC9: 0: ADC Conversin Resultado
Estos bits representan el resultado de la conversin, como se detalla en "ADC Resultado de la conversin" en la
pgina 261.

23.9.4

ADCSRB - Control ADC y Registro de Estado B


Bit

(0x7B)

ACME

ADTS2

ADTS1

ADTS0

Lectura / Escritura

R/W

R/W

R/W

R/W

Valor inicial

ADCSRB

Bit 7, 5: 3 - Res: Bits Reservados


Estos bits estn reservados para uso futuro. Para asegurar la compatibilidad con dispositivos futuros, stos bist
debe ser por escrito a cero cuando ADCSRB est escrito.

Bit 2: 0 - ADTS2: 0: ADC Auto Fuente de disparo


Si ADATE en ADCSRA se escribe en uno, el valor de estos bits selecciona qu fuente se disparar
una conversin ADC. Si ADATE se borra, la ADTS2: 0 configuracin no tendr ningn efecto. Una conversin
ser provocada por el flanco ascendente de la bandera de interrupcin seleccionado. Tenga en cuenta que el cambio de una de
disparador
fuente ger que se elimina a una fuente de disparo que se establece, generar un flanco positivo en la

265
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


seal de disparo. Si ADEN en ADCSRA se establece, esto comenzar una conversin. El cambio a Free Running
de modo (ADTS [2: 0] = 0) no causar un evento de disparo, incluso si la interrupcin de la bandera de ADC se establece .
Tabla 23-6.

23.9.5

ADC Auto Disparador Seleccin Fuente

ADTS2

ADTS1

ADTS0

Fuente de disparo

Modo de funcionamiento libre

Comparador analgico

Interrupcin externa Solicitud 0

Timer / Counter0 Comparar Partido A

Timer / Counter0 desbordamiento

Timer / Counter1 Comparar Partido B

Timer / Counter1 desbordamiento

Temporizador / Captura de Counter1

DIDR0 - Entrada digital Desactivar Regstrate 0


Bit

(0x7E)

ADC5D

ADC4D

ADC3D

ADC2D

ADC1D

ADC0D

Lectura / Escritura

R/W

R/W

R/W

R/W

R/W

R/W

Valor inicial

DIDR0

Bits 7: 6 - Res: Bits Reservados


Estos bits estn reservados para uso futuro. Para asegurar la compatibilidad con dispositivos futuros, estos bits
debe ser por escrito a cero cuando DIDR0 est escrito.

Bit 5: 0 - ADC5D..ADC0D: ADC5..0 entrada digital Desactivar


Cuando este bit se escribe uno lgico, el buffer de entrada digital en el pin ADC correspondiente se visualiza
abled. El PIN correspondiente Registro poco siempre leer como cero cuando se establece este bit. Cuando una
seal analgica se aplica a la patilla ADC5..0 y la entrada digital de este perno no es necesario, esta
bit debe ser uno lgico escrito para reducir el consumo de energa en el buffer de entrada digital.

Nota que los pines ADC ADC7 y ADC6 no tienen buffers de entrada digital, y por lo tanto no hacer
requerir de entrada Digital pedacitos Deshabilitar.

266
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

24. debugWIRE de depuracin del sistema en chip


24.1

Caractersticas

24.2

Completar Programa de Control de Flujo


Emula todas las funciones de chip, tanto digitales como analgicas, excepto RESET Terminal
Operacin en tiempo real
Depuracin apoyo simblico (Tanto en C y ensamblador de nivel de fuente, o para otros HLL)
Nmero ilimitado de puntos de ruptura (Programa de Uso de Puntos de Quiebre Software)
Operacin no intrusiva
Caractersticas elctricas idnticas al Real dispositivo
Configuracin del sistema automtico
De alta velocidad de operacin
Programacin de memorias no voltiles

Visin de conjunto
El sistema de depuracin debugWIRE on-chip utiliza un Uno-alambre, interfaz bidireccional para controlar el
el flujo del programa, ejecutar instrucciones AVR en la CPU y programar los diferentes no voltil
recuerdos.

24.3

Interfaz fsica
Cuando el debugWIRE Enable (DWEN) Fusible est programado y bits de bloqueo estn sin programar,
el sistema debugWIRE en el dispositivo de destino est activada. El pin del puerto RESET est configurado
como un cable-Y (drenaje abierto) pin I / O bidireccional con pull-up habilitado y se convierte en la comugateway nicacin entre el objetivo y el emulador.

Figura 24-1. El programa de instalacin debugWIRE


1.8 - 5.5V

VCC

dW

dW (REINICIAR)

GND

Figura 24-1 muestra el esquema de un MCU de destino, con debugWIRE activado, y el emulador
conector. El reloj del sistema no se ve afectada por debugWIRE y siempre ser la fuente de reloj
seleccionado por los fusibles CKSEL.

267
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Al disear un sistema en el que se utilizar debugWIRE, las siguientes observaciones deben ser
hecho para un funcionamiento correcto:
resistencias de pull-up en la / lnea (Reset) dW no debe ser menor que 10 k. La resistencia de actuacin
no se requiere para la funcionalidad debugWIRE.
La conexin del pin de RESET directamente a VCC no funcionar.
Los condensadores conectados al pin de RESET deben desconectarse cuando se utiliza debugWIRE.
Todas las fuentes de reset externo deben desconectarse.

24.4

Puntos de Quiebre Software


debugWIRE soporta memoria Programa de Puntos de Divisin por la instruccin rotura AVR. El establecimiento de un
Punto de ruptura en AVR Studio insertar una instruccin PAUSA en la memoria de programa. La instruccin
cin reemplazado por la instruccin PAUSA se almacenar. Cuando se contina la ejecucin del programa, la
instruccin almacenada se ejecutar antes de continuar a partir de la memoria de programa. Una ruptura puede ser
insertado manualmente poniendo la instruccin PAUSA en el programa.

El Flash debe reprogramarse cada vez un punto de quiebre se cambia. Esto es automticamente
manejado por AVR Studio a travs de la interfaz debugWIRE. El uso de puntos de ruptura ser, por tanto,
reducir la retencin de datos de Flash. Los dispositivos utilizados para propsitos de depuracin no deben ser enviados a
clientes finales.

24.5

Limitaciones de debugWIRE
El pasador de comunicacin debugWIRE (DW) se encuentra fsicamente en el mismo pin como externa
Reset (RESET). Una fuente de restauracin externa, por tanto, no se admite cuando la debugWIRE es
habilitado.
Un programada DWEN Fusible hace que algunas partes del sistema de reloj para estar en ejecucin en todo el sueo
modos. Esto aumentar el consumo de energa mientras que en el sueo. As, el DWEN fusible
desactivado cuando no se utiliza debugWIRE.

24.6

Registro Descripcin
En la siguiente seccin se describen los registros utilizados con el debugWIRE.

24.6.1

DWDR - debugWIRE Registro de Datos


Bit

DWDR [7: 0]
Lectura / Escritura
Valor inicial

DWDR

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

El Registro DWDR proporciona un canal de comunicacin del programa que se ejecuta en la MCU
al depurador. Este registro slo se puede acceder por el debugWIRE y por lo tanto no puede ser
utilizado como un registro de propsito general en las operaciones normales.

268
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

25. Auto-Programacin de la Flash, ATmega48PA


25.1

Visin de conjunto
En ATmega48PA, no hay apoyo Lee-While-escritura, y no Seccin del gestor de arranque independiente.
La instruccin SPM puede ser ejecutado desde todo el flash.
El dispositivo proporciona un mecanismo de auto-programacin para la descarga y carga de programa
cdigo por el propio MCU. El Auto-programacin se puede utilizar cualquier interfaz de datos disponible y asoprotocolo ATED a leer y escribir cdigo (programa) que el cdigo en la memoria de programa.
La memoria de programa se actualiza en una pgina por pgina la moda. Antes de programar una pgina con
los datos almacenados en la memoria intermedia de pgina temporal, la pgina deben ser borrados. La pgina tamponadas
temporal
fer est lleno de una palabra a la vez utilizando SPM y el tampn se puede llenar ya sea antes de la Pgina
Comando o Borrar entre un borrado de pgina y una operacin de escritura de pgina:
Alternativa 1, llene el bfer antes de una Erase Pgina
Llene el bfer de pgina temporal
Realiza un borrado Pgina
Realizar una pgina de escritura
Alternativa 2, llenar el bfer despus Pgina Erase
Realiza un borrado Pgina
Llene el bfer de pgina temporal
Realizar una pgina de escritura
Si slo una parte de la pgina necesita ser cambiado, el resto de la pgina debe almacenarse (por ejemplo,
en el bfer de pgina temporal) antes de que el borrado, y luego ser re-escrita. Cuando se utiliza la alternativa 1,
el gestor de arranque proporciona una funcin de lectura-escritura-modificar eficaz que permite que el software de usuario
leer primero la pgina, hacer los cambios necesarios, y luego escribir de nuevo los datos modificados. Si alternativa
nativo 2 se utiliza, no es posible leer los datos antiguos durante la carga ya que la pgina ya est
borrado. El buffer de pgina temporal se puede acceder en una secuencia aleatoria. Es esencial que
la direccin de la pgina utiliza tanto en la operacin Pgina de borrado y escritura de pgina est abordando el mismo
pgina.

25.1.1

Realizacin Pgina Borrado de SPM


Para ejecutar Pgina Erase, configure la direccin en el Z-puntero, escriba "00000011" para SPMCSR y
ejecutar SPM dentro de los cuatro ciclos de reloj despus de escribir SPMCSR. Los datos de la R1 y R0 es ignorado.
La direccin de la pgina debe ser escrito a PCPAGE en el registro Z. Otros bits en el Z-puntero
ser ignorado durante esta operacin.

Se detiene la CPU durante la operacin de borrado de pgina.


25.1.2

Llenado del bfer temporal (Pgina Loading)


Para escribir una palabra de instruccin, configure la direccin en el Z-puntero y los datos en R1: R0, escribir
"00000001" para SPMCSR y ejecutar SPM dentro de los cuatro ciclos de reloj despus de escribir SPMCSR. La
contenido de PCWORD en el registro Z se utiliza para tratar los datos en la memoria intermedia temporal. La
bfer temporal se borrar-auto despus de una operacin de escritura de pgina o escribiendo el bit RWWSRE en
SPMCSR. Tambin se borra despus de un reinicio del sistema. Tenga en cuenta que no es posible escribir ms de
una vez en cada direccin sin borrar el buffer temporal.

269
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Si la EEPROM est escrito en el medio de una operacin de carga SPM pgina, todos los datos cargados sern
perdida.
25.1.3

Realizacin de una pgina de escritura


Para ejecutar Pgina escritura, establecer la direccin en el Z-puntero, escriba "00000101" para SPMCSR y
ejecutar SPM dentro de los cuatro ciclos de reloj despus de escribir SPMCSR. Los datos de la R1 y R0 es ignorado.
La direccin de la pgina debe ser escrito a PCPAGE. Otros bits en el Z-puntos deben escribirse en
cero durante esta operacin.

Se detiene la CPU durante la operacin de escritura de pgina.

25.2

Abordar el flash durante la auto-programacin


El Z-puntero se utiliza para hacer frente a los comandos de GDS.
Bit

15

14

13

12

11

10

ZH (R31)

Z15

Z14

Z13

Z12

Z11

Z10

Z9

Z8

ZL (R30)

Z7

Z6

Z5

Z4

Z3

Z2

Z1

Z0

Dado que el flash se organiza en pginas (vase Tabla 27-11 en la pgina 299), el contador de programa puede
ser tratado como que tiene dos secciones diferentes. Una seccin, que consta de los bits menos significativos, es
frente a las palabras dentro de una pgina, mientras que los bits ms significativos estn abordando las pginas.
Esto se muestra en Figura 26-3 en la pgina 282. Tenga en cuenta que la pgina de borrado y escritura de pgina operaciones
se tratan de forma independiente. Por lo tanto es de gran importancia que las direcciones de software
la misma pgina, tanto en la pgina de borrado y operacin Pgina Write.

La instruccin LPM utiliza el Z-puntero para almacenar la direccin. Desde esta instruccin se dirige a la
Se utiliza flash byte a byte, tambin el LSB (bit Z0) del Z-puntero.
Figura 25-1. Abordar el flash durante SPM(1)
BIT

15

ZPCMSB

ZPAGEMSB

Z - REGISTRO

10
0

PCMSB
PROGRAMA
CONTADOR

PAGEMSB
PCPAGE

Direccin de la pgina
DENTRO DEL FLASH
PROGRAMA DE MEMORIA
PGINA

PCWORD
DIRECCIN DE PALABRAS
Dentro de una pgina
PGINA
PALABRA DE INSTRUCCIONES

PCWORD [PAGEMSB: 0]:


00
01
02

PAGEEND

Nota:

1. Las diversas variables utilizadas en Figura 26-3 se enumeran en Tabla 27-11 en la pgina 299.

270
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


25.2.1

EEPROM Evita escritura a SPMCSR


Tenga en cuenta que una operacin de escritura EEPROM bloquear toda la programacin de software a Flash. La lectura de la
Fusibles y Lock bits del software tambin se evitarn durante la operacin de escritura EEPROM. Ella
se recomienda que el usuario comprueba el bit de estado (EEPE) en el Registro y verifica EECR
que el bit se borra antes de escribir en el Registro SPMCSR.

25.2.2

La lectura de los fusibles y Lock Bits de Software


Es posible leer tanto el fusible y los bits de bloqueo de software. Para leer los bits de bloqueo, cargue el
Z-puntos con 0x0001 y establecer el BLBSET y trozos SELFPRGEN en SPMCSR. Cuando un LPM
instruccin se ejecuta dentro de los tres ciclos de la CPU despus de haber establecido los bits BLBSET y SELFPRGEN
en SPMCSR, el valor de los bits de bloqueo ser cargado en el registro de destino. El BLBSET
y los bits SELFPRGEN se auto-evidente al finalizar la lectura de los bits de bloqueo o si no LPM
instruccin se ejecuta dentro de los tres ciclos de la CPU o ninguna instruccin SPM se ejecuta dentro de los cuatro
Ciclos de CPU. Cuando BLBSET y SELFPRGEN se borran, LPM funcionar como se describe en el
Del conjunto de instrucciones Manual.

Bit

Rd

LB2

LB1

El algoritmo para leer el byte bajo del fusible es similar a la descrita anteriormente para la lectura
los bits de bloqueo. Para leer el byte de fusibles de baja, cargue el Z-puntos con 0x0000 y establecer el BLBSET
y bits SELFPRGEN en SPMCSR. Cuando una instruccin se ejecuta LPM dentro de los tres ciclos
despus de los bits de BLBSET y SELFPRGEN se establecen en el SPMCSR, el valor de byte bajo del fusible
(FLB) ser cargado en el registro de destino, como se muestra below.See Tabla 27-5 en la pgina 296 para
una descripcin detallada y mapeo del byte bajo del fusible.

Bit

Rd

FLB7

FLB6

FLB5

FLB4

FLB3

FLB2

FLB1

FLB0

Del mismo modo, al leer el fusible de alta byte (FHB), 0x0003 carga en el Z-puntero. Cuando un LPM
instruccin se ejecuta dentro de los tres ciclos despus de los bits BLBSET y SELFPRGEN se establecen en el
SPMCSR, el valor del byte alto del fusible ser cargado en el registro de destino, como se muestra
a continuacin. Ver Tabla 27-5 en la pgina 296 para una descripcin detallada y mapeo del fusible extendido
byte.

Bit

Rd

FHB7

FHB6

FHB5

FHB4

FHB3

FHB2

FHB1

FHB0

Del mismo modo, al leer el byte extendido Fusible (EFB), 0x0002 carga en el Z-puntero. Cuando una
LPM instruccin se ejecuta dentro de los tres ciclos despus se establecen los bits BLBSET y SELFPRGEN
en el SPMCSR, el valor del byte de fusibles Extended ser cargado en el registro de destino como
se muestra a continuacin. Ver Tabla 27-5 en la pgina 296 para una descripcin detallada y mapeo del extendido
Byte Fuse.

Bit

Rd

FHB7

FHB6

FHB5

FHB4

FHB3

FHB2

FHB1

FHB0

Fusibles y Lock bits que se programan, se leer como cero. Fusibles y Lock bits que son
no programado, ser ledo como una sola.

271
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

25.2.3

Prevencin de la Corrupcin de Flash


Durante los perodos de baja VCC, el programa Flash puede estar daado debido a la tensin de alimentacin es
demasiado baja para la CPU y el flash para operar correctamente. Estos problemas son los mismos que para el tablero
sistemas de nivel utilizando el flash, y las mismas soluciones de diseo deben ser aplicados.
Una corrupcin programa Flash puede ser causada por dos situaciones en las que el voltaje es demasiado bajo. En primer lugar,
una
secuencia de escritura regular al Flash requiere una tensin mnima para funcionar correctamente. En segundo lugar,
la CPU s mismo puede ejecutar las instrucciones incorrectamente, si la tensin de alimentacin para ejecutar instrucciones
es demasiado baja.
Corrupcin Flash puede evitarse fcilmente siguiendo estas recomendaciones de diseo (uno es
suficiente):
1. Mantenga RESET AVR activa (bajo) durante los perodos de tensin de alimentacin insuficiente.
Esto se puede hacer al permitir que el detector de Brown-cabo interna (BOD) si el voltaje operativo
edad coincide con el nivel de deteccin. Si no, un circuito externo de baja proteccin reinicio VCC puede ser
utilizado. Si se produce un restablecimiento mientras que una operacin de escritura est en progreso, la operacin de
escritura ser
completado siempre que la tensin de alimentacin es suficiente.
2. Mantenga el ncleo AVR en modo de reposo Energa-abajo durante perodos de baja VCC. Esto preventilar el CPU de intentar decodificar y ejecutar instrucciones, la proteccin efectiva
el Registro SPMCSR y por lo tanto el flash de las escrituras no intencionales.

25.2.4

Tiempo de programacin para Flash cuando se utiliza SPM


El calibrado RC oscilador se utiliza para el tiempo de Flash accesos. Tabla 26-6 muestra la pro- tpica
tiempo de programacin para Flash accede desde la CPU.
Tabla 25-1.

SPM Tiempo Programacin(1)


Smbolo

Escritura de Flash (Pgina Erase, Pgina Write, y


escribir bits de bloqueo por SPM)
Nota:

Tiempo Programacin Min


3.7 ms

Tiempo de programacin Max


4.5 ms

1. Mnimo y mximo tiempo de programacin es por operacin individual.

272
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

25.2.5

Cdigo simple Asamblea Ejemplo para un gestor de arranque


Tenga en cuenta que el bit RWWSB siempre se leer como cero en ATmega48PA. Sin embargo, es recomienda comprobar este bit como se muestra en el ejemplo de cdigo, para asegurar la compatibilidad con los dispositivos
apoyar Leer-While-Write.

; -la Rutina escribe una pgina de datos de la RAM a Flash


; la primera ubicacin de los datos en la memoria RAM es apuntado por el puntero Y
; la primera ubicacin de los datos en Flash es apuntado por la Z-puntero
; -error Manejo no est incluido
; -la Rutina debe ser colocado en el interior del espacio de arranque
; (Al menos la rutina sub Do_spm). Slo cdigo dentro de la seccin NRWW puede
; ser ledo durante la auto-programacin (Pgina Borrar y Pgina escritura).
; -libros Registro utilizadas: r0, r1, temp1 (r16), temp2 (r17), looplo (r24),
; loophi (r25), spmcrval (r20)
; almacenar y restaurar de registros no se incluye en la rutina
; uso de los registros se puede optimizar a expensas de tamao de cdigo
; -Es Se supone que o bien la tabla de interrupciones se mueve a la bota
; seccin del cargador o que las interrupciones estn deshabilitadas.
.equ PAGESIZEB = PAGESIZE * 2; PAGESIZEB es de tamao de pgina en bytes, no palabras
.org SMALLBOOTSTART
Write_page:
; Pgina Erase
LDI spmcrval, (1 << PGERS) | (1 << SELFPRGEN)
rcallDo_spm

; volver a habilitar la seccin RWW


spmcrval LDI, (1 << RWWSRE) | (1 << SELFPRGEN)
rcallDo_spm
; transferir datos desde la memoria RAM a bfer de pgina de Flash
looplo LDI, bajo (PAGESIZEB); variable de bucle init
loophi LDI, alta (PAGESIZEB); no se requiere para PAGESIZEB <= 256
Wrloop:
ldr0, Y +
LDR1, Y +
LDI spmcrval, (1 << SELFPRGEN)
rcallDo_spm
adiw ZH: ZL, 2
sbiw loophi: looplo, 2; utilizar subi para PAGESIZEB <= 256
Brne Wrloop

; ejecutar Pgina Escriba


subi ZL, bajo (PAGESIZEB); restaurar puntero
SBCI ZH, alta (PAGESIZEB); no se requiere para PAGESIZEB <= 256
spmcrval LDI, (1 << PGWRT) | (1 << SELFPRGEN)
rcallDo_spm

; volver a habilitar la seccin RWW


spmcrval LDI, (1 << RWWSRE) | (1 << SELFPRGEN)
rcallDo_spm
; leer atrs y comprobar, opcional
looplo LDI, bajo (PAGESIZEB); variable de bucle init
loophi LDI, alta (PAGESIZEB); no se requiere para PAGESIZEB <= 256
subi YL, bajo (PAGESIZEB); restaurar puntero

273
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


SBCI YH, alta (PAGESIZEB)
Rdloop:
r0 lpm, Z +
LDR1, Y +
cpse r0, r1
rjmp Error
sbiw loophi: looplo, 1
Brne Rdloop

; Utilice subi para PAGESIZEB <= 256

; regrese a la seccin RWW


; verifique que la seccin RWW es seguro para leer
Regreso:
intemp1, SPMCSR
temp1 SBR, RWWSB; Si RWWSB est establecido, la seccin RWW an no est listo
enriar
; volver a habilitar la seccin RWW
spmcrval LDI, (1 << RWWSRE) | (1 << SELFPRGEN)
rcallDo_spm
rjmp Volver

Do_spm:
; comprobar anterior completa SPM
Wait_spm:
intemp1, SPMCSR
temp1 SBRC, SELFPRGEN
rjmp Wait_spm
; entrada: spmcrval determina la accin SPM
; deshabilitar las interrupciones si est activado, el estado de tienda
intemp2, SREG
cli
; compruebe que no tiene acceso de escritura EEPROM est presente
Wait_ee:
SBIC EECR, EEPE
rjmp Wait_ee
; SPM secuencia temporizada
fuera SPMCSR, spmcrval
spm
; restaurar SREG (para habilitar las interrupciones si est habilitado
en un principio)
fuera SREG, temp2
enriar

274
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

25.3

Registro Descripcin

25.3.1

SPMCSR - Tienda Programa de Control de la Memoria y Registro de Estado


El control de la memoria y el Registro de Estado Programa tienda contiene los bits de control necesarias para conTrol las operaciones de la memoria de programa.
Bit
0x37 (0x57)
Lectura / Escritura
Valor inicial

SPMIE

RWWSB

RWWSRE

BLBSET

PGWRT

PGERS

R/W

R/W

R/W

R/W

R/W

R/W

SELFPRGEN

SPMCSR

Bit 7 - SPMIE: SPM habilitacin de interrupcin


Cuando el bit SPMIE se escribe en uno, y el I-bit en el registro de estado se establece (uno), la SPM
listo interrupcin se activar. El SPM lista de interrupcin se ejecutar siempre que la AUTOPRGEN poco en el Registro SPMCSR se borra. La interrupcin no se generar durante
Escribir EEPROM o SPM.

Bit 6 - RWWSB: Seccin Leer-While-Write Ocupado


Este bit es para la compatibilidad con dispositivos de apoyo Lee-While-Write. Siempre leer como cero
en ATmega48PA.

Bit 5 - Res: Reservado Bit


Este bit es un bit reservado en el ATmega48PA / 88PA / 168PA / 328P y siempre lea como cero.
Bit 4 - RWWSRE: Leer-While-Escribir la seccin de habilitacin de lectura
La funcionalidad de este bit en ATmega48PA es un subconjunto de la funcionalidad en
ATmega88PA / 168PA. Si el bit RWWSRE se escribe mientras se llena el bfer de pgina temporal, el
bfer de pgina temporal se borrar y se perdern los datos.

Bit 3 - BLBSET: Bloqueo de arranque Set Bit


La funcionalidad de este bit en ATmega48PA es un subconjunto de la funcionalidad en
ATmega88PA / 168PA. Una instruccin LPM dentro de los tres ciclos despus BLBSET y SELFPRGEN
se establecen en el Registro SPMCSR, leer tanto los bits de bloqueo o los bits de fusibles (dependiendo de Z0
en el Z-puntero) en el registro de destino. Ver "La lectura de los bits fusibles y bloqueo de Software "en la pgina 271 para ms detalles.

Bit 2 - PGWRT: Pgina Escribir


Si este bit se escribe en uno al mismo tiempo que SELFPRGEN, la siguiente instruccin SPM dentro de los cuatro
ciclos de reloj ejecuta Pgina Escriba, con los datos almacenados en el buffer temporal. La pgina
direccin se toma de la parte alta de la Z-puntero. Se ignoran los datos en R1 y R0. La
Ser, o si no se ejecuta ninguna instruccin SPM-borrado automtico tras la finalizacin de una pgina de escritura PGWRT poco
dentro de los cuatro ciclos de reloj. Se detiene la CPU durante toda la operacin de escritura de pgina.

Bit 1 - PGERS: Pgina Borrado


Si este bit se escribe en uno al mismo tiempo que SELFPRGEN, la siguiente instruccin SPM dentro de los cuatro
ciclos de reloj ejecuta Pgina Borrar. La direccin de la pgina es tomado de la parte alta de la Zpuntero. Se ignoran los datos en R1 y R0. El bit PGERS se auto-evidente al trmino de un
Pgina Borrar, o si ninguna instruccin SPM se ejecuta dentro de los cuatro ciclos de reloj. La CPU se detiene durante
ing toda la operacin Pgina Write.

275
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Bit 0 - SELFPRGEN: Auto Programacin Habilitar
Este bit habilita la instruccin SPM para los prximos cuatro ciclos de reloj. Si escrito a uno junto con
ya sea RWWSRE, BLBSET, PGWRT o PGERS, la siguiente instruccin SPM tendr una espesignificado cial, ver descripcin anterior. Si slo SELFPRGEN est escrito, lo siguiente SPM
instruccin almacenar el valor en R1: R0 en el tampn de pgina temporal abordado por la Z-puntero.
El LSB del Z-puntero se ignora. El bit SELFPRGEN se auto-evidente al trmino de un
Instruccin SPM, o si ninguna instruccin SPM se ejecuta dentro de los cuatro ciclos de reloj. Durante Pgina Erase
y Pgina Escriba, el bit SELFPRGEN sigue siendo alto hasta que se complete la operacin.

Escribir cualquier otra combinacin de "10001", "01001", "00101", "00011" o "00001" en la parte inferior
cinco bits no tendrn ningn efecto.

276
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

26. Soporte cargador de arranque - Leer-While-Escribe Auto-Programacin,


ATmega88PA, ATmega168PA y ATmega328P
26.1

Caractersticas

Leer-While-Escribe Auto-Programacin
Bota flexible Tamao de la memoria
Alta Seguridad (separada de bloqueo de arranque Bits para una proteccin flexible)
Fusible por separado para Seleccione Reset Vector
Pgina optimizada(1) Tamao
Cdigo algoritmo eficiente
Eficiente lectura-modificacin-escritura Soporte

Nota:

26.2

1. Una pgina es una seccin en el flash que consta de varios bytes (ver Tabla 27-11 en la pgina 299)
utilizado durante la programacin. La organizacin de la pgina no afecta al funcionamiento normal.

Visin de conjunto
En ATmega88PA, ATmega168PA y ATmega328P, el cargador de arranque de apoyo proporciona una verdadera
Leer-While-Escribe mecanismo de auto-programacin para la descarga y carga de cdigo de programa
por la propia MCU. Esta caracterstica permite que las actualizaciones de software de aplicaciones flexibles controlados por el
MCU utilizando un programa gestor de arranque-Flash residente. El programa gestor de arranque puede usar cualquier disponibles
interfaz de datos capaz y protocolo asociado para leer cdigo y escribir (programa) que cdigo en el
La memoria flash, o leer el cdigo de la memoria del programa. El cdigo del programa en el arranque
Seccin del cargador tiene la capacidad de escribir en todo el Flash, incluyendo el gestor de arranque bro
ria. El cargador de arranque as an puede modificar en s, y tambin puede borrar en s a partir del cdigo si el
caracterstica no se necesita ms. El tamao de la memoria del gestor de arranque se puede configurar con fusibles
y el gestor de arranque tiene dos conjuntos separados de bits de bloqueo de arranque que se pueden ajustar de forma
independiente.
Esto da al usuario una flexibilidad nica para seleccionar diferentes niveles de proteccin.

26.3

Aplicacin y Secciones del gestor de arranque de Flash


La memoria flash se organiza en dos secciones principales, la seccin de aplicaciones y la Bota
Seccin Loader (ver Figura 26-2). El tamao de las diferentes secciones se configura por el
BOOTSZ Fusibles, como se muestra en Tabla 26-7 en la pgina 289 y Figura 26-2. Estas dos secciones pueden
tienen diferente nivel de proteccin, ya que tienen diferentes conjuntos de bits de bloqueo.

26.3.1

Seccin de Aplicacin
La seccin de aplicacin es la seccin de la Flash que se utiliza para almacenar el cdigo de aplicacin.
El nivel de proteccin para la seccin de Aplicacin puede ser seleccionado por la aplicacin bits de bloqueo de arranque
(Bits de bloqueo de arranque 0), ver Tabla 26-2 en la pgina 281. La seccin de aplicacin nunca puede almacenar cualquier
Cdigo del gestor de arranque desde la instruccin SPM se desactiva cuando se ejecuta desde la aplicacin
seccin.

26.3.2

BLS - Bota Seccin cargador


Mientras que la seccin de aplicaciones se utiliza para almacenar el cdigo de la aplicacin, el Cargador de arranque softvajilla debe estar ubicada en los BLS desde la instruccin SPM puede iniciar una programacin cuando
la ejecucin de slo el BLS. La instruccin SPM puede acceder a todo el Flash, incluyendo el
En s BLS. El nivel de proteccin para la seccin del gestor de arranque puede ser seleccionado por el gestor de arranque
Bits de bloqueo (bits de bloqueo de arranque 1), consulte Tabla 26-3 en la pgina 281.

277
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


26.4

Leer-While-escritura y no lectura-While-Escribir Secciones de Flash


Si la CPU soporta Lee-While-Escribir o si la CPU se detiene durante un gestor de arranque softactualizacin de las mercancas depende de que la direccin que est siendo programado. Adems de los dos
secciones que son configurables por los fusibles BOOTSZ como se ha descrito anteriormente, el Flash es tambin
dividido en dos secciones fijas, la seccin de lectura Mientras-Write (RWW) y la no lectura-tiempoSeccin Write (NRWW). El lmite entre las secciones RWW- y NRWW se da en Tabla 268 en la pgina 289 y Figura 26-2 en la pgina 280. La principal diferencia entre las dos secciones es:

Para borrar o escribir una pgina ubicada dentro de la seccin RWW, la seccin NRWW puede ser
leer durante la operacin.
Para borrar o escribir una pgina ubicada dentro de la seccin NRWW, la CPU se detiene durante el
toda la operacin.
Tenga en cuenta que el software del usuario nunca puede leer cualquier cdigo que se encuentra dentro de la seccin RWW
durante
ing una operacin de software del gestor de arranque. La sintaxis "lectura-escritura Mientras seccin" se refiere a que
seccin que se est programando (borrarlos ni), no que la seccin que realmente es ser
leer durante una actualizacin del software del gestor de arranque.
26.4.1

RWW - Seccin Leer-While-escritura


Si una actualizacin de software del gestor de arranque es la programacin de una pgina dentro de la seccin RWW, es posible
para leer el cdigo de la Flash, pero slo el cdigo que se encuentra en la seccin NRWW. Durante una situ
programacin va, el software debe asegurar que la seccin RWW nunca se est leyendo. Si el
software de usuario est tratando de leer el cdigo que se encuentra dentro de la seccin RWW (es decir, por un
llamada / jmp / lpm o una interrupcin) durante la programacin, el software podra terminar en una desconocida
estado. Para evitar esto, las interrupciones deberan o bien sean inhabilitadas o se trasladaron a la seccin del gestor de arranque
cin. La seccin del cargador de arranque siempre se encuentra en la seccin NRWW. La Seccin RWW Ocupado
bit (RWWSB) en el Programa de Control de Tienda Memoria y Registro de Estado (SPMCSR) ser ledo
como una lgica, siempre que la seccin RWW est bloqueada para la lectura. Despus de una programacin es comcompletado, el RWWSB debe ser despejado por el software de cdigo antes de la lectura situada en la RWW
seccin. Vea la seccin "26.9.1" en la pgina 292. para ms detalles sobre cmo borrar RWWSB.

26.4.2

NRWW - No Lea-While-Write Seccin


El cdigo se encuentra en la seccin NRWW se puede leer cuando el software del gestor de arranque est actualizando
una pgina en la seccin RWW. Cuando el cdigo del gestor de arranque se actualiza la seccin NRWW, la CPU
se detiene durante toda la operacin de borrado de pgina o pgina Write.

Tabla 26-1.

Leer-While-Write Caractersticas

Qu hace la Seccin ZDireccin puntero durante


la programacin?
Seccin RWW
Seccin NRWW

Qu seccin puede ser


leer durante
Programacin?

CPU Halted?

Leer-While-Escribir
Apoyado?

Seccin NRWW

No

No

Ninguno

278
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 26-1. Leer-While-Escribir vs. No Lea-While-escritura

Leer-While-Escribir
(RWW) Seccin

Z-puntero
Direcciones NRWW
Seccin
Z-puntero
Direcciones RWW
Seccin

Sin lectura-While-escritura
(NRWW) Seccin
CPU se detiene
Durante la operacin

Cdigo Ubicado en
Seccin NRWW
Puede ser leda durante
la Operacin

279
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 26-2. Secciones de memoria
Memoria de programa
BOOTSZ = '10'

Memoria de programa
BOOTSZ = '11'

0x0000

0x0000
Leer-While-Write
Seccin

Leer-While-Write
Seccin

Aplicacin Seccin de Flash

Sin lectura-WhileWrite Seccin

Aplicacin Seccin de Flash

Fin RWW
Inicio NRWW

Sin lectura-WhileWrite Seccin

Fin RWW
Inicio NRWW

Aplicacin Seccin de Flash

Aplicacin Seccin de Flash

Fin de aplicaciones
Iniciar gestor de arranque
Seccin del gestor de arranque de Flash Flashend

Seccin del gestor de arranque de Flash

Fin de aplicaciones
Iniciar gestor de arranque
Flashend

Memoria de programa
BOOTSZ = '01'

Memoria de programa
BOOTSZ = '00'
0x0000

Leer-While-Write
Seccin

0x0000

Leer-While-Write
Seccin
Aplicacin Seccin de Flash

Sin lectura-WhileWrite Seccin

Aplicacin Seccin de Flash

Fin RWW
Inicio NRWW

Terminar RWW, Fin de aplicaciones


Iniciar NRWW, Iniciar gestor de arranque

Sin lectura-WhileWrite Seccin

Aplicacin Seccin de Flash


Fin de aplicaciones
Iniciar gestor de arranque

Seccin del gestor de arranque de Flash

Seccin del gestor de arranque de Flash


Flashend

Nota:

26.5

Flashend

1. Los parmetros en la figura de arriba se dan en Tabla 26-7 en la pgina 289.

Boot Loader Lock Bits


Si no se necesita la capacidad del gestor de arranque, todo el flash est disponible para cdigo de aplicacin. La
Gestor de arranque tiene dos conjuntos separados de bits de bloqueo de arranque que se pueden ajustar de forma independiente.
Esto da
al usuario una flexibilidad nica para seleccionar diferentes niveles de proteccin.
El usuario puede seleccionar:
Para proteger todo el flash de una actualizacin de software por la MCU.
Para proteger slo la seccin del cargador de arranque flash de una actualizacin de software por la MCU.
Para proteger slo la seccin de aplicaciones de Flash de una actualizacin de software por la MCU.
Permitir la actualizacin de software en todo el flash.
Ver Tabla 26-2 y Tabla 26-3 para ms detalles. Los bits de bloqueo de arranque pueden configurarse en software y
en el modo de programacin de serie o en paralelo, pero se pueden borrar por un comando de Chip Erase
solamente. El bloqueo de escritura general (modo Bit Lock 2) no controla la programacin del flash
la memoria por la instruccin SPM. Del mismo modo, el general de lectura / escritura de bloqueo (modo Bit Lock 1) no
lectura de control ni escrito por LPM / SPM, si se intenta.

280
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 26-2.
Modo BLB0

BLB02

BLB01

No hay restricciones para SPM o LPM acceder a la aplicacin


seccin.

SPM no se permite escribir en la seccin de aplicaciones.

SPM no est permitido escribir en la seccin Aplicacin, y LPM


la ejecucin de la seccin del cargador de arranque no se le permite leer
desde la seccin de aplicaciones. Si vectores de interrupcin se colocan en
la seccin del gestor de arranque, las interrupciones estn deshabilitadas durante la
ejecucin
desde la seccin de aplicaciones.

LPM ejecucin de la seccin del cargador de arranque no est permitido


leer de la seccin de aplicaciones. Si se colocan vectores de interrupcin
en la seccin del gestor de arranque, las interrupciones estn deshabilitadas mientras
la ejecucin de la seccin Aplicacin.

Nota:

Modo BLB1

Bota Lock Bit1 Modos de Proteccin (Seccin del gestor de arranque) (1)
BLB12

BLB11

No hay restricciones para SPM o LPM acceder al gestor de arranque


seccin.

SPM no est permitido escribir en la seccin del cargador de arranque.

SPM no est permitido escribir en la seccin del gestor de arranque, y LPM


la ejecucin de la seccin de aplicaciones no se le permite leer
de la seccin del cargador de arranque. Si vectores de interrupcin se colocan en
la seccin Aplicacin, las interrupciones estn deshabilitadas durante la ejecucin
de la seccin del cargador de arranque.

LPM ejecucin de la seccin de aplicacin no se le permite


leer la seccin del cargador de arranque. Si los vectores de interrupcin son
colocado en la seccin Aplicacin, las interrupciones estn deshabilitadas mientras
la ejecucin de la seccin del cargador de arranque.

26.6

Proteccin

1. "1" significa no programada, "0" significa programados

Tabla 26-3.

Nota:

Bota Lock Bit0 Modos de Proteccin (Seccin de Aplicacin)(1)

Proteccin

1. "1" significa no programada, "0" significa programados

Acceso al programa de gestor de arranque


Entrando en el gestor de arranque se lleva a cabo por un salto o llamada desde el programa de aplicacin. Esto puede
ser iniciado por un disparador tal como una orden recibida a travs de USART, o de la interfaz SPI. Alternativamente,
la Bota Restablecer fusible se puede programar para que el reinicio del vector est apuntando al flash de arranque
Direccin inicial despus de un reinicio. En este caso, el gestor de arranque se inicia despus de un reinicio. Despus de la
aplicacin
cdigo cin est cargado, el programa puede comenzar a ejecutar el cdigo de la aplicacin. Tenga en cuenta que los fusibles
no puede ser modificado por la propia MCU. Esto significa que una vez que el arranque Restablecer Fuse es proprogramado, el reinicio Vector siempre apuntar al gestor de arranque Reset y el fusible slo puede ser
cambiado a travs de la interfaz de programacin en serie o en paralelo.
Tabla 26-4.
BOOTRST

Nota:

Arranque Cambiar Fusible(1)


Restablecer Direccin

Restablecer Vector = Aplicacin Reset (direccin 0x0000)

Restablecer Restablecer Vector = gestor de arranque (ver Tabla 26-7 en la pgina 289)

1. "1" significa no programada, "0" significa programados

281
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


26.7

Abordar el flash durante la auto-programacin


El Z-puntero se utiliza para hacer frente a los comandos de GDS.
Bit

15

14

13

12

11

10

ZH (R31)

Z15

Z14

Z13

Z12

Z11

Z10

Z9

Z8

ZL (R30)

Z7

Z6

Z5

Z4

Z3

Z2

Z1

Z0

Dado que el flash se organiza en pginas (vase Tabla 27-11 en la pgina 299), el contador de programa puede
ser tratado como que tiene dos secciones diferentes. Una seccin, que consta de los bits menos significativos, es
frente a las palabras dentro de una pgina, mientras que los bits ms significativos estn abordando las pginas.
Esto se muestra en la is1 Figura 26-3. Tenga en cuenta que las operaciones de escritura Pgina Borrar y Page estn
abordado de forma independiente. Por lo tanto es de gran importancia que el software del gestor de arranque
se dirige a la misma pgina, tanto en la pgina de borrado y operacin Pgina Write. Una vez que una programacin
se inicia la operacin ming, la direccin est bloqueada y el Z-puntos puede ser utilizado para otros
operaciones.

La nica operacin SPM que no utiliza el Z-puntero est fijando los bits del gestor de arranque de bloqueo.
El contenido de la Z-puntero se ignora y no tendr ningn efecto sobre el funcionamiento. El LPM
instruccin no tambin usan el Z-puntero para almacenar la direccin. Desde esta instruccin se dirige a la
Se utiliza flash byte a byte, tambin el LSB (bit Z0) del Z-puntero.

Figura 26-3. Abordar el flash durante SPM(1)


BIT

15

ZPCMSB

ZPAGEMSB

Z - REGISTRO

10
0

PCMSB
PROGRAMA
CONTADOR

PAGEMSB
PCPAGE

Direccin de la pgina
DENTRO DEL FLASH
PROGRAMA DE MEMORIA
PGINA

PCWORD
DIRECCIN DE PALABRAS
Dentro de una pgina
PGINA
PALABRA DE INSTRUCCIONES

PCWORD [PAGEMSB: 0]:


00
01
02

PAGEEND

Nota:

26.8

1. Las diversas variables utilizadas en Figura 26-3 se enumeran en Tabla 26-9 en la pgina 289.

Auto-Programacin del flash


La memoria del programa se actualiza en una pgina por pgina la moda. Antes de programar una pgina con
los datos almacenados en la memoria intermedia de pgina temporal, la pgina deben ser borrados. La pgina tamponadas
temporal
fer est lleno de una palabra a la vez utilizando SPM y el tampn se puede llenar ya sea antes de la Pgina
Comando o Borrar entre un borrado de pgina y una operacin de escritura de pgina:

282
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Alternativa 1, llene el bfer antes de una Erase Pgina
Llene el bfer de pgina temporal
Realiza un borrado Pgina
Realizar una pgina de escritura
Alternativa 2, llenar el bfer despus Pgina Erase
Realiza un borrado Pgina
Llene el bfer de pgina temporal
Realizar una pgina de escritura
Si slo una parte de la pgina necesita ser cambiado, el resto de la pgina debe almacenarse (por ejemplo,
en el bfer de pgina temporal) antes de que el borrado, y luego volver a escribir. Cuando se utiliza la alternativa 1,
el gestor de arranque proporciona una funcin de lectura-escritura-modificar eficaz que permite que el software de usuario
leer primero la pgina, hacer los cambios necesarios, y luego escribir de nuevo los datos modificados. Si alternativa
nativo 2 se utiliza, no es posible leer los datos antiguos durante la carga ya que la pgina ya est
borrado. El buffer de pgina temporal se puede acceder en una secuencia aleatoria. Es esencial que
la direccin de la pgina utiliza tanto en la operacin Pgina de borrado y escritura de pgina est abordando el mismo
pgina. Ver "Cdigo simple Asamblea Ejemplo para un gestor de arranque" en la pgina 286 para una asamblea
ejemplo de cdigo.

26.8.1

Realizacin Pgina Borrado de SPM


Para ejecutar Pgina Erase, configure la direccin en el Z-puntero, escriba "X0000011" para SPMCSR y
ejecutar SPM dentro de los cuatro ciclos de reloj despus de escribir SPMCSR. Los datos de la R1 y R0 es ignorado.
La direccin de la pgina debe ser escrito a PCPAGE en el registro Z. Otros bits en el Z-puntero
ser ignorado durante esta operacin.

Pgina Erase a la seccin RWW: La seccin NRWW se puede leer durante el borrado de pgina.
Pgina Erase a la seccin NRWW: Se detiene la CPU durante la operacin.
26.8.2

Llenado del bfer temporal (Pgina Loading)


Para escribir una palabra de instruccin, configure la direccin en el Z-puntero y los datos en R1: R0, escribir
"00000001" para SPMCSR y ejecutar SPM dentro de los cuatro ciclos de reloj despus de escribir SPMCSR. La
contenido de PCWORD en el registro Z se utiliza para tratar los datos en la memoria intermedia temporal. La
bfer temporal se borrar-auto despus de una operacin de escritura de pgina o escribiendo el bit RWWSRE en
SPMCSR. Tambin se borra despus de un reinicio del sistema. Tenga en cuenta que no es posible escribir ms de
una vez en cada direccin sin borrar el buffer temporal.

Si la EEPROM est escrito en el medio de una operacin de carga SPM pgina, todos los datos cargados sern
perdida.
26.8.3

Realizacin de una pgina de escritura


Para ejecutar Pgina Escribir, configure la direccin en el Z-puntero, escriba "X0000101" para SPMCSR y
ejecutar SPM dentro de los cuatro ciclos de reloj despus de escribir SPMCSR. Los datos de la R1 y R0 es ignorado.
La direccin de la pgina debe ser escrito a PCPAGE. Otros bits en el Z-puntos deben escribirse en
cero durante esta operacin.

Pgina Escribir a la seccin RWW: La seccin NRWW se puede leer durante la Pgina Write.
Pgina escribir en la parte NRWW: Se detiene la CPU durante la operacin.

283
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


26.8.4

Utilizando el SPM de interrupcin


Si la interrupcin SPM est activada, la alarma de SPM generar una interrupcin constante cuando la
SELFPRGEN poco en SPMCSR se borra. Esto significa que la interrupcin se puede utilizar en lugar de
votacin el Registro SPMCSR en software. Cuando se utiliza la interrupcin SPM, la interrupcin Vectores
debe ser trasladado a la seccin de BLS para evitar que una interrupcin est accediendo a la seccin RWW
cuando ste se encuentra bloqueado por leer. Cmo mover las interrupciones se describe en "Alarmas" en la pgina
57.

26.8.5

Consideracin al actualizar BLS


Especial cuidado debe tenerse si el usuario permite que la seccin del cargador de arranque que se actualiza al dejar
Bloqueo de arranque el bit 11 no programado. Una escritura accidental al gestor de arranque en s puede corromper la
todo gestor de arranque, y otras actualizaciones de software podran ser imposible. Si no es necesario
cambiar el software del gestor de arranque en s, se recomienda programar el bit 11 Bloqueo de arranque para
proteger el software del gestor de arranque de cualquier cambio de software internos.

26.8.6

Prevenir Lectura de la seccin RWW Durante Auto-Programacin


Durante Auto-programacin (ya sea Pgina Erase o Pgina escritura), la seccin RWW es siempre
bloqueado por la lectura. El software propio usuario debe evitar que esta seccin se aborda durante
la operacin de programacin propia. El RWWSB en el SPMCSR se fijar siempre y cuando el RWW
seccin est ocupado. Durante Auto-Programacin de la tabla de vector de interrupcin se debe mover el BLS
como se describe en "Temporizador de vigilancia" en la pgina 50, o las interrupciones se deben desactivar. Antes
abordar la seccin RWW una vez finalizada la programacin, el software de usuario debe borrar
la RWWSB escribiendo el RWWSRE. Ver "Cdigo simple Asamblea Ejemplo para un gestor de arranque"
en la pgina 286 para un ejemplo.

26.8.7

Ajuste del bloqueo de Bits del gestor de arranque de SPM


Para establecer los bits del gestor de arranque para las cerraduras y generales Lock Bits, escribir los datos deseados a R0, escribir
"X0001001" para SPMCSR y ejecutar SPM dentro de los cuatro ciclos de reloj despus de escribir SPMCSR.
Bit

R0

BLB12

BLB11

BLB02

BLB01

LB2

LB1

Ver Tabla 26-2 y Tabla 26-3 de cmo las diferentes configuraciones de los bits del gestor de arranque afectan a la
El acceso de Flash.
Si los bits 5..0 en R0 se borran (cero), el correspondiente bit de bloqueo se puede programar si un SPM
instruccin se ejecuta dentro de los cuatro ciclos despus BLBSET y SELFPRGEN se fijan en SPMCSR.
El Z-puntero es no cuidar durante esta operacin, pero para la futura compatibilidad se recomienda
cargar el Z-puntos con 0x0001 (el mismo que se utiliza para la lectura de los bits de bloqueo). Por compatibilidad futuro
Tambin se recomienda establecer los bits 7 y 6 en R0 a "1" al escribir los bits de bloqueo. Cuando programaming Lock Bits de todo el flash se puede leer durante la operacin.

26.8.8

EEPROM Evita escritura a SPMCSR


Tenga en cuenta que una operacin de escritura EEPROM bloquear toda la programacin de software a Flash. La lectura de la
Fusibles y Lock bits del software tambin se evitarn durante la operacin de escritura EEPROM. Ella
se recomienda que el usuario comprueba el bit de estado (EEPE) en el Registro y verifica EECR
que el bit se borra antes de escribir en el Registro SPMCSR.

26.8.9

La lectura de los fusibles y Lock Bits de Software


Es posible leer tanto el fusible y los bits de bloqueo de software. Para leer los bits de bloqueo, cargue el
Z-puntos con 0x0001 y establecer el BLBSET y trozos SELFPRGEN en SPMCSR. Cuando un LPM

284
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


instruccin se ejecuta dentro de los tres ciclos de la CPU despus de haber establecido los bits BLBSET y SELFPRGEN
en SPMCSR, el valor de los bits de bloqueo ser cargado en el registro de destino. El BLBSET
y los bits SELFPRGEN se auto-evidente al finalizar la lectura de los bits de bloqueo o si no LPM
instruccin se ejecuta dentro de los tres ciclos de la CPU o ninguna instruccin SPM se ejecuta dentro de los cuatro
Ciclos de CPU. Cuando BLBSET y SELFPRGEN se borran, LPM funcionar como se describe en el
Del conjunto de instrucciones Manual.

Bit

Rd

BLB12

BLB11

BLB02

BLB01

LB2

LB1

El algoritmo para leer el byte bajo del fusible es similar a la descrita anteriormente para la lectura
los bits de bloqueo. Para leer el byte de fusibles de baja, cargue el Z-puntos con 0x0000 y establecer el BLBSET
y bits SELFPRGEN en SPMCSR. Cuando una instruccin se ejecuta LPM dentro de los tres ciclos
despus de los bits de BLBSET y SELFPRGEN se establecen en el SPMCSR, el valor de byte bajo del fusible
(FLB) ser cargado en el registro de destino, como se muestra a continuacin. Referirse a Tabla 27-5 en la pgina 296
para una descripcin detallada y mapeo del byte bajo del fusible.

Bit

Rd

FLB7

FLB6

FLB5

FLB4

FLB3

FLB2

FLB1

FLB0

Del mismo modo, al leer el byte alto Fuse, carga 0x0003 en el Z-puntero. Cuando una instruccin LPM
cin se ejecuta dentro de los tres ciclos despus de los bits de BLBSET y SELFPRGEN se establecen en el
SPMCSR, el valor del byte alto Fusible (FHB) ser cargado en el registro destino como
se muestra a continuacin. Referirse a Tabla 27-7 en la pgina 296 para una descripcin detallada y mapeo del Fusible
Byte alto.

Bit

Rd

FHB7

FHB6

FHB5

FHB4

FHB3

FHB2

FHB1

FHB0

Al leer el byte Fusible extendido, 0x0002 carga en el Z-puntero. Cuando una instruccin LPM
se ejecuta dentro de los tres ciclos despus de los bits BLBSET y SELFPRGEN se establecen en el SPMCSR,
el valor del byte Fusible Extended (EFB) ser cargado en el registro de destino, como se muestra
a continuacin. Referirse a Tabla 27-5 en la pgina 296 para una descripcin detallada y mapeo del extendido
Byte Fuse.

Bit

Rd

BCI3

EFB2

BCI1

EFB0

Fusibles y Lock bits que se programan, se leer como cero. Fusibles y Lock bits que son
no programado, ser ledo como una sola.
08.26.10

La lectura de la Fila Firma de Software


Para leer la Fila Firma de software, cargar el Z-puntero con la direccin del byte firma
dada en Tabla 26-5 en la pgina 286 y establecer los bits SIGRD y SPMEN en SPMCSR. Cuando una
LPM instruccin se ejecuta dentro de los tres ciclos de la CPU despus de los bits SIGRD y SPMEN se establecen en
SPMCSR, el valor de byte firma ser cargado en el registro de destino. El SIGRD y
Pedacitos SPMEN se auto-evidente al finalizar la lectura de los bits de bloqueo Firma fila o si no LPM
instruccin se ejecuta dentro de los tres ciclos de la CPU. Cuando SIGRD y SPMEN se borran, LPM
trabajar como se describe en el conjunto de instrucciones Manual.

285
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 26-5.
Firma Byte

Z-puntero de direccin

Dispositivo Firma Byte 1

0x0000

Dispositivo Firma Byte 2

0x0002

Dispositivo Firma Byte 3

0x0004

Byte RC oscilador de calibracin

0x0001

Nota:

26.08.11

Firma Fila Dirigindose

Todas las otras direcciones estn reservadas para uso futuro.

Prevencin de la Corrupcin de Flash


Durante los perodos de baja VCC, el programa Flash puede estar daado debido a la tensin de alimentacin es
demasiado baja para la CPU y el flash para operar correctamente. Estos problemas son los mismos que para el tablero
sistemas de nivel utilizando el flash, y las mismas soluciones de diseo deben ser aplicados.
Una corrupcin programa Flash puede ser causada por dos situaciones en las que el voltaje es demasiado bajo. En primer lugar,
una
secuencia de escritura regular al Flash requiere una tensin mnima para funcionar correctamente. En segundo lugar,
la CPU s mismo puede ejecutar las instrucciones incorrectamente, si la tensin de alimentacin para ejecutar instrucciones
es demasiado baja.
Corrupcin Flash puede evitarse fcilmente siguiendo estas recomendaciones de diseo (uno es
suficiente):
1. Si no hay necesidad de una actualizacin del gestor de arranque en el sistema, el programa del gestor de arranque Lock
bits para evitar que las actualizaciones de software del gestor de arranque.
2. Mantenga RESET AVR activa (bajo) durante los perodos de tensin de alimentacin insuficiente.
Esto se puede hacer al permitir que el detector de Brown-cabo interna (BOD) si el voltaje operativo
edad coincide con el nivel de deteccin. Si no, un circuito externo de baja proteccin reinicio VCC puede ser
utilizado. Si se produce un restablecimiento mientras que una operacin de escritura est en progreso, la operacin de
escritura ser
completado siempre que la tensin de alimentacin es suficiente.
3. Mantenga el ncleo AVR en modo de reposo Energa-abajo durante perodos de baja VCC. Esto preventilar el CPU de intentar decodificar y ejecutar instrucciones, la proteccin efectiva
el Registro SPMCSR y por lo tanto el flash de las escrituras no intencionales.

26.08.12

Tiempo de programacin para Flash cuando se utiliza SPM


El calibrado RC oscilador se utiliza para el tiempo de Flash accesos. Tabla 26-6 muestra la pro- tpica
tiempo de programacin para Flash accede desde la CPU.
Tabla 26-6.

Smbolo

Tiempo Programacin Min

Escritura de Flash (Pgina Erase, Pgina Write, y


escribir bits de bloqueo por SPM)

3.7 ms

Nota:

08.26.13

SPM Tiempo Programacin(1)


Tiempo de programacin Max
4.5 ms

1. Mnimo y mximo tiempo de programacin es por operacin individual.

Cdigo simple Asamblea Ejemplo para un gestor de arranque


; -la Rutina escribe una pgina de datos de la RAM a Flash
; la primera ubicacin de los datos en la memoria RAM es apuntado por el
puntero Y
; la primera ubicacin de los datos en Flash es apuntado por la Z-puntero
; -error Manejo no est incluido

286
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


; -la Rutina debe ser colocado en el interior del espacio de arranque
; (Al menos la rutina sub Do_spm). Slo cdigo dentro de la seccin NRWW puede
; ser ledo durante la auto-programacin (Pgina Borrar y Pgina escritura).
; -libros Registro utilizadas: r0, r1, temp1 (r16), temp2 (r17), looplo (r24),
; loophi (r25), spmcrval (r20)
; almacenar y restaurar de registros no se incluye en la rutina
; uso de los registros se puede optimizar a expensas de tamao de cdigo
; -Es Se supone que o bien la tabla de interrupciones se mueve a la bota
; seccin del cargador o que las interrupciones estn deshabilitadas.
.equ PAGESIZEB = PAGESIZE * 2; PAGESIZEB es de tamao de pgina en bytes, no palabras
.org SMALLBOOTSTART
Write_page:
; Pgina Erase
LDI spmcrval, (1 << PGERS) | (1 << SELFPRGEN)
llamar Do_spm

; volver a habilitar la seccin RWW


spmcrval LDI, (1 << RWWSRE) | (1 << SELFPRGEN)
llamar Do_spm
; transferir datos desde la memoria RAM a bfer de pgina de Flash
looplo LDI, bajo (PAGESIZEB); variable de bucle init
loophi LDI, alta (PAGESIZEB); no se requiere para PAGESIZEB <= 256
Wrloop:
ldr0, Y +
LDR1, Y +
LDI spmcrval, (1 << SELFPRGEN)
llamar Do_spm
adiw ZH: ZL, 2
sbiw loophi: looplo, 2; utilizar subi para PAGESIZEB <= 256
Brne Wrloop

; ejecutar Pgina Escriba


subi ZL, bajo (PAGESIZEB); restaurar puntero
SBCI ZH, alta (PAGESIZEB); no se requiere para PAGESIZEB <= 256
spmcrval LDI, (1 << PGWRT) | (1 << SELFPRGEN)
llamar Do_spm

; volver a habilitar la seccin RWW


spmcrval LDI, (1 << RWWSRE) | (1 << SELFPRGEN)
llamar Do_spm
; leer atrs y comprobar, opcional
looplo LDI, bajo (PAGESIZEB); variable de bucle init
loophi LDI, alta (PAGESIZEB); no se requiere para PAGESIZEB <= 256
subi YL, bajo (PAGESIZEB); restaurar puntero
SBCI YH, alta (PAGESIZEB)
Rdloop:
r0 lpm, Z +
LDR1, Y +
cpse r0, r1
jmp Error
sbiw loophi: looplo, 1; utilizar subi para PAGESIZEB <= 256
Brne Rdloop

; regrese a la seccin RWW


; verifique que la seccin RWW es seguro para leer
Regreso:
intemp1, SPMCSR

287
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


temp1 SBR, RWWSB; Si RWWSB est establecido, la seccin RWW an no est listo
enriar
; volver a habilitar la seccin RWW
spmcrval LDI, (1 << RWWSRE) | (1 << SELFPRGEN)
llamar Do_spm
rjmp Volver

Do_spm:
; comprobar anterior completa SPM
Wait_spm:
intemp1, SPMCSR
temp1 SBRC, SELFPRGEN
rjmp Wait_spm
; entrada: spmcrval determina la accin SPM
; deshabilitar las interrupciones si est activado, el estado de tienda
intemp2, SREG
cli
; compruebe que no tiene acceso de escritura EEPROM est presente
Wait_ee:
SBIC EECR, EEPE
rjmp Wait_ee
; SPM secuencia temporizada
fuera SPMCSR, spmcrval
spm
; restaurar SREG (para habilitar las interrupciones si est habilitado
en un principio)
fuera SREG, temp2
enriar

288
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Parmetros del gestor de arranque ATmega88PA 26/08/14


En Tabla 26-7 a travs de Tabla 26-9, se dan los parmetros utilizados en la descripcin de la programacin propia.
Tabla 26-7.

BOOTSZ1

Bota Tamao de configuracin, ATmega88PA

BOOTSZ0

Bota
Tamao

Pginas

Bota
Cargador
Flash
Seccin

Fin
Aplicacin
Seccin

Bota Restablecer Direccin (inicio del gestor de arranque


Seccin)

0x000 - 0xF7F

0xF80 - 0xFFF

0xF7F

0xF80

128 palabras

256 palabras

0x000 - 0xEFF

0xF00 - 0xFFF

0xEFF

0xF00

512 palabras

16

0x000 - 0xDFF

0xE00 - 0xFFF

0xDFF

0xE00

1024 palabras

32

0x000 - 0xBFF

0xc00 - 0xFFF

0xBFF

0xc00

Nota:

Tabla 26-8.

Aplicacin
Flash
Seccin

Las diferentes configuraciones BOOTSZ fusibles se muestran en Figura 26-2 en la pgina 280.

Leer-While-Write Limit, ATmega88PA

Seccin

Pginas

Direccin

Leer-While-Write seccin (RWW)

96

0x000 - 0xBFF

Ninguna seccin Read-While-Write (NRWW)

32

0xc00 - 0xFFF

Para ms detalles sobre estos dos seccin, consulte "NRWW - no Seccin Lee-While-Write" en la pgina 278 y "RWW - Leer-tiempoEscribe Seccin "en la pgina 278
Tabla 26-9.

Explicacin de las distintas variables que se utilizan en Figura 26-3 y la cartografa de la Z-puntero, ATmega88PA
Correspondiente
Z-valor(1)

Variable

Descripcin

PCMSB

11

La mayor parte poco significativa en el contador de programa. (El contador de programa es


12 bits PC [11: 0])

PAGEMSB

El bit ms significativo que se utiliza para hacer frente a las palabras dentro de una
pgina (32 palabras en una pgina requiere 5 bits de PC [4: 0]).

ZPCMSB

Z12

Bit en Z-registro en el que se asigna a PCMSB. Debido a Z0 no se utiliza,


la ZPCMSB es igual PCMSB + 1.

ZPAGEMSB

Z5

Bit en Z-registro en el que se asigna a PAGEMSB. Debido a que no es Z0


utilizado, el ZPAGEMSB es igual PAGEMSB + 1.

PCPAGE

PC [11: 5]

Z12: Z6

PCWORD

PC [4: 0]

Z5: Z1

Nota:

Programa de direccin de la pgina contador: Pgina de seleccin, para la pgina de


borrado y
La pgina de escritura
Programa de direccin de contador de palabras: Palabra seleccionar, para el llenado
temporal
bfer (debe ser cero durante la operacin Pgina de escritura)

1. Z15: Z13: siempre ignorado


Z0: debe ser cero para todos los comandos de GDS, byte de seleccin para la instruccin LPM.
Ver "Abordar el flash durante la auto-programacin" en la pgina 282 para obtener detalles sobre el uso de la Z-puntero durante la cuenta
Programacin.

289
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Parmetros del gestor de arranque ATmega168PA 08/26/15
En Tabla 26-10 a travs de Tabla 26-12, se dan los parmetros utilizados en la descripcin de la programacin propia.
Tabla 26-10. Bota Tamao de configuracin, ATmega168PA

BOOTSZ1

BOOTSZ0

Bota
Tamao

Pginas

Aplicacin
Flash
Seccin

Bota
Cargador
Flash
Seccin

Fin
Aplicacin
Seccin

Bota Restablecer Direccin (inicio de arranque


Seccin Loader)

128 palabras

0x0000 - 0x1F7F

0x1F80 - 0x1FFF

0x1F7F

0x1F80

256 palabras

0x0000 - 0x1EFF

0x1F00 - 0x1FFF

0x1EFF

0x1F00

512 palabras

0x0000 - 0x1DFF

0x1E00 - 0x1FFF

0x1DFF

0x1E00

1024 palabras

16

0x0000 - 0x1BFF

0x1C00 - 0x1FFF

0x1BFF

0x1C00

Nota:

Las diferentes configuraciones BOOTSZ fusibles se muestran en Figura 26-2 en la pgina 280.

Tabla 26-11. Leer-While-Write Limit, ATmega168PA


Seccin

Pginas

Leer-While-Write seccin (RWW)


Ninguna seccin Read-While-Write (NRWW)

Direccin

112

0x0000 - 0x1BFF

16

0x1C00 - 0x1FFF

Para ms detalles sobre estos dos seccin, consulte "NRWW - no Seccin Lee-While-Write" en la pgina 278 y "RWW - Leer-tiempoEscribe Seccin "en la pgina 278

Tabla 26-12. Explicacin de las distintas variables que se utilizan en Figura 26-3 y la cartografa de la Z-puntero, ATmega168PA
Correspondiente
Z-valor(1)

Variable
PCMSB

La mayor parte poco significativa en el contador de programa. (El contador de programa


es 13 bits PC [12: 0])

12

PAGEMSB

Descripcin

El bit ms significativo que se utiliza para tratar las palabras dentro de


una pgina (64 palabras en una pgina requiere 6 bits PC [5: 0])

ZPCMSB

Z13

Bit en Z-registro en el que se asigna a PCMSB. Debido a Z0 no se utiliza,


la ZPCMSB es igual PCMSB + 1.

ZPAGEMSB

Z6

Bit en Z-registro en el que se asigna a PAGEMSB. Debido a que no es Z0


utilizado, el ZPAGEMSB es igual PAGEMSB + 1.

PCPAGE

PC [12: 6]

Z13: Z7

PCWORD

PC [5: 0]

Z6: Z1

Nota:

Programa de direccin de la pgina contador: Pgina de seleccin, para la pgina de


borrado y
La pgina de escritura
Programa de direccin de contador de palabras: Palabra seleccionar, para el llenado
temporal
bfer (debe ser cero durante la operacin Pgina de escritura)

1. Z15: Z14: siempre ignorado


Z0: debe ser cero para todos los comandos de GDS, byte de seleccin para la instruccin LPM.
Ver "Abordar el flash durante la auto-programacin" en la pgina 282 para obtener detalles sobre el uso de la Z-puntero durante la cuenta
Programacin.

290
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


08/26/16 Parmetros ATmega328P del gestor de arranque
En Tabla 26-13 a travs de Tabla 26-15, se dan los parmetros utilizados en la descripcin de la programacin propia.
Tabla 26-13. Bota Tamao de configuracin, ATmega328P

BOOTSZ1

BOOTSZ0

Bota
Tamao

Pginas

Aplicacin
Flash
Seccin

Bota
Cargador
Flash
Seccin

Fin
Aplicacin
Seccin

Bota Restablecer Direccin (inicio de arranque


Seccin Loader)

256 palabras

0x0000 - 0x3EFF

0x3F00 - 0x3FFF

0x3EFF

0x3F00

512 palabras

0x0000 - 0x3DFF

0x3E00 - 0x3FFF

0x3DFF

0x3E00

1024 palabras

16

0x0000 - 0x3BFF

0x3C00 - 0x3FFF

0x3BFF

0x3C00

2048 palabras

32

0x0000 - 0x37FF

0x3800 - 0x3FFF

0x37FF

0x3800

Nota:

Las diferentes configuraciones BOOTSZ fusibles se muestran en Figura 26-2 en la pgina 280.

Tabla 26-14. Leer-While-Write Limit, ATmega328P


Seccin

Pginas

Direccin

Leer-While-Write seccin (RWW)

224

0x0000 - 0x37FF

Ninguna seccin Read-While-Write (NRWW)

32

0x3800 - 0x3FFF

Para ms detalles sobre estos dos seccin, consulte "NRWW - no Seccin Lee-While-Write" en la pgina 278 y "RWW - Leer-tiempoEscribe Seccin "en la pgina 278.

Tabla 26-15. Explicacin de las distintas variables que se utilizan en Figura 26-3 y la cartografa de la Z-puntero, ATmega328P
Correspondiente
Z-valor(1)

Variable
PCMSB

La mayor parte poco significativa en el contador de programa. (El contador de programa


es de 14 bits de PC [13: 0])

13

PAGEMSB

Descripcin

El bit ms significativo que se utiliza para tratar las palabras dentro de


una pgina (64 palabras en una pgina requiere 6 bits PC [5: 0])

ZPCMSB

Z14

Bit en Z-registro en el que se asigna a PCMSB. Debido a Z0 no se utiliza,


la ZPCMSB es igual PCMSB + 1.

ZPAGEMSB

Z6

Bit en Z-registro en el que se asigna a PAGEMSB. Debido a que no es Z0


utilizado, el ZPAGEMSB es igual PAGEMSB + 1.

PCPAGE

PC [13: 6]

Z14: Z7

PCWORD

PC [5: 0]

Z6: Z1

Nota:

Programa de direccin de la pgina contador: Pgina de seleccin, para la pgina de


borrado y
La pgina de escritura
Programa de direccin de contador de palabras: Palabra seleccionar, para el llenado
temporal
bfer (debe ser cero durante la operacin Pgina de escritura)

1. Z15: siempre ignorado


Z0: debe ser cero para todos los comandos de GDS, byte de seleccin para la instruccin LPM.
Ver "Abordar el flash durante la auto-programacin" en la pgina 282 para obtener detalles sobre el uso de la Z-puntero durante la cuenta
Programacin.

291
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


26.9

Registro Descripcin

26.9.1

SPMCSR - Tienda Programa de Control de la Memoria y Registro de Estado


El control de la memoria y el Registro de Estado Programa tienda contiene los bits de control necesarias para concontrol de las operaciones del gestor de arranque.
Bit
0x37 (0x57)
Lectura / Escritura
Valor inicial

SPMIE

RWWSB

RWWSRE

BLBSET

PGWRT

PGERS

R/W

R/W

R/W

R/W

R/W

R/W

SELFPRGEN

SPMCSR

Bit 7 - SPMIE: SPM habilitacin de interrupcin


Cuando el bit SPMIE se escribe en uno, y el I-bit en el registro de estado se establece (uno), la SPM
listo interrupcin se activar. El SPM lista de interrupcin se ejecutar siempre que la AUTOPRGEN poco en el Registro SPMCSR se borra.

Bit 6 - RWWSB: Seccin Leer-While-Write Ocupado


Cuando un auto-programacin (Pgina Erase o Pgina escritura) operacin a la seccin RWW es iniATED, la RWWSB se establecer (uno) por hardware. Cuando se establece el bit RWWSB, la seccin RWW
no se puede acceder. El bit RWWSB se borrar si el bit RWWSRE se escribe en uno despus de un
Se completa la operacin de auto-programacin. Alternativamente, el bit RWWSB ser automticamente
aclarado si se inicia una operacin de carga de la pgina.

Bit 5 - Res: Reservado Bit


Este bit es un bit reservado en el ATmega48PA / 88PA / 168PA / 328P y lea siempre como cero.
Bit 4 - RWWSRE: Leer-While-Escribir la seccin de habilitacin de lectura
Al programar (Pgina Erase o Pgina escritura) a la seccin RWW, la seccin RWW es
bloqueados para la lectura (el RWWSB ser fijado por hardware). Para volver a habilitar la seccin RWW, la
software de usuario debe esperar hasta que se complete la programacin (SELFPRGEN se borrar).
Entonces, si el bit RWWSRE se escribe en uno al mismo tiempo que SELFPRGEN, el siguiente SPM
instruccin dentro de los cuatro ciclos de reloj vuelve a habilitar la seccin RWW. La seccin RWW no puede ser
re-activar mientras el flash est ocupado con una Erase pgina o en un Comentario Pgina (SELFPRGEN est establecido). Si
el bit RWWSRE est escrito mientras el flash se est cargando, la operacin de carga de Flash abortar
y los datos cargados se perdern.

Bit 3 - BLBSET: Bloqueo de arranque Set Bit


Si este bit se escribe en uno al mismo tiempo que SELFPRGEN, la siguiente instruccin SPM dentro de los cuatro
ciclos de reloj establece bits de bloqueo de arranque y los bits de bloqueo de memoria, de acuerdo con los datos de R0. Los datos
de
R1 y la direccin en el Z-puntero se ignoran. El bit BLBSET automticamente se borra
Al finalizar el conjunto de bits de bloqueo, o si ninguna instruccin SPM se ejecuta dentro de los cuatro ciclos de reloj.
Una instruccin LPM dentro de los tres ciclos despus BLBSET y SELFPRGEN estn situados en el SPMCSR
Registrar, leer tanto los bits de bloqueo o los bits de fusibles (dependiendo de Z0 en el Z-puntos) en el
registro de destino. Ver "Estado de los fusibles y Lock Bits de software" en la pgina 284 para
detalles.

Bit 2 - PGWRT: Pgina Escribir


Si este bit se escribe en uno al mismo tiempo que SELFPRGEN, la siguiente instruccin SPM dentro de los cuatro
ciclos de reloj ejecuta Pgina Escriba, con los datos almacenados en el buffer temporal. La pgina
direccin se toma de la parte alta de la Z-puntero. Se ignoran los datos en R1 y R0. La

292
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Ser, o si no se ejecuta ninguna instruccin SPM-borrado automtico tras la finalizacin de una pgina de escritura PGWRT poco
dentro de los cuatro ciclos de reloj. Se detiene la CPU durante toda la operacin de escritura de pgina si el NRWW
seccin est dirigida.
Bit 1 - PGERS: Pgina Borrado
Si este bit se escribe en uno al mismo tiempo que SELFPRGEN, la siguiente instruccin SPM dentro de los cuatro
ciclos de reloj ejecuta Pgina Borrar. La direccin de la pgina es tomado de la parte alta de la Zpuntero. Se ignoran los datos en R1 y R0. El bit PGERS se auto-evidente al trmino de un
Pgina Borrar, o si ninguna instruccin SPM se ejecuta dentro de los cuatro ciclos de reloj. La CPU se detiene durante
ing toda la operacin de escritura de pgina si se dirige la seccin NRWW.

Bit 0 - SELFPRGEN: Auto Programacin Habilitar


Este bit habilita la instruccin SPM para los prximos cuatro ciclos de reloj. Si escrito a uno junto con
ya sea RWWSRE, BLBSET, PGWRT o PGERS, la siguiente instruccin SPM tendr una espesignificado cial, ver descripcin anterior. Si slo SELFPRGEN est escrito, lo siguiente SPM
instruccin almacenar el valor en R1: R0 en el tampn de pgina temporal abordado por la Z-puntero.
El LSB del Z-puntero se ignora. El bit SELFPRGEN se auto-evidente al trmino de un
Instruccin SPM, o si ninguna instruccin SPM se ejecuta dentro de los cuatro ciclos de reloj. Durante Pgina Erase
y Pgina Escriba, el bit SELFPRGEN sigue siendo alto hasta que se complete la operacin.

Escribir cualquier otra combinacin de "10001", "01001", "00101", "00011" o "00001" en la parte inferior
cinco bits no tendrn ningn efecto.

293
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Programacin 27. Memoria


27.1

Programa y bloqueo de memoria Bits de datos


El ATmega88PA / 168PA / 328P ofrece seis bits de bloqueo que se pueden dejar sin programar ("1") o
Se pueden programar ("0") para obtener las caractersticas adicionales que figuran en el Tabla 27-2. Los bits de bloqueo puede
slo borrar en "1" con el comando de Chip Erase. El ATmega48PA no tiene arranque separada
Seccin Loader. La instruccin SPM est habilitada para todo el flash si el fusible es SELFPRGEN
programada ("0"), de lo contrario, se desactiva.

Tabla 27-1.

Byte Bit Lock(1)

Byte Bit Lock

Descripcin

Valor predeterminado

1 (no programada)

1 (no programada)

BLB12(2)

Bloqueo de arranque poco

1 (no programada)

BLB11(2)

Bloqueo de arranque poco

1 (no programada)

BLB02(2)

Bloqueo de arranque poco

1 (no programada)

BLB01(2)

Bloqueo de arranque poco

1 (no programada)

LB2

Poco Lock

1 (no programada)

LB1

Poco Lock

1 (no programada)

Notas:

Bit n

1. "1" significa no programada, "0" significa programada.


2. Slo en ATmega88PA / 168PA / 328P.

Tabla 27-2.

Modos de proteccin bit de bloqueo(1) (2)

Bloqueo de memoria Bits

Tipo de proteccin

Modo LB

LB2

LB1

Notas:

No hay funciones de bloqueo de la memoria


habilitadas.
Adems de la programacin Flash y EEPROM est deshabilitado en
Modo de Programacin Paralela y Serial. Los bits de fusible
encerrado en tanto modo de Programacin Serie y Paralelo.(1)
Adems la programacin y verificacin del flash y EEPROM
se desactiva en el modo de Programacin Paralela y Serial. The Boot
Bloquee los bits y los bits fusibles estn bloqueados, tanto en serie y paralelo
Modo de programacin.(1)

1. Programa de los bits fusibles y los bits de bloqueo de arranque antes de programar el LB1 y LB2.
2. "1" significa no programada, "0" significa programados

294
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 27-3.
Modo BLB0

BLB02

BLB01

No hay restricciones para SPM o LPM acceder a la aplicacin


seccin.

SPM no se permite escribir en la seccin de aplicaciones.

SPM no est permitido escribir en la seccin Aplicacin, y LPM


la ejecucin de la seccin del cargador de arranque no se le permite leer
desde la seccin de aplicaciones. Si vectores de interrupcin se colocan en
la seccin del gestor de arranque, las interrupciones estn deshabilitadas durante la
ejecucin
desde la seccin de aplicaciones.

LPM ejecucin de la seccin del cargador de arranque no est permitido


leer de la seccin de aplicaciones. Si se colocan vectores de interrupcin
en la seccin del gestor de arranque, las interrupciones estn deshabilitadas mientras
la ejecucin de la seccin Aplicacin.

BLB12

BLB11

No hay restricciones para SPM o LPM acceder al gestor de arranque


seccin.

SPM no est permitido escribir en la seccin del cargador de arranque.

SPM no est permitido escribir en la seccin del gestor de arranque, y LPM


la ejecucin de la seccin de aplicaciones no se le permite leer
de la seccin del cargador de arranque. Si vectores de interrupcin se colocan en
la seccin Aplicacin, las interrupciones estn deshabilitadas durante la ejecucin
de la seccin del cargador de arranque.

LPM ejecucin de la seccin de aplicacin no se le permite


leer la seccin del cargador de arranque. Si los vectores de interrupcin son
colocado en la seccin Aplicacin, las interrupciones estn deshabilitadas mientras
la ejecucin de la seccin del cargador de arranque.

Modo BLB1

Notas:

27.2

Modos de proteccin bit de bloqueo(1) (2). Slo ATmega88PA / 168PA / 328P.

1. Programa de los bits fusibles y los bits de bloqueo de arranque antes de programar el LB1 y LB2.
2. "1" significa no programada, "0" significa programados

Fuse Bits
El ATmega48PA / 88PA / 168PA / 328P tiene tres bytes de fusibles. Tabla 27-5 -Tabla 27-9 describir
brevemente la funcionalidad de todos los fusibles y la forma en que se asignan a los bytes de fusibles. Tenga en cuenta que
los fusibles se leen como lgico cero "0", si se programan.
Tabla 27-4.

Byte Fusible extendido para ATmega48PA

Byte Fusible extendido

Bit n

Descripcin

Valor predeterminado

SELFPRGEN

Auto Programacin Habilitar

1 (no programada)

295
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 27-5.

Byte Fusible extendido para ATmega88PA / 168PA

Byte Fusible extendido

Bit n

Descripcin

Valor predeterminado

Seleccione Boot Size


(Ver
Tabla 26-7 en la pgina 289 y
Tabla 26-10 en la pgina 290
para ms detalles)

0 (programado)(1)

BOOTSZ0

Seleccione Boot Size


(Ver
Tabla 26-7 en la pgina 289 y
Tabla 26-10 en la pgina 290
para ms detalles)

0 (programado)(1)

BOOTRST

Seleccione Restablecer Vector

1 (no programada)

BOOTSZ1

Nota:

1. El valor por defecto de BOOTSZ [1: 0] resulta en el mximo tamao de arranque. Ver "Pin Asignacin de nombres" en la
pgina 300.

Tabla 27-6.

Byte Fusible extendido para ATmega328P

Byte Fusible extendido

Bit n

Descripcin

Valor predeterminado

BODLEVEL2(1)

Brown-fuera gatillo Detector


nivel

1 (no programada)

BODLEVEL1(1)

Brown-fuera gatillo Detector


nivel

1 (no programada)

BODLEVEL0(1)

Brown-fuera gatillo Detector


nivel

1 (no programada)

Nota:

1. Ver Tabla 28-4 en la pgina 318 para la decodificacin BODLEVEL Fuse.

Tabla 27-7.
Byte Alto Fuse

Fuse Byte alto para ATmega48PA / 88PA / 168PA


Bit n

Descripcin

Valor predeterminado

RSTDISBL(1)

Restablecer externa Desactivar

1 (no programada)

DWEN

debugWIRE Habilitar

1 (no programada)

SPIEN(2)

Habilitar programa de serie y


Descarga de datos

0 (programado, SPI
programacin est activado)

296
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 27-7.

Fuse Byte alto para ATmega48PA / 88PA / 168PA (Continuacin)

Byte Alto Fuse

Bit n

Descripcin

Valor predeterminado

WDTON(3)

Watchdog Timer Always On

1 (no programada)

EESAVE

La memoria EEPROM es
preservado a travs del chip
Borrar

1 (no programada), EEPROM


no reservados

BODLEVEL2(4)

Brown-fuera gatillo Detector


nivel

1 (no programada)

BODLEVEL1(4)

Brown-fuera gatillo Detector


nivel

1 (no programada)

BODLEVEL0(4)

Brown-fuera gatillo Detector


nivel

1 (no programada)

Notas:

1.
2.
3.
4.

Ver "Funciones alternativas de Puerto C" en la pgina 85 para la descripcin de RSTDISBL Fuse.
El SPIEN fusible no es accesible en el modo de programacin en serie.
Ver "WDTCSR - Watchdog Timer Registro de control" en la pgina 54 para ms detalles.
Ver Tabla 28-4 en la pgina 318 para la decodificacin BODLEVEL Fuse.

Tabla 27-8.

Fuse Byte alto para ATmega328P

Byte Alto Fuse

Bit n

Descripcin

Valor predeterminado

RSTDISBL(1)

Restablecer externa Desactivar

1 (no programada)

DWEN

debugWIRE Habilitar

1 (no programada)

SPIEN(2)

Habilitar programa de serie y


Descarga de datos

0 (programado, SPI
programacin est activado)

WDTON(3)

Watchdog Timer Always On

1 (no programada)

EESAVE

La memoria EEPROM es
preservado a travs del chip
Borrar

1 (no programada), EEPROM


no reservados

Seleccione Boot Size


(Ver
Tabla 26-7 en la pgina 289,
Tabla 26-10 en la pgina 290 y
Tabla 26-13 en la pgina 291
para ms detalles)

0 (programado)(4)

Seleccione Boot Size


(Ver
Tabla 26-7 en la pgina 289,
Tabla 26-10 en la pgina 290 y
Tabla 26-13 en la pgina 291
para ms detalles)

0 (programado)(4)

Seleccione Restablecer Vector

1 (no programada)

BOOTSZ1

BOOTSZ0

BOOTRST

Notas:

1.
2.
3.
4.

Ver "Funciones alternativas de Puerto C" en la pgina 85 para la descripcin de RSTDISBL Fuse.
El SPIEN fusible no es accesible en el modo de programacin en serie.
Ver "WDTCSR - Watchdog Timer Registro de control" en la pgina 54 para ms detalles.
El valor por defecto de BOOTSZ [1: 0] resultados en mximo tamao de arranque. Ver "Pin Asignacin de nombres" en la
pgina 300.

297
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 27-9.

Fuse Byte bajo

Byte bajo Fuse

Bit n

Descripcin

Valor predeterminado

CKDIV8(4)

Divida reloj por 8

0 (programado)

CKOUT(3)

Salida de reloj

1 (no programada)

SUT1

Seleccione el tiempo de arranque

1 (no programada)(1)

SUT0

Seleccione el tiempo de arranque

0 (programado)(1)

CKSEL3

Seleccione la fuente de reloj

0 (programado)(2)

CKSEL2

Seleccione la fuente de reloj

0 (programado)(2)

CKSEL1

Seleccione la fuente de reloj

1 (no programada)(2)

CKSEL0

Seleccione la fuente de reloj

0 (programado)(2)

Nota:

1. El valor predeterminado de resultados SUT1..0 en mximo tiempo de arranque de la fuente de reloj por defecto.
Ver Tabla 8-12 en la pgina 33 para ms detalles.
2. El ajuste predeterminado de resultados CKSEL3..0 en el oscilador RC interno @ 8 MHz. Ver Tabla 8.11 en
pgina 33 para ms detalles.
3. El CKOUT Fuse permite al reloj del sistema, que debe emitirse en PORTB0. Ver "Clock Output Buffer"
en la pgina 35 para ms detalles.
4. Ver "Sistema de reloj de divisor" en la pgina 35 para ms detalles.

El estado de los bits de fusibles no se ve afectada por Chip Erase. Tenga en cuenta que los bits fusibles estn bloqueadas si
Bloqueo bit1 (LB1) est programado. Programa de los bits de fusibles antes de la programacin de los bits de bloqueo.
27.2.1

27.3

Enclavamiento de Fusibles
Los valores de los fusibles estn enganchados cuando el dispositivo entra en el modo de programacin y cambios en la
valores de los fusibles no tendrn efecto hasta que la pieza sale del modo de programacin. Esto no se aplica a
la EESAVE fusible que se llevar a efecto una vez que se programa. Los fusibles tambin se aferraron
Encendido en el modo Normal.

Bytes Signature
Todos los microcontroladores Atmel tienen un cdigo de firma de tres bytes que identifica el dispositivo. Este
cdigo puede ser ledo tanto en modo serie y paralelo, tambin cuando el dispositivo est bloqueado. Los tres
bytes residen en un espacio de direcciones separado. Para el ATmega48PA / 88PA / 168PA / 328P la signatura
bytes tura se dan en Tabla 27-10.

Tabla 27-10. ID de dispositivo


Bytes Firma Direccin

27.4

Parte

0x000

0x001

0x002

ATmega48PA

0x1E

0x92

0x0A

ATmega88PA

0x1E

0x93

0x0F

ATmega168PA

0x1E

0x94

0x0B

ATmega328P

0x1E

0x95

0x0F

Byte Calibracin
El ATmega48PA / 88PA / 168PA / 328P tiene un valor de calibracin byte para el oscilador RC interno.
Este byte reside en el byte alto de la direccin 0x000 en el espacio de direcciones firma. Durante reset,

298
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


este byte se escribe automticamente en el Registro OSCCAL para asegurar la correcta frecuencia de la
calibrado oscilador RC.

27.5

Tamao de pgina
Tabla 27-11. No. de palabras en una pgina y No. de pginas en Flash
Dispositivo

Tamao de FlashTamao de pgina


PCWORD

ATmega48PA

Palabras 2K
(4K bytes)

32 palabras

PC [4: 0]

ATmega88PA

Palabras 4K
(8K bytes)

32 palabras

ATmega168PA
ATmega328P

Palabras 8K
(16K bytes)

16K palabras
(32K bytes)

No. de
Pginas

PCPAGE

PCMSB

64

PC [10: 5]

10

PC [4: 0]

128

PC [11: 5]

11

64 palabras

PC [5: 0]

128

PC [12: 6]

12

64 palabras

PC [5: 0]

256

PC [13: 6]

13

Tabla 27-12. No. de palabras en una pgina y No. de pginas en la memoria EEPROM

27.6

Dispositivo

EEPROM
Tamao

Pgina
Tamao

ATmega48PA

256 bytes

4 bytes

EEE [1: 0]

ATmega88PA

512 bytes

4 bytes

ATmega168PA

512 bytes

ATmega328P

Bytes 1K

PCWORD

No. de
Pginas

PCPAGE

EEAMSB

64

EEE [7: 2]

EEE [1: 0]

128

EEE [8: 2]

4 bytes

EEE [1: 0]

128

EEE [8: 2]

4 bytes

EEE [1: 0]

256

EEE [9: 2]

Parmetros de programacin paralela, la cartografa Pin y comandos


En esta seccin se describe cmo paralela programa y verifique la memoria de programa Flash, EEPROM
Memoria de datos, bits de memoria de bloqueo, y los bits de fusibles en el ATmega48PA / 88PA / 168PA / 328P. Pulsos
se supone que son al menos 250 ns a menos que se indique lo contrario.

27.6.1

Nombres de las seales


En esta seccin, algunos pines del ATmega48PA / 88PA / 168PA / 328P son referenciados por seal
nombres que describen su funcionalidad durante la programacin en paralelo, ver Figura 27-1 y Tabla 2713. Prendedores no descritas en la siguiente tabla se referencian por nombres de los pines.
Los pasadores / XA0 Xa1 determinar la accin que se ejecuta cuando el pasador XTAL1 se da un impulso positivo.
La codificacin de bits se muestra en Tabla 27-15.
Cuando pulsante WR o OE, el comando cargado determina la accin ejecutada. La diferente
Los comandos se muestran en Tabla 27-16.

299
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 27-1. Programacin Paralela
4.5 - 5.5V
RDY / BSY

PD1

OE

PD2

VCC

WR

PD3

BS1

PD4

XA0

PD5

XA1

PD6

PAGEL

4.5 - 5.5V
AVCC
PC [1: 0]: PB [5: 0]

DATOS

PD7

12 V

REINICIO

BS2

PC2
XTAL1
GND

Nota:

VCC - 0,3 V <AVCC <VCC + 0.3V, sin embargo, AVCC debe siempre estar dentro de 4.5 - 5.5V

Tabla 27-13. Mapping Pin Nombre


Nombre de la seal en
Modo de programacin

Nombre Pin

I/O

Funcin

RDY / BSY

PD1

OE

PD2

YO

0: El dispositivo es la programacin ocupado, 1: El dispositivo


est
listo para el nuevo comando
Habilitacin de salida (bajo activo)

WR

PD3

YO

Pulso Write (bajo activo)

BS1

PD4

YO

Byte Seleccione 1 ("0" selecciona Byte bajo, "1" selecciona


Byte alto)

XA0

PD5

YO

XTAL Accin Bit 0

XA1

PD6

YO

XTAL Accin Bit 1

PAGEL

PD7

YO

La memoria de programa y EEPROM de datos Page


Carga

BS2

PC2

YO

Byte Seleccionar 2 ("0" selecciona Byte bajo, "1" selecciona


2'nd byte alto)

DATOS

{PC [1: 0]: PB [5: 0]}

I/O

El bus de datos bidireccional (Salida cuando OE es baja)

Tabla 27-14. Valores PIN utilizado para acceder al modo de programacin


Perno

Smbolo

Valor

PAGEL

Prog_enable [3]

XA1

Prog_enable [2]

XA0

Prog_enable [1]

BS1

Prog_enable [0]

300
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

Tabla 27-15. XA1 y XA0 Codificacin


XA1

XA0

Accin cuando XTAL1 es Pulsada

Flash de carga o direccin EEPROM (alta o baja byte de direccin determinada por BS1).

Cargar datos (byte de datos de alta o baja para Flash determinado por BS1).

Comando de carga

No Accin, Idle

Tabla 27-16. Comando Codificacin Bit Byte


Comando Byte

27.7

Comando Ejecutado

1000 0000

Viruta borra

0100 0000

Escribe bits de fusibles

0010 0000

Escribe bits de bloqueo

0001 0000

Escribir flash

0001 0001

Escribir EEPROM

0000 1000

Leer Bytes firma y byte de calibracin

0000 0100

Leer fusibles y Lock pedacitos

0000 0010

Leer flash

0000 0011

Leer EEPROM

Programacin Paralela

27.7.1

Entrar en el modo de programacin


El siguiente algoritmo pone el dispositivo en paralelo (alta tensin) el modo de programacin:
1. Establezca pasadores Prog_enable enumerados en Tabla 27-14 en la pgina 300 a "0000", RESET pin a 0 V y
VCC a 0V.
2. Aplicar 4.5 - 5.5V entre VCC y GND.
Asegrese de que VCC alcance, al menos 1,8 V dentro de los prximos 20 mS.
3. Espere 20 a 60 mS, y aplicar 11,5 - 12,5 V RESET.
4. Mantenga los pasadores Prog_enable sin cambios durante al menos 10s despus de la alta tensin ha sido
aplicado para garantizar la Firma Prog_enable se ha enganchado.
5. Espere al menos 300 mS antes de dar cualquier comando de programacin paralela.
6. Salga del modo de programacin por apague el dispositivo o llevando pin RESET para 0V.
Si el tiempo de subida del VCC es incapaz de cumplir con los requisitos antes mencionados, la siguiente alternativa
tiva algoritmo puede ser utilizado.
1. Establezca pasadores Prog_enable enumerados en Tabla 27-14 en la pgina 300 a "0000", RESET pin a 0 V y
VCC a 0V.
2. Aplicar 4.5 - 5.5V entre VCC y GND.
3. Monitorear VCC, y tan pronto como llega a 0,9 VCC - 1.1V, aplique 11,5 - 12,5 V RESET.

301
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


4. Mantenga los pasadores Prog_enable sin cambios durante al menos 10s despus de la alta tensin ha sido
aplicado para garantizar la Firma Prog_enable se ha enganchado.
5. Espere hasta que llegue realmente a 4,5 VCC -5.5V antes de dar ningn tipo de programacin paralela
comandos.
6. Salga del modo de programacin por apague el dispositivo o llevando pin RESET para 0V.
27.7.2

Consideraciones para la programacin eficiente


El comando cargado y direccin son retenidos en el dispositivo durante la programacin. Para eficiente
programacin, lo siguiente debe ser considerado.
Las necesidades de mando slo se cargan una vez al escribir o leer mltiples posiciones de memoria.
Saltar a escribir el valor de los datos 0xFF, que es el contenido de la totalidad de la EEPROM (a menos que el
EESAVE fusible est programado) y Flash despus de un borrado Chip.
Direccin byte alto slo necesita ser cargado antes de la programacin o la lectura de un nuevo 256 palabra
ventana en Flash o EEPROM 256 byte. Esta consideracin tambin se aplica a los bytes de firma
la lectura.

27.7.3

Viruta borra
El Borrado Chip borrar el flash y EEPROM(1) recuerdos ms bits de bloqueo. Los bits son Lock
No restablezca hasta que la memoria del programa ha sido completamente borrado. Los bits de fusibles no son
cambiado. Un Erase chip debe ser realizado antes de que el flash y / o EEPROM son
reprogramado.
Nota:

1. La memoria EEPRPOM se conserva durante viruta borra si el EESAVE fusible est programado.

Cargar Comando "Chip Erase"


1. Conjunto XA1, XA0 a "10". Esto permite comando de carga.
2. Conjunto BS1 a "0".
3. Conjunto de datos a "1000 0000". Este es el comando para Chip Erase.
4. Dar XTAL1 un impulso positivo. Esto carga el comando.
5. Dar WR un pulso negativo. Esto inicia el borrado Chip. RDY / BSY pasa a nivel bajo.
6. Espere hasta RDY / BSY va alto antes de cargar un nuevo comando.
27.7.4

Programacin del flash


El flash se organiza en pginas, ver Tabla 27-11 en la pgina 299. Al programar el flash,
los datos del programa se enclava en un bfer de pgina. Esto permite que una pgina de datos del programa para ser programado simultneamente. El siguiente procedimiento describe cmo programar todo el flash
memoria:

A. comando load "Write Flash"


1. Conjunto XA1, XA0 a "10". Esto permite comando de carga.
2. Conjunto BS1 a "0".
3. Conjunto de datos a "0001 0000". Este es el comando para Flash Write.
4. Dar XTAL1 un impulso positivo. Esto carga el comando.
B. Direccin Cargar byte bajo
1. Conjunto XA1, XA0 a "00". Esto permite a la direccin de carga.
2. Conjunto BS1 a "0". Selecciona bajo direccin.
3. DATOS Set = Direccin byte bajo (0x00 - 0xFF).

302
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


4. Dar XTAL1 un impulso positivo. Esto carga el byte bajo direccin.
C. Cargar datos byte bajo
1. Conjunto XA1, XA0 a "01". Esto permite la carga de datos.
2. Conjunto de datos = datos byte bajo (0x00 - 0xFF).
3. Dar XTAL1 un impulso positivo. Esto carga el byte de datos.
D. Cargar datos byte alto
1. Conjunto BS1 a "1". Esto selecciona alta byte de datos.
2. Conjunto XA1, XA0 a "01". Esto permite la carga de datos.
3. Conjunto de datos = datos byte alto (0x00 - 0xFF).
4. Dar XTAL1 un impulso positivo. Esto carga el byte de datos.
E. Latch datos
1. Conjunto BS1 a "1". Esto selecciona alta byte de datos.
2. Dar PAGEL un impulso positivo. Este pestillos de los bytes de datos. (Ver Figura 27-3 para la seal de
formas de onda)
F. Repita B a E hasta que todo el buffer se llena o hasta que se cargue todos los datos dentro de la pgina.
Mientras que los bits inferiores de la direccin se asignan a las palabras dentro de la pgina, abordan los bits superiores
las pginas de la FLASH. Esto se ilustra en Figura 27-2 en la pgina 304. Tenga en cuenta que si tiene menos de
Se necesitan ocho bits para hacer frente a las palabras en la pgina (pagesize <256), el bit ms significativo (s)
en la direccin de byte bajo se utilizan para hacer frente a la pgina cuando se realiza una pgina de escritura.
G. Carga Direccin Byte alto
1. Conjunto XA1, XA0 a "00". Esto permite a la direccin de carga.
2. Conjunto BS1 a "1". Esto selecciona alta direccin.
3. DATOS Set = Direccin byte alto (0x00 - 0xFF).
4. Dar XTAL1 un impulso positivo. Esto carga el byte alto de direcciones.
Programa H. Pgina
1. Dar WR un pulso negativo. As se inicia la programacin de toda la pgina de datos. RDY / BSY
pasa a baja.
2. Espere hasta que RDY / BSY aumenta (Ver Figura 27-3 de formas de onda de la seal).
I. Repita B a H hasta que el flash est programado o hasta que todos los datos han sido
programado.
J. Fin Pgina Programacin
1. 1. Conjunto XA1, XA0 a "10". Esto permite comando de carga.
2. Set DATA para "0000 0000". Este es el comando para No operacin.
3. Dar XTAL1 un impulso positivo. Esto carga el comando, y las seales de escritura internos son
restablecer.

303
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 27-2. Abordar el flash que se organiza en pginas(1)
PCMSB

PAGEMSB

PROGRAMA
CONTADOR

PCPAGE

PCWORD

Direccin de la pgina
DENTRO DEL FLASH

DIRECCIN DE PALABRAS
Dentro de una pgina

PROGRAMA DE MEMORIA

PGINA

PGINA

PCWORD [PAGEMSB: 0]:


00

PALABRA DE INSTRUCCIONES

01
02

PAGEEND

Nota:

1. PCPAGE y PCWORD estn listados en Tabla 27-11 en la pgina 299.

Figura 27-3. Programacin de las formas de onda de Flash(1)


F

La
DATOS

0x10

B
Dir. BAJA

DATOS DE BAJA DATOS DE ALTA

XX

Dir. BAJA

DATOS DE BAJA DATOS DE ALTA

E
XX

G
Dir. ALTA

H
XX

XA1

XA0

BS1

XTAL1

WR

RDY / BSY

REAJUSTE + 12V

OE

PAGEL

BS2

Nota:

27.7.5

1. "XX" es no me importa. Las letras se refieren a la descripcin de programacin anterior.

Programacin de la EEPROM
La EEPROM se organiza en pginas, ver Tabla 27-12 en la pgina 299. En la programacin de la
EEPROM, los datos del programa se enclava en un bfer de pgina. Esto permite que una pgina de datos para ser
programados al mismo tiempo. El algoritmo de programacin para la memoria de datos EEPROM es tan
siguientes (consulte "Programacin del flash" en la pgina 302 para ms detalles sobre comandos, Direccin y
Carga de datos):

1. A: Cargue de Comando "0001 0001".


2. G: Carga Direccin Byte alto (0x00 - 0xFF).
3. B: Carga Direccin Byte bajo (0x00 - 0xFF).
4. C: Cargar datos (0x00 - 0xFF).

304
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


5. E: retencin de datos (dar PAGEL un pulso positivo).
K: Repita 3 a 5 hasta que se llena el bfer completo.
L: pgina EEPROM Programa
1. Conjunto BS1 a "0".
2. Dar WR un pulso negativo. As se inicia la programacin de la pgina EEPROM. RDY / BSY
pasa a baja.
3. Espere hasta que RDY / BSY va alto antes de programar la pgina siguiente (Ver Figura 27-4 para
formas de onda de la seal).
Figura 27-4. Programacin de las formas de onda de EEPROM
K

La
DATOS

0x11

G
Dir. ALTA

B
Dir. BAJA

DATOS

XX

Dir. BAJA

C
DATOS

XX

XA1

XA0

BS1

XTAL1

WR

RDY / BSY

REAJUSTE + 12V

OE

PAGEL

BS2

27.7.6

Lectura de la flash
El algoritmo para la lectura de la memoria flash es el siguiente (consulte "Programacin del flash" en la
pgina 302 para ms detalles sobre Mando y Direccin de carga):
1. A: Cargue de Comando "0000 0010".
2. G: Carga Direccin Byte alto (0x00 - 0xFF).
3. B: Carga Direccin Byte bajo (0x00 - 0xFF).
4. Conjunto OE a "0", y BS1 a "0". La palabra de Flash byte bajo ahora se puede leer en DATA.
5. Conjunto BS1 a "1". La palabra de Flash byte alto ahora se puede leer en DATA.
6. Conjunto OE a "1".

27.7.7

La lectura de la EEPROM
El algoritmo para la lectura de la memoria EEPROM es como sigue (vase "Programacin del flash"
en la pgina 302 para ms detalles sobre Mando y Direccin de carga):
1. A: Cargue de Comando "0000 0011".
2. G: Carga Direccin Byte alto (0x00 - 0xFF).
3. B: Carga Direccin Byte bajo (0x00 - 0xFF).
4. Conjunto OE a "0", y BS1 a "0". El byte EEPROM de datos ahora se puede leer en DATA.
5. Conjunto OE a "1".

305
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


27.7.8

Programacin de los Bits de fusibles de baja


El algoritmo para la programacin de los bits fusibles de baja es la siguiente (consulte "Programacin del flash"
en la pgina 302 para obtener informacin sobre comandos y datos de carga):
1. A: Cargue de Comando "0100 0000".
2. C: Carga de datos Byte bajo. "0" programas y poco n = Bit n = "1" borra el bit fusible.
3. Dar WR un pulso negativo y esperar RDY / BSY sea alta.

27.7.9

Programacin de los fusibles de alta Bits


El algoritmo para la programacin de los bits de fusible de alta es la siguiente (consulte "Programacin del
Flash "en la pgina 302 para obtener informacin sobre comandos y datos de carga):
1. A: Cargue de Comando "0100 0000".
2. C: Carga de datos Byte bajo. "0" programas y poco n = Bit n = "1" borra el bit fusible.
3. Conjunto BS1 a "1" y BS2 a "0". Esto selecciona alta byte de datos.
4. Dar WR un pulso negativo y esperar RDY / BSY ir de alta.
5. Conjunto BS1 a "0". Esto selecciona byte de datos baja.

27.07.10

Programacin de los bits fuse Extended


El algoritmo para la programacin de los bits fusibles extendidas es la siguiente (consulte "Programacin del
Flash "en la pgina 302 para obtener informacin sobre comandos y datos de carga):
1. 1. A: Cargue de Comando "0100 0000".
2. 2. C: Carga de datos Byte bajo. "0" programas y poco n = Bit n = "1" borra el bit fusible.
3. 3. Conjunto BS1 a "0" y BS2 a "1". Esto selecciona byte de datos ampliada.
4. 4. Dar WR un pulso negativo y esperar RDY / BSY sea alta.
5. 5. Conjunto BS2 a "0". Esto selecciona byte de datos baja.
Figura 27-5. Programacin de las formas de onda FUSIBLES
Escribe Fuse Byte bajo

DATOS

La

0x40

DATOS

XX

Escribe Fusible byte alto


La

0x40

DATOS

XX

Escribe byte Fusible extendido


La

0x40

DATOS

XX

XA1

XA0

BS1

BS2

XTAL1

WR

RDY / BSY

REAJUSTE + 12V

OE

PAGEL

306
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


27.07.11

Programacin de los bits de bloqueo


El algoritmo para la programacin de los bits de bloqueo es el siguiente (consulte "Programacin del flash" en la
pgina 302 para obtener informacin sobre comandos y datos de carga):
1. A: Cargue de Comando "0010 0000".
2. C: Carga de datos Byte bajo. Bit n = "0" programas el bit de bloqueo. Si el modo de LB 3 est programado
(LB1 y LB2 est programado), no es posible programar los bits de bloqueo de arranque por parte de cualquier
Modo de programacin externa.
3. Dar WR un pulso negativo y esperar RDY / BSY sea alta.
Los bits de bloqueo slo se pueden borrar mediante la ejecucin de viruta borra.

07.27.12

La lectura de los fusibles y Lock Bits


El algoritmo para la lectura de los bits fusibles y Lock es el siguiente (consulte "Programacin del flash"
en la pgina 302 para ms detalles sobre la carga de comando):
1. A: Cargue de Comando "0000 0100".
2. Conjunto OE a "0", BS2 a "0" y BS1 a "0". El estado de los bits de fusibles de baja puede ser ahora
leer en DATA ("0" significa programada).
3. Conjunto OE a "0", BS2 a "1" y BS1 a "1". El estado de los fusibles bits altos puede ser ahora
leer en DATA ("0" significa programada).
4. Conjunto OE a "0", BS2 a "1", y BS1 a "0". El estado de los bits fusibles extendidas pueden ahora
ser ledo en DATA ("0" significa programada).
5. Conjunto OE a "0", BS2 a "0" y BS1 a "1". El estado de los bits de bloqueo ahora se puede leer en
DATOS ("0" significa programada).
6. Conjunto OE a "1".
Figura 27-6. Asignacin entre BS1, BS2 y el fusible y Lock Bits Durante Leer
0

Fuse Byte bajo

0
Byte Fusible extendido

1
DATOS
BS2

Lock Bits

BS1

Fuse Byte alto

1
BS2

27.07.13

La lectura de los Bytes Signature


El algoritmo para la lectura de los bytes de la firma es la siguiente (consulte "Programacin del flash" en la
pgina 302 para ms detalles sobre Mando y Direccin de carga):
1. A: Cargue de Comando "0000 1000".
2. B: Carga Direccin Byte bajo (0x00 - 0x02).
3. Conjunto OE a "0", y BS1 a "0". El byte Firma seleccionado ahora se puede leer en DATA.
4. Conjunto OE a "1".

307
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


07.27.14

Leyendo el Byte Calibracin


El algoritmo para leer el byte de calibracin es como sigue (vase "Programacin del flash" en la
pgina 302 para ms detalles sobre Mando y Direccin de carga):
1. A: Cargue de Comando "0000 1000".
2. B: Carga Direccin Byte bajo, 0x00.
3. Conjunto OE a "0", y BS1 a "1". El byte de calibracin ahora se puede leer en DATA.
4. Conjunto OE a "1".

07.27.15

27.8

Caractersticas de programacin paralela


Para chracteristics de la programacin paralela, consulte "Caractersticas de la programacin paralela" en la
pgina 324.

Descarga Serial
Tanto las matrices de memoria flash y EEPROM se puede programar con el serial bus mientras SPI
REINICIO se tira a GND. La interfaz serie se compone de pines SCK, MOSI (entrada) y MISO (salida
poner). Despus de RESET se establece bajo, la programacin Habilitar instruccin necesita ser ejecutado primero
antes del programa / borrar operaciones se pueden ejecutar. NOTA, en Tabla 27-17 en la pgina 309, el pasador
mapeo para la programacin SPI est en la lista. No todas las partes utilizan los pines SPI dedicados para el interior
Interfaz SPI.

Figura 27-7. Programacin de serie y verificacin(1)


1.8 - 5.5V
VCC
1.8 - 5.5V (2)
MOSI
AVCC
MISO
SCK
XTAL1

REINICIO

GND

Notas:

1. Si el dispositivo est sincronizado por el oscilador interno, es necesario conectar una fuente de reloj para la
Pin XTAL1.
2. VCC - 0,3 V <AVCC <VCC + 0.3V, sin embargo, AVCC debe siempre estar dentro de 1.8 - 5.5V

En la programacin de la EEPROM, un ciclo de auto-borrado est integrado en la programacin de auto-programado


operacin (en el modo de serie) y no hay necesidad de ejecutar la primera Erase chip
instruccin. La operacin de Chip Erase convierte el contenido de cada posicin de memoria tanto en el
Programa y EEPROM matrices en 0xFF.
Dependiendo de CKSEL fusibles, un reloj vlida debe estar presente. Los perodos de baja y alta mnimas
para el reloj de serie (SCK) de entrada se definen como sigue:
Mnima:> 2 ciclos de reloj de la CPU para fck <12 MHz, ciclos de reloj 3 CPU para fck> = 12 MHz
Mxima:> 2 ciclos de reloj de la CPU para fck <12 MHz, ciclos de reloj 3 CPU para fck> = 12 MHz

308
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


27.8.1

Programacin Serie Mapping Pin


Tabla 27-17. Mapping Pin Serial Programming

27.8.2

Smbolo

Patas

I/O

MOSI

PB3

YO

MISO

PB4

SCK

PB5

YO

Descripcin
Serie de datos de
Datos de serie fuera
Reloj en serie

Algoritmo de programacin de serie


Al escribir datos en serie a la ATmega48PA / 88PA / 168PA / 328P, los datos se registr en la salida
borde de SCK.
Cuando la lectura de datos desde el ATmega48PA / 88PA / 168PA / 328P, los datos se registr en la cada de
borde de SCK. Ver Figura 27-9 para detalles de temporizacin.
Para programar y verificar la ATmega48PA / 88PA / 168PA / 328P en el modo de programacin de serie,
Se recomienda el siguiente orden (Vea la Instruccin de Programacin Serie ambientada en Tabla 27-19
en la pgina 310):
1. Secuencia de encendido:
Aplicar el poder entre VCC y GND mientras REINICIAR y SCK se ponen a "0". En algunos ma
sistemas, el programador no puede garantizar que SCK se mantiene baja durante el encendido. En este
caso, de RESET se debe dar un impulso positivo de una duracin mnima de dos ciclos de reloj de la CPU
despus de SCK se ha ajustado a "0".
2. Espere por lo menos 20 ms y permitir la programacin de serie mediante el envo de la Programacin
Habilitar instrucciones de serie al pin MOSI.
3. Las instrucciones de programacin de serie no funcionarn si la comunicacin est fuera de sincronizacin
nizacin. Cuando en sincrona. el segundo byte (0x53), se har eco de regreso al emitir la tercera
byte de la programacin Habilitar instrucciones. Si el eco es correcta o no, los cuatro
bytes de la instruccin debe ser transmitida. Si el 0x53 no echo atrs, dan restablecer un
pulso positivo y emita una nueva programacin de comandos Habilitar.
4. El flash se programa una pgina a la vez. La pgina de memoria se carga un byte a la
tiempo suministrando el 6 LSB de la direccin y los datos junto con el Programa de Carga
Instruccin Pgina Memoria. Para garantizar la correcta carga de la pgina, el byte bajo de datos debe
ser cargado antes de aplicar los datos byte alto para una direccin determinada. La memoria de programa
Pgina se almacena mediante la carga de la instruccin de memoria Page Programa de escritura con el 7 MSB
la direccin. Si no se utiliza de sondeo (RDY / BSY), el usuario debe esperar por lo menos antes de tWD_FLASH
la emisin de la pgina siguiente (Ver Tabla 27-18). Acceso a la interfaz de programacin de serie
antes de que la escritura de Flash ultima operacin puede dar lugar a una programacin incorrecta.
5. A: La matriz EEPROM se programa un byte a la vez proporcionando la direccin y
datos, junto con la instruccin de escritura apropiada. Una ubicacin de la memoria EEPROM es primero
borra automticamente antes de escribir nuevos datos. Si no se utiliza de sondeo (RDY / BSY), el
usuario debe esperar al menos tWD_EEPROM antes de emitir el siguiente byte (Ver Tabla 27-18). En una
chip de dispositivo de borrado, no hay 0xFFs en el archivo (s) de datos necesitan ser programados.
B: La matriz EEPROM se programa una pgina a la vez. La pgina de memoria cargada
un byte a la vez mediante el suministro de la 6 LSB de la direccin y los datos junto con la carga
Instruccin de memoria EEPROM pgina. La pgina de memoria EEPROM es almacenada por la carga
la escritura de EEPROM Memoria Pgina Instruccin con el 7 MSB de la direccin. Cuando se usa
Pgina slo acceso ubicaciones bytes EEPROM cargan con la EEPROM de carga de memoria Page
la instruccin se altera. Las ubicaciones restantes permanecen sin cambios. Si sondeo (RDY / BSY) es

309
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


no se utiliza, el utilizado debe esperar por lo menos tWD_EEPROM antes de emitir el siguiente byte (Ver Mesa
27-18). En un dispositivo de chip de borrado, es necesario programar ningn 0xFF en el archivo (s) de datos.
6. Cualquier posicin de memoria se puede verificar mediante el uso de la instruccin de lectura que devuelve el contienda de campaa en la direccin seleccionada en la salida serial MISO.
7. Al final de la sesin de programacin, de RESET se puede ajustar alta para comenzar normales
operacin.
8. secuencia de apagado (si es necesario):
Set RESET para "1".
Apague la alimentacin VCC.

Tabla 27-18. Tpico de retraso de espera antes de escribir el siguiente flash o EEPROM Ubicacin
Smbolo

27.8.3

Retraso Mnimo Espere

tWD_FLASH

4.5 ms

tWD_EEPROM

3.6 ms

tWD_ERASE

9.0 ms

Conjunto de instrucciones de programacin de serie


Tabla 27-19 en la pgina 310 y Figura 27-8 en la pgina 312 describe el conjunto de instrucciones.

Tabla 27-19. Juego de Instrucciones de Programacin Serie (valores hexadecimales)


Formato de Instrucciones
Instrucciones / Operacin

Byte 1

Byte 2

Byte 3

Byte4

Programacin Habilitar

$ AC

$ 53

$ 00

$ 00

Viruta borra (memoria de programa / EEPROM)

$ AC

$ 80

$ 00

$ 00

RDY Poll / BSY

$ F0

$ 00

$ 00

Cargar extendido byte Direccin(1)

$ 4D

$ 00

Adr extendido

Cargar memoria de programa Pgina, byte alto

$ 48

$ 00

adr LSB

datos byte alto en

Cargar memoria de programa Pgina, byte bajo

$ 40

$ 00

adr LSB

byte menor en

Recuperar memoria EEPROM Pgina (acceso a la pgina)

$ C1

$ 00

0000 000aa

Leer memoria de programa, byte alto

$ 28

adr MSB

adr LSB

datos byte alto fuera

Leer memoria de programa, byte bajo

$ 20

adr MSB

adr LSB

byte menor fuera

Leer memoria EEPROM

$ A0

0000 00aa

aaaa aaaa

Leer bits de bloqueo

$ 58

$ 00

Leer Firma Byte

$ 30

$ 00

Leer bits de fusibles

$ 50

$ 00

$ 00

datos byte a cabo

Leer Fusible bits altos

$ 58

$ 08

$ 00

datos byte a cabo

Leer Extended Bits Fuse

$ 50

$ 08

$ 00

datos byte a cabo

Leer Calibracin Byte

$ 38

$ 00

$ 00

datos byte a cabo

datos byte a cabo

Instrucciones de carga
$ 00

byte de datos en

Lea las instrucciones

$ 00
0000 000aa

datos byte a cabo


datos byte a cabo
datos byte a cabo

310
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla 27-19. Instrucciones de Programacin Serie Set (valores hexadecimales) (Continuacin)
Formato de Instrucciones
Instrucciones / Operacin

Byte 1

Byte 2

Byte 3

Byte4

Escribir de memoria de programa Pgina

$ 4C

adr MSB

adr LSB

$ 00

Memoria EEPROM

$ C0

0000 00aa

aaaa aaaa

Escribe memoria EEPROM Pgina (acceso a la pgina)

$ C2

0000 00aa

AA00 AAAA

Escribe bits de bloqueo

$ AC

$ E0

$ 00

byte de datos en

Escribe bits de fusibles

$ AC

$ A0

$ 00

byte de datos en

Escribe Fusible bits altos

$ AC

$ A8

$ 00

byte de datos en

Escribe Extended Bits Fuse

$ AC

$ A4

$ 00

byte de datos en

Escribe Instrucciones(6)

Notas:

1.
2.
3.
4.
5.
6.
7.

byte de datos en
$ 00

No todas las instrucciones son aplicables a todas las partes.


a = direccin.
Los bits se programan '0', no programada '1'.
Para garantizar la compatibilidad futura, Fusibles no utilizados y los bits de bloqueo deben ser no programada ('1').
Consulte la seccin correspondig para fusibles y Lock bits, bytes de calibracin y la firma y el tamao de pgina.
Instrucciones de acceso a la memoria del programa utilizan una direccin de palabra. Esta direccin puede ser al azar dentro del rango de pginas.
Ver htt: //www.atmel.com/avr para las notas de aplicacin con respecto a la programacin y programadores.

Si el LSB en RDY datos / BSY byte a cabo es '1', una operacin de programacin se encuentra pendiente. Espere hasta
este bit vuelve "0" antes de la siguiente instruccin se lleva a cabo.
Dentro de la misma pgina, el byte de datos de baja debe ser cargado antes de la byte de datos de alta.
Despus que los datos se carga en el bfer de pgina, el programa de la pgina EEPROM, consulte Figura 27-8 en la pgina
312.

311
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 27-8. Ejemplo de instrucciones de programacin de serie
Instruccin de programacin de serie
Cargar memoria de programa Pgina (High / Low Byte) /
Recuperar memoria EEPROM Pgina (acceso a la pgina)

Byte 1

Byte 2
AADR MSB
Bit 15 B

Byte 3

Escribir de memoria de programa Pgina /


Escribe memoria EEPROM Pgina

Byte 1

Byte 4

Byte 2

Adr LSB

Adr MSB

Byte 3
Adr LSBrB

Bit 15 B

Byte 4

Pgina Buffer
Pgina Offset

Pgina 0

Pgina 1

Page 2
Nmero de pgina

Pgina N-1

Memoria de programa /
Memoria EEPROM
27.8.4

SPI Caractersticas Programacin de serie


Figura 27-9. Las formas de onda de programacin en serie
SERIE DE ENTRADA DE DATOS
(MOSI)

SALIDA DE DATOS DE SERIE


(MISO)

MSB

LSB

MSB

LSB

SERIE DE ENTRADA RELOJ


(SCK)

MUESTRA

Por caractersticas del mdulo SPI ver "Caractersticas de temporizacin SPI" en la pgina 319.

312
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

28. Caractersticas elctricas


28.1

Absolutos mximos *

Temperatura de funcionamiento .................................. -55 C a + 125 C

* AVISO:

Temperatura de almacenamiento ..................................... -65 C a + 150 C


Tensin en cualquier Pin excepto REINICIO
con respecto a 0.5V Ground ................................- a VCC + 0.5V
Tensin en RESET con respecto a 0.5V Ground ......- a + 13.0V

Destaca ms all de las que aparecen en "Absolute


Calificaciones Mximo "puede causar daos permanentes
edad para el dispositivo. Esta es slo una calificacin estrs y
operacin funcional del dispositivo en estos o
otras condiciones ms all de las indicadas en el
secciones de esta especificacin no es
implcita. La exposicin a la calificacin mxima absoluta
condiciones por perodos prolongados pueden afectar
la fiabilidad del dispositivo.

Tensin de funcionamiento mxima 6.0V ............................................


Corriente DC por I / O Pin ........................................... .... 40,0 mA
DC VCC actual y GND prendedores ................................ 200,0 mA

28.2

Caractersticas de CC

TA = -40 C a 85 C, VCC = 1,8 V a 5,5 V (a menos que se indique lo contrario)


Smbolo

Parmetro

Condicin

Min.

VIL

Entrada de baja tensin, excepto


XTAL1 y pin de RESET

VCC = 1.8V - 2.4V


VCC = 2.4V - 5.5V

-0,5
-0,5

VIH

Entrada de alta tensin, excepto


VCC = 1.8V - 2.4V
XTAL1 y clavijas de restauracin VCC = 2.4V - 5.5V

VIL1

Bajo voltaje de entrada,


Pin XTAL1

VCC = 1.8V - 5.5V

VIH1

Entrada de alta tensin,


Pin XTAL1

VCC = 1.8V - 2.4V


VCC = 2.4V - 5.5V

VIL2

Bajo voltaje de entrada,


Pin de RESET

VCC = 1.8V - 5.5V

VIH2

Entrada de alta tensin,


Pin de RESET

VCC = 1.8V - 5.5V

VIL3

Bajo voltaje de entrada,


RESTABLECER pin como E / S

VCC = 1.8V - 2.4V


VCC = 2.4V - 5.5V

VIH3

Entrada de alta tensin,


RESTABLECER pin como E / S

VCC = 1.8V - 2.4V


VCC = 2.4V - 5.5V

VOL

Salida de Baja Tensin(3)


excepto pin de RESET

IOL = 20 mA, VCC = 5V


IOL = 10 mA, VCC = 3V

VOH

Salida de Alta Tensin(4)


salvo Restablecer pin

IOH = -20 mA, VCC = 5V


IOH = -10 mA, VCC = 3V

IIL

Fuga de entrada
I Corriente / O Pin

VCC = 5.5V, pin baja


(Valor absoluto)

mu

IIH

Fuga de entrada
I Corriente / O Pin

VCC = 5.5V, pin alta


(Valor absoluto)

mu

0.7VCC (2)
0.6VCC (2)
-0,5
0.8VCC (2)
0.7VCC (2)
-0,5
0.9VCC (2)
-0,5
-0,5
0.7VCC (2)
0.6VCC (2)

Typ.

Max.

Unidades

0.2VCC (1)
0.3VCC (1)

VCC + 0,5
VCC + 0,5

0.1VCC (1)

VCC + 0,5
VCC + 0,5

0.1VCC (1)

VCC + 0,5

0.2VCC (1)
0.3VCC (1)

VCC + 0,5
VCC + 0,5

0.9
0.6

4.2
2.3

313
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


TA = -40 C a 85 C, VCC = 1,8 V a 5,5 V (a menos que se indique lo contrario) (Continuacin)
Smbolo

Parmetro

RRST

Restablecer resistencia de actuacin

30

60

kW

RPU

I / O Pin resistencia de actuacin

20

50

kW

VACIO

Comparador analgico
Voltaje de entrada Offset

VCC = 5V
Vin = VCC / 2

40

mV

IACLK

Comparador analgico
Entrada de Corriente de fuga

VCC = 5V
Vin = VCC / 2

50

n/A

tACID

Comparador analgico
Retardo de propagacin

VCC = 2.7V
VCC = 4.0V

Notas:

Condicin

Min.

Typ.

<10

-50

Max.

750
500

Unidades

ns

1. "Max": el valor ms alto donde se garantiza el pasador para ser ledo tan bajo
2. "Min": el valor ms bajo en el que se garantiza el pasador para ser ledo como alta
3. Aunque cada puerto I / O puede hundirse ms de las condiciones del ensayo (20 mA en VCC = 5V, 10 mA en VCC = 3V) bajo estado estacionario
condiciones (no transitoria), a continuacin se deben tener en cuenta:
ATmega48PA / 88PA / 168PA / 328P:
1] La suma de todos IOL, para los puertos C0 - C5, ADC7, ADC6 no debe exceder de 100 mA.
2] La suma de todos IOL, los puertos B0 - B5, D5 - D7, XTAL1, XTAL2 no debe superar los 100 mA.
3] La suma de todos IOL, los puertos D0 - D4, de RESET no debe superar los 100 mA.
Si IOL supera la condicin de prueba, VOL podr superar la especificacin relacionados. Pernos no estn garantizados para hundir ms actual
de la condicin de prueba en la lista.
4. Aunque cada puerto I / O puede fuente ms de las condiciones del ensayo (20 mA en VCC = 5V, 10 mA en VCC = 3V) bajo estado estacionario
condiciones (no transitoria), a continuacin se deben tener en cuenta:
ATmega48PA / 88PA / 168PA / 328P:
1] La suma de todos los IOH, para los puertos C0 - C5, d0- D4, ADC7 RESET no debe superar los 150 mA.
2] La suma de todos los IOH, para los puertos B0 - B5, D5 - D7, ADC6, XTAL1, XTAL2 no debe superar los 150 mA.
Si IIOH supera la condicin de prueba, VOH podr superar la especificacin relacionados. Pernos no se garantiza que la fuente actual
mayor que la condicin de prueba en la lista.

28.2.1

Caractersticas ATmega48PA DC

TA = -40 C a 85 C, VCC = 1,8 V a 5,5 V (a menos que se indique lo contrario)


Smbolo

Parmetro

Fuente de alimentacin actual(1)

CPI

Typ.(2)

Max.

Activo 1 MHz, VCC = 2V

0.2

0.5

mA

Activo 4 MHz, VCC = 3V

1.2

2.5

mA

Activo 8 MHz, VCC = 5V

4.0

mA

Inactivo 1 MHz, VCC = 2V

0.03

0.15

mA

Idle 4 MHz, VCC = 3V

0.21

0.7

mA

Idle 8 MHz, VCC = 5V

0.9

2.7

mA

32 kHz TOSC activada,


VCC = 1.8V

0.75

mu

32 kHz TOSC activada,


VCC = 3V

0.9

mu

WDT activar, VCC = 3V

3.9

mu

WDT discapacitados, VCC = 3V

0.1

mu

Condicin

Min.

Unidades

De ahorro de energa Modo(3)

El modo de apagado(3)
Notas:

1. Los valores con "Minimizar el consumo de energa" habilitados (0xFF).


2. Los valores tpicos a 25 C. Los valores mximos se caracterizan valores y no ponen a prueba los lmites de la produccin.
3. Los valores de consumo actuales incluyen la corriente de fuga de entrada.

314
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


28.2.2

Caractersticas ATmega88PA DC

TA = -40 C a 85 C, VCC = 1,8 V a 5,5 V (a menos que se indique lo contrario)


Smbolo

Parmetro

Fuente de alimentacin actual(1)

CPI

Typ.(2)

Max.

Activo 1 MHz, VCC = 2V

0.2

0.5

mA

Activo 4 MHz, VCC = 3V

1.2

2.5

mA

Activo 8 MHz, VCC = 5V

4.1

mA

Inactivo 1 MHz, VCC = 2V

0.03

0.15

mA

Idle 4 MHz, VCC = 3V

0.18

0.7

mA

Idle 8 MHz, VCC = 5V

0.8

2.7

mA

32 kHz TOSC activada,


VCC = 1.8V

0.8

mu

32 kHz TOSC activada,


VCC = 3V

0.9

mu

WDT activar, VCC = 3V

3.9

mu

WDT discapacitados, VCC = 3V

0.1

mu

Typ.(2)

Max.

Activo 1 MHz, VCC = 2V

0.2

0.5

mA

Activo 4 MHz, VCC = 3V

1.2

2.5

mA

Activo 8 MHz, VCC = 5V

4.2

mA

Inactivo 1 MHz, VCC = 2V

0.03

0.15

mA

Idle 4 MHz, VCC = 3V

0.2

0.7

mA

Idle 8 MHz, VCC = 5V

0.9

2.7

32 kHz TOSC activada,


VCC = 1.8V

0.75

mu

32 kHz TOSC activada,


VCC = 3V

0.83

mu

WDT activar, VCC = 3V

4.1

mu

WDT discapacitados, VCC = 3V

0.1

mu

Condicin

Min.

Unidades

De ahorro de energa Modo(3)

El modo de apagado(3)
Notas:

1. Los valores con "Minimizar el consumo de energa" habilitados (0xFF).


2. Los valores tpicos a 25 C. Los valores mximos son los lmites de prueba en la produccin.
3. Los valores de consumo actuales incluyen la corriente de fuga de entrada.

28.2.3

Caractersticas ATmega168PA DC

TA = -40 C a 85 C, VCC = 1,8 V a 5,5 V (a menos que se indique lo contrario)


Smbolo

Parmetro

Fuente de alimentacin actual(1)

CPI

Condicin

Min.

Unidades

De ahorro de energa Modo(3)

El modo de apagado(3)
Notas:

1. Los valores con "Minimizar el consumo de energa" habilitados (0xFF).


2. Los valores tpicos a 25 C. Los valores mximos son los lmites de prueba en la produccin.
3. Los valores de consumo actuales incluyen la corriente de fuga de entrada.

315
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


28.2.4

Caractersticas ATmega328P DC

TA = -40 C a 85 C, VCC = 1,8 V a 5,5 V (a menos que se indique lo contrario)


Smbolo

Parmetro

Typ.(2)

Max.

Activo 1 MHz, VCC = 2V

0.3

0.5

mA

Activo 4 MHz, VCC = 3V

1.7

2.5

mA

Activo 8 MHz, VCC = 5V

5.2

mA

Inactivo 1 MHz, VCC = 2V

0.04

0.15

mA

Idle 4 MHz, VCC = 3V

0.3

0.7

mA

Idle 8 MHz, VCC = 5V

1.2

2.7

mA

32 kHz TOSC activada,


VCC = 1.8V

0.8

1.6

mu

32 kHz TOSC activada,


VCC = 3V

0.9

2.6

mu

WDT activar, VCC = 3V

4.2

mu

WDT discapacitados, VCC = 3V

0.1

mu

Condicin

Fuente de alimentacin actual(1)

CPI

Min.

Unidades

De ahorro de energa Modo(3) (4)

El modo de apagado(3)
Notas:

1.
2.
3.
4.

Los valores con "Minimizar el consumo de energa" habilitados (0xFF).


Los valores tpicos a 25 C. Los valores mximos son los lmites de prueba en la produccin.
Los valores de consumo actuales incluyen la corriente de fuga de entrada.
Los valores mximos se caracterizan valores y no ponen a prueba los lmites de la produccin.

28.3

Grados velocidad
Frecuencia mxima depende de VCC. Como se muestra en Figura 28-1, de la frecuencia mxima vs.
Curva de VCC es lineal entre 1,8 V <VCC <2.7V y entre 2.7V <VCC <4.5V.
Figura 28-1. Frecuencia mxima vs. VCC

20 MHz

10 MHz

rea de funcionamiento seguro

4 MHz

1.8V

2.7V

4.5V

5.5V

316
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

28.4

Caractersticas de reloj

28.4.1

Calibrada interna oscilador RC Precisin

Tabla 28-1.

Precisin Calibracin del oscilador RC interno


Frecuencia

VCC

Fbrica
Calibracin

8,0 MHz

3V

25 C

10%

Usuario
Calibracin

7.3 a 8.1 MHz

1.8V - 5.5V

-40 C - 85 C

1%

28.4.2

Temperatura

Precisin de calibracin

Las formas de onda del reloj externo Drive


Figura 28-2. Las formas de onda del reloj externo Drive

V IH1
V IL1

28.4.3

Reloj unidad externa

Tabla 28-2.

Reloj unidad externa


VCC = 1,8 - 5,5 V

VCC = 2,7 - 5,5 V

VCC = 4,5 - 5,5 V

Smbolo

Parmetro

1 / tCLCL

Oscilador de Frecuencia

tCLCL

Periodo de Reloj

250

100

50

ns

tCHCX

High Time

100

40

20

ns

tCLCX

Baja Tiempo

100

40

20

ns

tCLCH

Tiempo de subida

2.0

1.6

0.5

tCHCL

Tiempo de bajada

2.0

1.6

0.5

Cambio en el perodo comprendido


entre
un ciclo de reloj a la
siguiente

tCLCL

Nota:

Min.

Max.

Min.

Max.

Min.

Max.

10

20

Unidades
MHz

Todas las caractersticas DC contenidos en esta hoja de datos se basan en la simulacin y caracterizacin de otros microcontroladores AVR
fabricado en la misma tecnologa de proceso. Estos valores son los valores preliminares que representan los objetivos de diseo, y sern
actualizado despus de caracterizacin de silicio real.

317
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


28.5

Del sistema y restablecer Caractersticas

Tabla 28-3.
Smbolo

Reset, Brown-out y de tensin interna Caractersticas(1)


Parmetro

Min

Typ

Max

Encendido Tensin umbral de reset (ascendente)

1.1

1.4

1.6

Encendido Tensin umbral de reset (cayendo)(2)

0.6

1.3

1.6

SRON

Power-on Slope Rate

0.01

10

V / ms

VRST

RESET Terminal Tensin umbral

0.2 VCC

0.9 VCC

trst

Anchura mnima del impulso en el Pin de RESET

2.5

mS

VPOT

VHYST

Brown-fuera Detector de histresis

tBOD

Ancho de pulso Min en Brown de salida Restablecer

VBG

Tensin de referencia de banda prohibida

VCC = 2,7
TA = 25 C

TBG

Referencia Bandgap tiempo de arranque

IBG

Bandgap referencia consumo actual

Notas:

1.0

Unidades

50

mV

mS

1.1

1.2

VCC = 2,7
TA = 25 C

40

70

mS

VCC = 2,7
TA = 25 C

10

mu

1. Los valores son slo directrices.


2. El restablecimiento al encendido no funcionar a menos que la tensin de alimentacin ha estado por debajo de VPOT
(cayendo)

Tabla 28-4.

BODLEVEL Fusible Codificacin(1)


BODLEVEL 2: 0 Fusibles

VBOT Min

Typ VBOT

111

VBOT Max

Unidades

BOD discapacitados

110

1.7

1.8

2.0

101

2.5

2.7

2.9

100

4.1

4.3

4.5

011
010
Reservado
001
000
Notas:

1. VBOT puede estar por debajo del voltaje de operacin mnimo nominal para algunos dispositivos. Para los dispositivos en que esto sea el caso, el dispositivo es
probado hasta VCC = VBOT durante la prueba de produccin. Esto garantiza que un reinicio de Brown-Out ocurrir antes VCC cae a
una tensin, donde ya no se garantiza el correcto funcionamiento del microcontrolador. La prueba se realiza mediante
BODLEVEL = 110, 101 y 100.

318
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


28.6

SPI temporizacin Caractersticas


Ver Figura 28-3 y Figura 28-4 para ms detalles.
Tabla 28-5.

Parmetros de temporizacin SPI

Descripcin

Modo

Perodo SCK

Maestro

Ver Tabla 18-5

SCK alta / baja

Maestro

Ciclo de trabajo del 50%

Rise / Fall tiempo

Maestro

3.6

Preparar

Maestro

10

Mantener

Maestro

10

Sale a SCK

Maestro

0.5 tsck

SCK a cabo

Maestro

10

SCK a cabo alta

Maestro

10

SS bajo a cabo

Esclavo

10

Perodo SCK

Esclavo

4 tck

11

SCK alta / baja(1)

Esclavo

2 tck

12

Rise / Fall tiempo

Esclavo

13

Preparar

Esclavo

10

14

Mantener

Esclavo

tck

15

SCK a cabo

Esclavo

16

SCK a SS alta

Esclavo

17

SS de alto a tri-estatal

Esclavo

18

SS bajo a SCK

Esclavo

Nota:

Min

Typ

Max

15
ns

1600

15
20
10
20

1. En el modo de programacin SPI el perodo de baja SCK alta / mnima es de:


- 2 tCLCL para FCK <12 MHz
- 3 tCLCL para FCK> 12 MHz
2. Caractersticas Todo DC contenidos en esta hoja de datos se basan en la simulacin y caracterizacin
cin de otros microcontroladores AVR fabricados en la misma tecnologa de proceso. Estos
Los valores son los valores preliminares que representan objetivos de diseo, y se actualizarn despus de caracterizacin
zacin de silicio real.

319
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 28-3. SPI Interface Requisitos de temporizacin (modo Master)
SS
6

SCK
(CPOL = 0)
2

SCK
(CPOL = 1)
4

MISO
(Introduccin de datos)

MSB

...

LSB

MOSI
(Salida de datos)

MSB

...

LSB

Figura 28-4. SPI Interface Requisitos de temporizacin (modo esclavo)


SS
10

16

SCK
(CPOL = 0)
11

11

SCK
(CPOL = 1)
13

MOSI
(Introduccin de datos)

14

12

MSB

...

LSB

15

MISO
(Salida de datos)

MSB

17

...

LSB

320
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

28.7

2 hilos Caractersticas Interfaz Serial

Tabla 28-6 describe los requisitos de los dispositivos conectados a la 2 cables Serial Bus. La
ATmega48PA / 88PA / 168PA / 328P 2 cables de interfaz serie cumple o excede los requisitos en las condiciones sealadas.
Smbolos de temporizacin se refieren a Figura 28-5.
Tabla 28-6.

2 hilos Requisitos Serial Bus

Smbolo

Parmetro

VIL

Entrada de bajo voltaje

VIH

Entrada de alta tensin

Vhys (1)

La histresis de Schmitt Trigger Entradas

VOL (1)

Salida de baja tensin

tr (1)

Tiempo de subida para ambos SDA y SCL

TOF (1)

Salida Tiempo de cada de VIHMIN a Vilmax

tSP (1)

Espigas suprimida por filtro de entrada

Ii

Corriente de entrada cada E / S Pin

Ci (1)

Capacitancia para cada O / I Pin

FSCL

SCL Frecuencia de reloj

Condicin

Corriente absorbida 3 mA

10 pF <Cb <400 pF(3)

0.1VCC <Vi <0.9VCC

FCK (4)> max (16fSCL, 250kHz)(5)


FSCL 100 kHz

Rp

Valor de la resistencia de actuacin


FSCL> 100 kHz
FSCL 100 kHz

THD; STA

tLow

Max

Unidades

-0,5

0.3 VCC

0.7 VCC

VCC + 0,5

0,05 VCC (2)

0.4

20 + 0.1Cb (3) (2)

300

ns

20 + 0.1Cb (3) (2)

250

ns

50(2)

ns

-10

10

mu

10

pF

400

kHz

V CC -0,4V
1000 ns
---------------------------- ----------------3 mA
Cb
V CC -0,4V
300ns
---------------------------- -------------3 mA
Cb
4.0
-

mS

Hold Time (repetido) START Condicin


FSCL> 100 kHz

0.6

mS

FSCL 100 kHz

4.7

mS

FSCL> 100 kHz

1.3

mS

FSCL 100 kHz

4.0

mS

FSCL> 100 kHz

0.6

mS

FSCL 100 kHz

4.7

mS

FSCL> 100 kHz

0.6

mS

FSCL 100 kHz

3.45

mS

FSCL> 100 kHz

0.9

mS

FSCL 100 kHz

250

ns

FSCL> 100 kHz

100

ns

FSCL 100 kHz

4.0

mS

FSCL> 100 kHz

0.6

mS

FSCL 100 kHz

4.7

mS

FSCL> 100 kHz

1.3

mS

Bajo Perodo del reloj SCL

muslo

Alta periodo del reloj SCL

TSU; STA

El tiempo de preparacin para una condicin START repetida

THD; DAT Tiempo de retencin de


datos
TSU; DAT

TSU; STO

Tiempo de preparacin de
datos
El tiempo de preparacin para la condicin de
STOP
Bus tiempo libre entre un STOP y START
condicin

tBUF

Notas:

Min

1. En ATmega48PA / 88PA / 168PA / 328P, este parmetro se caracteriza y no es 100% a prueba.


2. Slo es necesario para FSCL> 100 kHz.

321
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


3. Cb = capacitancia de una lnea de autobs en pF.
4. fck = frecuencia de reloj de la CPU
5. Este requisito se aplica a toda operacin ATmega48PA 328P / 88PA / 168PA / 2 hilos Interfaz serie. Otros dispositivos conectados
al 2 hilos Serial Bus slo necesita obedecen al requisito general FSCL.

Figura 28-5. 2 cables Serial Bus Timing


tof

muslo

tLow

tr
tLow

SCL
TSU; STA

THD; STA

THD; DAT

TSU; DAT
TSU; STO

SDA

tBUF

322
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


28.8

Caractersticas ADC

Tabla 28-7.
Smbolo

Caractersticas ADC
Parmetro

Condicin

Min

Resolucin
VREF = 4V, VCC = 4V,
Reloj ADC = 200 kHz

LSB

VREF = 4V, VCC = 4V,


Reloj ADC = 1 MHz

4.5

LSB

VREF = 4V, VCC = 4V,


Reloj ADC = 200 kHz
Modo Reduccin de ruido

LSB

VREF = 4V, VCC = 4V,


Reloj ADC = 1 MHz
Modo Reduccin de ruido

4.5

LSB

Integral no linealidad (INL)

VREF = 4V, VCC = 4V,


Reloj ADC = 200 kHz

0.5

LSB

Diferencial no linealidad
(DNL)

VREF = 4V, VCC = 4V,


Reloj ADC = 200 kHz

0.25

LSB

Ganancia de error

VREF = 4V, VCC = 4V,


Reloj ADC = 200 kHz

LSB

Error de desplazamiento

VREF = 4V, VCC = 4V,


Reloj ADC = 200 kHz

LSB

Tiempo de conversin

Conversin Free Running

Tensin de alimentacin analgica


Referencia de tensin

VIN

Unidades
Bits

Frecuencia de reloj

VREF

Max

10

Precisin absoluta (incluyendo


INL, DNL, error de cuantificacin,
ganancia y error de desplazamiento)

AVCC (1)

Typ

Voltaje de entrada

13

260

mS

50

1000

kHz

VCC - 0.3

VCC + 0.3

1.0

AVCC

GND

VREF

Ancho de banda de entrada

38.5

VINT

Tensin de referencia interna

RREF

Referencia Resistencia de entrada

32

kW

LLUVIA

Resistencia de entrada analgica

100

Nota:

1.0

1.1

kHz
1.2

1. AVCC absoluta min / max: 1.8V / 5.5V

323
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

28.9

Caractersticas de programacin paralela

Tabla 28-8.

Caractersticas de programacin paralela, VCC = 5V 10%

Smbolo

Parmetro

Min

VPP

Programacin Habilitar Voltaje

11.5

IPP

Programacin Habilitar actual

tDVXH

Datos y control vlido antes XTAL1 alta

tXLXH

Typ

Max

Unidades

12.5

250

La

67

ns

XTAL1 Menor a XTAL1 alta

200

ns

tXHXL

XTAL1 ancho de pulsos de alta

150

ns

tXLDX

Datos y Control Hold despus XTAL1 Baja

67

ns

tXLWL

XTAL1 Menor a WR Baja

ns

tXLPH

XTAL1 Menor a PAGEL alta

ns

tPLXH

PAGEL bajo a alto XTAL1

150

ns

tBVPH

BS1 Vlido antes PAGEL alta

67

ns

tPHPL

PAGEL ancho de pulsos de alta

150

ns

tPLBX

BS1 Hold despus PAGEL Baja

67

ns

tWLBX

BS2 / 1 Mantenga despus WR Baja

67

ns

tPLWL

PAGEL Menor a WR Baja

67

ns

tBVWL

BS1 Vlido a WR Baja

67

ns

tWLWH

Pulse Width WR Low

150

ns

tWLRL

WR Menor a RDY / BSY Baja

tWLRH

WR Menor a RDY / BSY alta(1)

3.7

4.5

sra

tWLRH_CE

WR Menor a RDY / BSY alta para Chip Erase(2)

7.5

sra

tXLOL

XTAL1 Menor a OE Baja

tBVDV

BS1 Vlido para datos vlidos

tOLDV
tOHDZ
Notas:

ns
250

ns

OE Menor a datos vlidos

250

ns

OE Mayor a DATOS Tri declar-

250

ns

1. tWLRH es vlida para el flash escribir, escribir EEPROM, escribir bits de fusibles y escribir bits de bloqueo
comandos.
2. tWLRH_CE es vlido para el comando viruta borra.

324
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 28-6. Timing programacin paralela, Incluyendo algunos requisitos calendario general
tXLWL
tXHXL

XTAL1
tDVXH

tXLDX

Datos y Contol
(DATA, XA0 / 1, BS1, BS2)
tBVPH
PAGEL

tPLBX t BVWL

tWLBX

tPHPL
tWLWH

WR

tPLWL
WLRL

RDY / BSY
tWLRH

Figura 28-7. Timing programacin paralela, Secuencia de carga con los requisitos de tiempo(1)
DIRECCIN DE CARGA
(BYTE LOW)

CARGA DE DATOS DE CARGA DE DATOS


(Byte alto)

DATOS DE CARGA
(BYTE LOW)

tXLPH

t XLXH

DIRECCIN DE CARGA
(BYTE LOW)

tPLXH

XTAL1

BS1

PAGEL

DATOS

ADDR0 (Low Byte)

DATOS (Low Byte)

DATOS (High Byte)

ADDR1 (Low Byte)

XA0
XA1

Nota:

1. Los requisitos de temporizacin muestran en Figura 28-6 (Es decir, tDVXH, tXHXL y tXLDX) tambin se aplica a los
elementos de tope
su utilizacin.

Figura 28-8. Timing programacin paralela, Secuencia de lectura (dentro de la misma pgina) con
Requisitos de temporizacin(1)
DIRECCIN DE CARGA
(BYTE LOW)

DATOS DE LEER
(BYTE LOW)

DATOS DE LEER
(Byte alto)

DIRECCIN DE CARGA
(BYTE LOW)

tXLOL
XTAL1
tBVDV

BS1
tOLDV
OE
tOHDZ

DATOS

ADDR0 (Low Byte)

DATOS (Low Byte)

DATOS (High Byte)

ADDR1 (Low Byte)

XA0

XA1

Nota:

1. Los requisitos de temporizacin muestran en Figura 28-6 (Es decir, tDVXH, tXHXL y tXLDX) tambin se aplica a los
lectores
su utilizacin.

325
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

29. Caractersticas tpicas


Las siguientes tablas muestran el comportamiento tpico. Estas cifras no son probados durante la fabricacin.
Todas las mediciones de consumo actuales se realizan con todas las E / S configurados como entradas y
con pull-ups internas habilitado. Un generador de onda cuadrada con salida de carril a carril se utiliza como reloj
fuente.
Todas las mediciones actuales de consumo activo y con Idle se hacen con todos los bits en el registro PRR
establecen y, por tanto, los mdulos de E / S correspondientes estn apagados. Tambin Comparador analgico se visualiza
abled durante estas mediciones. La "ATmega88PA: Corriente de suministro de mdulos IO" en la pgina
356 y pgina 380 muestra el consumo de corriente adicional en comparacin con la CPI y CPI Activo Inactivo
para cada mdulo de E / S controlada por la Reduccin de Registro de energa. Ver "Power Reduccin Register "en la pgina 42 para ms detalles.

El consumo de energa en modo de Apagado es independiente de la seleccin de reloj.


El consumo de corriente es una funcin de varios factores tales como: la tensin de servicio, operativo
frecuencia, la carga de los pines de E / S, el cambio de velocidad de pines de E / S, cdigo ejecutado y temperatura ambiente
tura. Los factores dominantes estn operando de tensin y frecuencia.
La corriente extrada de pines capacitivos cargado puede estimar (por un pin) como CL * VCC * f donde
CL = capacitancia de carga, VCC = tensin de funcionamiento y la frecuencia de conmutacin f = promedio de pin I / O.
Las piezas se caracterizan en las frecuencias superiores a los lmites de prueba. Partes no tienen garanta de
funcionar correctamente en las frecuencias ms altas que el cdigo de pedido indica.
La diferencia entre el consumo actual en el modo de Apagado con temporizador de vigilancia
habilitado y el modo de Apagado con temporizador Watchdog discapacitados representa la corriente diferencial
alquiler dibujado por el temporizador de vigilancia.

326
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.1

ATmega48PA caractersticas tpicas

29.1.1

Activo Corriente de suministro


Figura 29-1. ATmega48PA: Activo Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
1

5,5 V
0.8

5,0 V
4,5 V

0.6
CPI (mA)

4,0 V
3,3 V

0.4

2,7 V
0.2

1,8 V

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

Figura 29-2. ATmega48PA: Activo Corriente de suministro vs. frecuencia (1-20 MHz)
12

5,5 V
10

5,0 V
8

4,5 V

CPI (mA)

4,0 V
4

3,3 V
2

2,7 V
1,8 V
0
0

10

12

14

16

18

20

Frecuencia (MHz)

327
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-3. ATmega48PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 128 kHz)
0.14

85 C
-40 C
25 C

0.12

0.1

CPI 0.08
(mA)

0.06

0.04

0.02

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-4. ATmega48PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 1 MHz)
1.2

85 C
25 C
-40 C

0.8
CPI (mA)
0.6

0.4

0.2

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

328
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-5. ATmega48PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 8 MHz)
85 C5
25 C

-40 C
4

CPI (mA)

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.1.2

Inactivo Corriente de suministro


Figura 29-6. ATmega48PA: inactivo Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
0.16

5,5 V
0.14
0.12

5,0 V

0.1

4,5 V

CPI (mA)
0.08

4,0 V

0.06

3,3 V

0.04

2,7 V
1,8 V

0.02
0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

329
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-7. ATmega48PA: inactivo Corriente de suministro vs. frecuencia (1-20 MHz)
3

5,5 V

2.5

5,0 V
2

4,5 V
CPI (mA)
1.5

4,0 V
1

3,3 V
0.5

2,7 V
1,8 V

0
0

10

12

14

16

18

20

Frecuencia (MHz)

Figura 29-8. ATmega48PA: inactivo Corriente de suministro frente a VCC (Interno oscilador RC, 128 kHz)
0,042

85 C

0,035

25 C

0,028

-40 C

CPI (mA)
0,021

0,014

0,007

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

330
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-9. ATmega48PA: inactivo Corriente de suministro frente a VCC (Interno oscilador RC, 1 MHz)
0.35

85 C
25 C
-40 C

0.3

0.25

0.2
CPI (mA)

0.15

0.1

0.05

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-10. ATmega48PA: inactivo Corriente de suministro frente a Vcc (Interno oscilador RC, 8 MHz)
85 C
25 C
-40 C

1.2

0.8
CPI (mA)

0.6

0.4

0.2

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

331
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

29.1.3

ATmega48PA: Corriente de suministro de mdulos IO


Las tablas y frmulas a continuacin pueden ser utilizados para calcular el consumo de corriente adicional para
los diferentes mdulos de E / S en modo activo y de reposo. Los mdulos de la activacin o desactivacin de la I / O
son controlados por la Reduccin de Registro de energa. Ver "El poder de Reduccin de registro" en la pgina 42 para
detalles.

Tabla 29-1.
PRR poco

ATmega48PA: Consumo de corriente adicional para los diferentes mdulos de E / S


(valores absolutos)
Nmeros tpicos
VCC = 2V, F = 1 MHz

VCC = 3V, F = 4 MHz

VCC = 5V, F = 8 MHz

PRUSART0

2.9 uA

20.7 uA

97.4 uA

PRTWI

6.0 uA

44.8 uA

219,7 uA

PRTIM2

5.0 uA

34.5 uA

141,3 uA

PRTIM1

3.6 uA

24.4 uA

107.7 uA

PRTIM0

1.4 uA

9.5 uA

38.4 uA

PRSPI

5.0 uA

38.0 uA

190.4 uA

PRADC

6.1 uA

47.4 uA

244.7 uA

Tabla 29-2.

ATmega48PA: Consumo de corriente adicional (porcentaje) en la actividad e inactividad


modo
Consumo de corriente adicional
en comparacin con el activo con externo
reloj (consulte Figura 29-1 en la pgina
327 y Figura 29-2 en la pgina 327)

Consumo de corriente adicional


comparacin en Idle con externo
reloj (consulte Figura 29-6 en la pgina
329 y Figura 29-7 en la pgina 330)

PRUSART0

1,8%

11,4%

PRTWI

3,9%

20,6%

PRTIM2

2,9%

15,7%

PRTIM1

2,1%

11,2%

PRTIM0

0,8%

4,2%

PRSPI

3,3%

17,6%

PRADC

4,2%

22,1%

PRR poco

Es posible calcular el consumo de corriente tpico basado en los nmeros de Tabla 29-2
en la pgina 332 para otros ajustes VCC y frecuencia de los que aparecen en Tabla 29-1 en la pgina 332.
Ejemplo

Calcular el consumo actual se espera en modo inactivo con TIMER1, ADC, y SPI habilitado
en VCC = 2,0 V y F = 1 MHz. Desde Tabla 29-2 en la pgina 332, tercera columna, vemos que necesitamos
aadir 11,2% para el TIMER1, 22,1% para el ADC, y el 17,6% para el mdulo SPI. Leyendo de
Figura 29-6 en la pgina 329, Nos encontramos con que el consumo de corriente de reposo es de ~ 0,028 mA en VCC = 2.0V
y F = 1 MHz. El consumo total de corriente en modo inactivo con TIMER1, ADC, y SPI habilitado,
da:
Yo CC totales 0.028 mA (1 + 0,112 + 0,221 + 0,176) 0.042 mA

332
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.1.4

Energa-abajo Corriente de suministro


Figura 29-11. ATmega48PA: Power-Down Corriente de suministro frente a VCC (Watchdog Timer minusvlidos)
1.2

85 C
1

0.8
CPI (UA)
0.6

0.4

-40 C
25 C

0.2

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-12. ATmega48PA: Power-Down Corriente de suministro frente a VCC (temporizador Watchdog Activado)
8

-40 C
85 C
25 C
6

CPI (UA)

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

333
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.1.5

De ahorro de energa Corriente de


suministro
Figura 29-13. ATmega48PA: Ahorro de energa Corriente de suministro frente a VCC (Watchdog Timer discapacitados
y 32 kHz oscilador de cristal Running)
2

85 C

1.6

25 C

1.2
CPI (UA)

-40 C

0.8

0.4

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.1.6

Standby Corriente de suministro


Figura 29-14. ATmega48PA: En espera de suministro Corriente vs. Vcc (Watchdog Timer minusvlidos)
0.16

6MHz_xtal
6MHz_res

0.14
0.12

4MHz_res
4MHz_xtal

0.1
CPI (mA)
0.08

2MHz_res
2MHz_xtal

0.06

450kHz_res
0.04
0.02
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

334
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.1.7

Pin Pull-Up
Figura 29-15. ATmega48PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 1,8 V)
50

40

30
PIO (UA)

20

10

25 C
85 C
-40 C

0
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

VOP (V)

Figura 29-16. ATmega48PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 2,7 V)
70

60

50

40
PIO (UA)

30

20

25 C
85 C
-40 C

10

0
0

0.5

1.5

2.5

VOP (V)

335
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-17. ATmega48PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 5 V)
140

120

100

80
PIO (UA)

60

40

25 C
85 C
-40 C

20

0
0

VOP (V)

Figura 29-18. ATmega48PA: Restablecer resistencia pull-up actual vs. Cambiar Pin Voltaje (VCC = 1,8 V)
35

30

25
IRESET
20 (UA)

15

10

25 C
5

-40 C
85 C

0
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

VRESET (V)

336
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-19. ATmega48PA: Restablecer resistencia pull-up actual vs. Cambiar Pin Voltaje (VCC = 2,7 V)
60

50

40
IRESET (UA)
30

20

25 C
-40 C
85 C

10

0
0

0.5

1.5

2.5

VRESET (V)

Figura 29-20. ATmega48PA: Restablecer resistencia pull-up actual vs. Cambiar Pin Voltaje (VCC = 5 V)
120

100

80
IRESET (UA)

60

40

20

25 C
-40 C
85 C

0
0

0.5

1.5

2.5

3.5

4.5

VRESET (V)

337
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.1.8

Pin Fuerza Conductor


Figura 29-21. ATmega48PA: I / O Pin Voltaje de salida vs. Sink actual (VCC = 3 V)
1

85 C
0.8

25 C
0.6

-40 C

VOL (V)

0.4

0.2

0
0

12

16

20

IOL (mA)

Figura 29-22. ATmega48PA: I / O Pin Voltaje de salida vs. Sink actual (VCC = 5 V)
0.6

85 C

0.5

25 C
-40 C

0.4
VOL (V)

0.3

0.2

0.1

0
0

12

16

20

IOL (mA)

338
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-23. ATmega48PA: I / O Pin Voltaje de salida frente a la fuente de corriente (Vcc = 3 V)
3.5

2.5

-40 C
25 C
85 C

2
VOH (V)
1.5

0.5

0
0

12

16

20

IOH (mA)

Figura 29-24. ATmega48PA: I / O Pin Voltaje de salida frente a la fuente de corriente (VCC = 5 V)
5
4.9
4.8
4.7
VOH (V)

4.6

-40 C

4.5

25 C
4.4

85 C
4.3
4.2
0

12

16

20

IOH (mA)

339
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.1.9

Umbral Pin y histresis


Figura 29-25. ATmega48PA: I / O Pin de entrada Tensin umbral vs. VCC (VIH, I / O Pin ledo como '1')
3

-40 C
25 C
85 C

2.5

2
Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-26. ATmega48PA: I / O Pin de entrada Tensin umbral vs. VCC (VIllinois, I / O Pin ledo como '0')
2.5

85 C
25 C
-40 C

Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

340
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-27. ATmega48PA: I / O Pin histresis de entrada vs. VCC
0.6

25 C
85 C
-40 C

0.5
La histresis de
0.4 (mV)
entrada

0.3

0.2

0.1

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-28. ATmega48PA: Restablecer Umbral de entrada Tensin vs. VCC (VIH, I / O Pin ledo como '1')
-40 C
25 C
85 C

2.5

Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

341
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-29. ATmega48PA: Restablecer Umbral de entrada Tensin vs. VCC (VIllinois, I / O Pin ledo como '0')
2.5

85 C
25 C
-40 C

Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-30. ATmega48PA: Restablecer Pin histresis de entrada vs. VCC


0.7

0.6

0.5
La histresis
de
entrada (mV)
0.4

0.3

0.2

85 C
25 C
-40 C

0.1

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

342
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


01.29.10

Umbral BOD
Figura 29-31. ATmega48PA: BOD Umbrales vs. Temperatura (BODLEVEL es de 1,8 V)
1.85

Rising Vcc
1.84

1.83
Umbral (V)

1.82

Caer Vcc
1.81

1.8

1.79
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

Figura 29-32. ATmega48PA: BOD Umbrales vs. Temperatura (BODLEVEL es 2,7 V)


2.76

Rising Vcc
2.74

2.72
Umbral (V)
2.7

2.68

Caer Vcc

2.66

2.64

2.62
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

343
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-33. ATmega48PA: BOD Umbrales vs. Temperatura (BODLEVEL es de 4,3 V)
4.36

Rising Vcc
4.34

4.32
Umbral (V)

4.3

4.28

Caer Vcc
4.26

4.24
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

01.29.11

Oscilllator interna Velocidad


Figura 29-34. ATmega48PA: Watchdog Oscilador de Frecuencia vs. Temperatura
116

114

112
FRC (kHz)

110

2,7 V
3,3 V
4,0 V
5,5 V

108

106

104
-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

344
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-35. ATmega48PA: Watchdog Oscilador de Frecuencia vs. VCC
118

116

-40 C

114
FRC (kHz)

112

25 C

110

108

85 C
106
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-36. ATmega48PA: calibrada 8 MHz RC Oscilador de Frecuencia vs. VCC


8.2

85 C
8.1

25 C

FRC (MHz)
7.9

7.8

-40 C

7.7

7.6
1.5

2.5

3.5

4.5

5.5

VCC (V)

345
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-37. ATmega48PA: calibrada 8 MHz RC Oscilador de Frecuencia vs. Temperatura
8.2

3,3 V
5,5 V
1,8 V

8.1

8
FRC (MHz)
7.9

7.8

7.7

7.6
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

Figura 29-38. ATmega48PA: calibrada 8 MHz RC Oscilador de Frecuencia vs. OSCCAL Valor
16

85 C
25 C
-40 C

14
12
10
FRC (MHz)

8
6
4
2
0
0

16

32

48

64

80

96

112 128 144 160 176 192 208 224 240 256
OSCCAL (X1)

346
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


01.29.12

El consumo actual de las unidades perifricas


Figura 29-39. ATmega48PA: ADC actual vs. VCC (AREF = AVCC)
350

-40 C
25 C
85 C

300

250

CPI 200
(UA)
150

100

50

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-40. ATmega48PA: Comparador analgico actual vs. VCC


90

-40 C
25 C
85 C

80
70
60
CPI 50
(UA)
40
30
20
10
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

347
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-41. ATmega48PA: AREF externa actual de referencia vs. VCC
160

85 C
25 C
-40 C

140
120
100
CPI (UA)
80
60
40
20
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-42. ATmega48PA: Brownout Detector de corriente vs. VCC


40

32

85 C
25 C
-40 C

24
CPI (UA)

16

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

348
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-43. ATmega48PA: Programacin actual vs. VCC
6

-40 C
5

25 C
4
CPI (mA)

85 C
2

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.01.13

Consumo de corriente en Restablecer y Reset Amplitud de pulso


Figura 29-44. ATmega48PA: Restablecer Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
0.14

0.12

5,5 V

0.1

5,0 V
4,5 V

CPI 0.08
(mA)

4,0 V
0.06

3,3 V
0.04

2,7 V
1,8 V

0.02

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

349
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-45. ATmega48PA: Restablecer Corriente de suministro vs. frecuencia (1-20 MHz)
2.5

5,5 V
2

5,0 V
4,5 V

1.5

CPI (mA)

4,0 V
1

3,3 V
0.5

2,7 V
1,8 V

0
0

10

12

14

16

18

20

Frecuencia (MHz)

Figura 29-46. ATmega48PA: reset mnima anchura de pulso vs VCC


1600
1400
1200
PulseWidth
1000
(ns)
800
600
400

85 C
25 C
-40 C

200
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

350
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.2

ATmega88PA caractersticas tpicas

29.2.1

Activo Corriente de suministro


Figura 29-47. ATmega88PA: Activo Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
1

5,5 V
0.8

5,0 V
4,5 V

0.6
CPI (mA)

4,0 V
3,3 V

0.4

2,7 V
0.2

1,8 V

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

Figura 29-48. ATmega88PA: Activo Corriente de suministro vs. frecuencia (1-20 MHz)
12

5,5 V

10

5,0 V
8

4,5 V

CPI (mA)

4,0 V
4

3,3 V
2,7 V
2

1,8 V
0
0

10

12

14

16

18

20

Frecuencia (MHz)

351
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-49. ATmega88PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 128 kHz)
0.12

-40 C
25 C
85 C

0.09

CPI (mA)
0.06

0.03

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-50. ATmega88PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 1 MHz)
85 C1.2
25 C

-40 C1

0.8
CPI (mA)

0.6

0.4

0.2

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

352
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-51. ATmega88PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 8 MHz)
85 C
5
25 C

-40 C
4

CPI (mA)

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.2.2

Inactivo Corriente de suministro


Figura 29-52. ATmega88PA: inactivo Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
0.15

5,5 V
0.12

5,0 V
0.09

4,5 V

CPI (mA)

4,0 V
0.06

3,3 V
2,7 V

0.03

1,8 V

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

353
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-53. ATmega88PA: inactivo Corriente de suministro vs. frecuencia (1-20 MHz)
2.5

5,5 V
2

5,0 V
4,5 V

1.5

CPI (mA)

4,0 V
1

3,3 V
0.5

2,7 V
1,8 V

0
0

10

12

14

16

18

20

Frecuencia (MHz)

Figura 29-54. ATmega88PA: inactivo Corriente de suministro frente a VCC (Interno oscilador RC, 128 kHz)
0.04

85 C
0.03

25 C
-40 C

CPI (mA)
0.02

0.01

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

354
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-55. ATmega88PA: inactivo Corriente de suministro frente a VCC (Interno oscilador RC, 1 MHz)
0.35

85 C
25 C
-40 C

0.3

0.25

0.2
CPI (mA)

0.15

0.1

0.05

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-56. ATmega88PA: inactivo Corriente de suministro frente a Vcc (Interno oscilador RC, 8 MHz)
1.2

85 C
25 C
-40 C

0.9

CPI (mA)
0.6

0.3

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

355
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

29.2.3

ATmega88PA: Corriente de suministro de mdulos IO


Las tablas y frmulas a continuacin pueden ser utilizados para calcular el consumo de corriente adicional para
los diferentes mdulos de E / S en modo activo y de reposo. Los mdulos de la activacin o desactivacin de la I / O
son controlados por la Reduccin de Registro de energa. Ver "El poder de Reduccin de registro" en la pgina 42 para
detalles.

Tabla 29-3.
PRR poco

ATmega88PA: Consumo de corriente adicional para los diferentes mdulos de E / S


(valores absolutos)
Nmeros tpicos
VCC = 2V, F = 1 MHz

VCC = 3V, F = 4 MHz

VCC = 5V, F = 8 MHz

PRUSART0

3.0 uA

21.3 uA

97.9 uA

PRTWI

6.1 uA

45.4 uA

219,0 uA

PRTIM2

5.2 uA

35.2 uA

149.5 uA

PRTIM1

3.8 uA

25.6 uA

110.0 uA

PRTIM0

1.5 uA

9.8 uA

39.6 uA

PRSPI

5.2 uA

40.0 uA

199.6 uA

PRADC

6.3 uA

48.7 uA

247.0 uA

Tabla 29-4.

ATmega88PA: Consumo de corriente adicional (porcentaje) en la actividad e inactividad


modo
Consumo de corriente adicional
en comparacin con el activo con externo
reloj (consulte Figura 29-47 en la pgina
351 y Figura 29-48 en la pgina
351)

Consumo de corriente adicional


comparacin en Idle con externo
reloj (consulte Figura 29-52 en la pgina
353 y Figura 29-53 en la pgina
354)

PRUSART0

1,8%

11,4%

PRTWI

3,9%

24,4%

PRTIM2

2,9%

18,6%

PRTIM1

2,1%

13,6%

PRTIM0

0,8%

5,2%

PRSPI

3,5%

21,5%

PRADC

4,2%

26,3%

PRR poco

Es posible calcular el consumo de corriente tpico basado en los nmeros de Tabla 29-4
en la pgina 356 para otros ajustes VCC y frecuencia de los que aparecen en Tabla 29-3 en la pgina 356.
Ejemplo

Calcular el consumo actual se espera en modo inactivo con TIMER1, ADC, y SPI habilitado
en VCC = 2,0 V y F = 1 MHz. Desde Tabla 29-4 en la pgina 356, tercera columna, vemos que necesitamos
aadir 13,6% para el TIMER1, 26,3% para el ADC, y el 21,5% para el mdulo SPI. Leyendo de
Figura 29-52 en la pgina 353, Nos encontramos con que el consumo de corriente de reposo es de ~ 0,027 mA en VCC = 2.0V
y F = 1 MHz. El consumo total de corriente en modo inactivo con TIMER1, ADC, y SPI habilitado,
da:
Yo CC totales 0.027 mA (1 + 0.136 + 0.263 + 0.215) 0.043 mA

356
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.2.4

Energa-abajo Corriente de suministro


Figura 29-57. ATmega88PA: Power-Down Corriente de suministro frente a VCC (Watchdog Timer minusvlidos)
1.6

85 C

1.4
1.2
1
CPI (UA)
0.8
0.6
0.4

25 C
0.2

-40 C

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-58. ATmega88PA: Power-Down Corriente de suministro frente a VCC (temporizador Watchdog Activado)
8

85 C
-40 C
25 C

CPI (UA)

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

357
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.2.5

De ahorro de energa Corriente de


suministro
Figura 29-59. ATmega88PA: Ahorro de energa Corriente de suministro frente a VCC (Watchdog Timer discapacitados
y 32 kHz oscilador de cristal 32 kHz CRYSTAL OSCILLATOR RUNNINGWATCHDOG Desactivado El temporizador yRunning)
3

2.5

85 C

-40 C

CPI (UA)
1.5
25 C
1

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.2.6

Standby Corriente de suministro


Figura 29-60. ATmega88PA: En espera de suministro Corriente vs. Vcc (Watchdog Timer minusvlidos)
0.18

6MHz_res
6MHz_xtal

0.16
0.14
0.12

4MHz_res
4MHz_xtal

CPI (mA)
0.1
0.08

2MHz_res
2MHz_xtal

0.06

450kHz_res

0.04
0.02
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

358
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.2.7

Pin Pull-Up
Figura 29-61. ATmega88PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 1,8 V)
50

40

30
PIO (UA)

20

10

25 C
-40 C
85 C

0
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

VOP (V)

Figura 29-62. ATmega88PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 2,7 V)
80
70
60
50
PIO (UA)

40
30
20

25 C
-40 C

10

85 C

0
0

0.5

1.5

2.5

VOP (V)

359
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-63. ATmega88PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 5 V)
140

120

100

80
PIO (UA)
60

40

25 C
85 C
-40 C

20

0
0

VOP (V)

Figura 29-64. ATmega88PA: Restablecer resistencia pull-up actual vs. Cambiar Pin Voltaje (VCC = 1,8 V)
40
35
30
25

IRESET (UA)

20
15
10

25 C

-40 C
85 C

0
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

VRESET (V)

360
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-65. ATmega88PA: Restablecer resistencia pull-up actual vs. Cambiar Pin Voltaje (VCC = 2,7 V)
60

50

40
IRESET (UA)
30

20

25 C
-40 C
85 C

10

0
0

0.5

1.5

2.5

VRESET (V)

Figura 29-66. ATmega88PA: Restablecer resistencia pull-up actual vs. Cambiar Pin Voltaje (VCC = 5 V)
120

100

80
IRESET (UA)

60

40

25 C
-40 C
85 C

20

0
0

0.5

1.5

2.5

3.5

4.5

VRESET (V)

361
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.2.8

Pin Fuerza Conductor


Figura 29-67. ATmega88PA: I / O Pin Voltaje de salida vs. Sink actual (VCC = 3 V)
1

85 C
0.8

25 C
0.6
VOL (V)

-40 C

0.4

0.2

0
0

12

16

20

IOL (mA)

Figura 29-68. ATmega88PA: I / O Pin Voltaje de salida vs. Sink actual (VCC = 5 V)
0.6

85 C
0.5

25 C
0.4

-40 C

VOL (V)
0.3

0.2

0.1

0
0

12

16

20

IOL (mA)

362
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-69. ATmega88PA: I / O Pin Voltaje de salida frente a la fuente de corriente (Vcc = 3 V)
3.5

2.5

-40 C
25 C
85 C

2
VOH (V)
1.5

0.5

0
0

12

16

20

IOH (mA)

Figura 29-70. ATmega88PA: I / O Pin Voltaje de salida frente a la fuente de corriente (VCC = 5 V)
5
4.9
4.8
4.7
VOH (V)

4.6

-40 C
4.5

25 C
85 C

4.4
4.3
4.2
0

12

16

20

IOH (mA)

363
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.2.9

Umbral Pin y histresis


Figura 29-71. ATmega88PA: I / O Pin de entrada Tensin umbral vs. VCC (VIH, I / O Pin ledo como '1')
3

85 C
-40 C
25 C

2.5

2
Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-72. ATmega88PA: I / O Pin de entrada Tensin umbral vs. VCC (VIllinois, I / O Pin ledo como '0')
-40 C
2.5
85 C

25 C
2

Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

364
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-73. ATmega88PA: I / O Pin histresis de entrada vs. VCC
0.6

25 C
85 C
-40 C

0.5
La histresis de
0.4 (mV)
entrada

0.3

0.2

0.1

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-74. ATmega88PA: Restablecer Umbral de entrada Tensin vs. VCC (VIH, I / O Pin ledo como '1')
-40 C

1.5

25 C
85 C
1.2

Umbral (V)

0.9

0.6

0.3

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

365
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-75. ATmega88PA: Restablecer Umbral de entrada Tensin vs. VCC (VIllinois, I / O Pin ledo como '0')
2.5

85 C
25 C
-40 C

Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-76. ATmega88PA: Restablecer Pin histresis de entrada vs. VCC


0.6

0.5
La histresis de
0.4 (mV)
entrada

0.3

0.2

85 C
25 C
-40 C

0.1

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

366
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.02.10

Umbral BOD
Figura 29-77. ATmega88PA: BOD Umbrales vs. Temperatura (BODLEVEL es de 1,8 V)
1.83

Rising Vcc

1.82

1.81
Umbral (V)
1.8

1.79

Caer Vcc
1.78

1.77
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

70

80

90

Temperatura ( C)

Figura 29-78. ATmega88PA: BOD Umbrales vs. Temperatura (BODLEVEL es 2,7 V)


2.76

Rising Vcc
2.74

2.72
Umbral (V)

2.7

Caer Vcc

2.68

2.66

2.64
-50

-40

-30

-20

-10

10

20

30

40

50

60

Temperatura ( C)

367
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-79. ATmega88PA: BOD Umbrales vs. Temperatura (BODLEVEL es de 4,3 V)
4.34

Rising Vcc
4.32

4.3
Umbral (V)
4.28

Caer Vcc

4.26

4.24

4.22
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

29.02.11

Oscilllator interna Velocidad


Figura 29-80. ATmega88PA: Watchdog Oscilador de Frecuencia vs. Temperatura
114
113
112
111
FRC (kHz)

110
109
108

2,7 V
3,3 V
4,0 V
5,5 V

107
106
105
-40

-20

20

40

60

80

100

Temperatura ( C)

368
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-81. ATmega88PA: Watchdog Oscilador de Frecuencia vs. VCC
116

114

-40 C
112
FRC (kHz)

25 C

110

108

106

85 C

104
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-82. ATmega88PA: calibrada 8 MHz RC Oscilador de Frecuencia vs. VCC


8.3

85 C
8.2

8.1

25 C

FRC (MHz)
8

7.9

-40 C
7.8

7.7

7.6
1.5

2.5

3.5

4.5

5.5

VCC (V)

369
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-83. ATmega88PA: calibrada 8 MHz RC Oscilador de Frecuencia vs. Temperatura
8.3

5,5 V
4,0 V

8.2

3,0 V
FRC8.1
(MHz)

7.9

7.8
-40

-20

20

40

60

80

100

Temperatura ( C)

Figura 29-84. ATmega88PA: calibrada 8 MHz RC Oscilador de Frecuencia vs. OSCCAL Valor
14

85 C
25 C
-40 C

12

10
FRC (MHz)
8

0
0

16

32

48

64

80

96

112 128 144 160 176 192 208 224 240 256
OSCCAL (X1)

370
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


02.29.12

El consumo actual de las unidades perifricas


Figura 29-85. ATmega88PA: ADC actual vs. VCC (AREF = AVCC)
-40 C
25 C
85 C

300

250

200
CPI (UA)

150

100

50

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-86. ATmega88PA: Comparador analgico actual vs. VCC


90

-40 C
25 C
85 C

80
70
60
CPI 50
(UA)
40
30
20
10
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

371
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-87. ATmega88PA: AREF externa actual de referencia vs. VCC
85 C
25 C
-40 C

160
140
120
100
CPI (UA)
80
60
40
20
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-88. ATmega88PA: Brownout Detector de corriente vs. VCC


50

40

30
CPI (UA)

85 C
25 C

20

-40 C

10

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

372
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-89. ATmega88PA: Programacin actual vs. VCC
8

-40 C
25 C

7
6

85 C
5
CPI (mA)

4
3
2
1
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

02.29.13

Consumo de corriente en Restablecer y Reset Amplitud de pulso


Figura 29-90. ATmega88PA: Restablecer Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
0.12

5,5 V
0.1

5,0 V
0.08

4,5 V
CPI (mA)

4,0 V

0.06

3,3 V
0.04

2,7 V
1,8 V

0.02

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

373
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-91. ATmega88PA: Restablecer Corriente de suministro vs. frecuencia (1-20 MHz)
2

5,5 V
5,0 V

1.6

4,5 V
1.2

CPI (mA)

4,0 V

0.8

3,3 V
0.4

2,7 V
1,8 V

0
0

10

12

14

16

18

20

Frecuencia (MHz)

Figura 29-92. ATmega88PA: reset mnima anchura de pulso vs VCC


1600
1400
1200
PulseWidth
1000
(ns)
800
600
400

85 C
25 C
-40 C

200
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

374
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.3

ATmega168PA caractersticas tpicas

29.3.1

Activo Corriente de suministro


Figura 29-93. ATmega168PA: Activo Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
1

5,5 V
0.8

5,0 V
4,5 V

0.6
CPI (mA)

4,0 V
3,3 V

0.4

2,7 V
0.2

1,8 V

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

Figura 29-94. ATmega168PA: Activo Corriente de suministro vs. frecuencia (1-20 MHz)
12

5,5 V
10

5,0 V
8

4,5 V

CPI (mA)

4,0 V
4

3,3 V
2,7 V

1,8 V
0
0

10

12

14

16

18

20

Frecuencia (MHz)

375
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-95. ATmega168PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 128 kHz)
0.15

-40 C
85 C
25 C

0.12

0.09
CPI (mA)

0.06

0.03

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-96. ATmega168PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 1 MHz)
1.2

85 C
25 C
-40 C

0.8
CPI (mA)
0.6

0.4

0.2

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

376
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-97. ATmega168PA: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 8 MHz)
85 C
25 C
-40 C

CPI (mA)

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.3.2

Inactivo Corriente de suministro


Figura 29-98. ATmega168PA: inactivo Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
0.15

5,5 V
0.12

5,0 V
4,5 V

0.09
CPI (mA)

4,0 V
0.06

3,3 V
2,7 V

0.03

1,8 V
0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

377
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-99. ATmega168PA: inactivo Corriente de suministro vs. frecuencia (1-20 MHz)
3

5,5 V

2.5

5,0 V
2

4,5 V

CPI (mA)
1.5

4,0 V
1

3,3 V
0.5

2,7 V
1,8 V

0
0

10

12

14

16

18

20

Frecuencia (MHz)

Figura 29-100.IATmega168PA: dle Corriente de suministro frente a VCC (Interno oscilador RC, 128 kHz)
0.04

85 C
0,035
0.03

25 C
-40 C

0,025
CPI (mA)
0.02
0,015
0.01
0,005
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

378
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-101.ATmega168PA: Inactivo Corriente de suministro frente a VCC (Interno oscilador RC, 1 MHz)
0.3

85 C
25 C
-40 C

0.25

0.2
CPI (mA)
0.15

0.1

0.05

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-102.ATmega168PA: Inactivo Corriente de suministro frente a Vcc (Interno oscilador RC, 8 MHz)
1.2

85 C
25 C
-40 C

0.9

CPI (mA)
0.6

0.3

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

379
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

29.3.3

ATmega168PA Corriente de suministro de mdulos IO


Las tablas y frmulas a continuacin pueden ser utilizados para calcular el consumo de corriente adicional para
los diferentes mdulos de E / S en modo activo y de reposo. Los mdulos de la activacin o desactivacin de la I / O
son controlados por la Reduccin de Registro de energa. Ver "El poder de Reduccin de registro" en la pgina 42 para
detalles.

Tabla 29-5.
PRR poco

ATmega168PA: Consumo de corriente adicional para los diferentes mdulos de E / S


(valores absolutos)
Nmeros tpicos
VCC = 2V, F = 1 MHz

VCC = 3V, F = 4 MHz

VCC = 5V, F = 8 MHz

PRUSART0

2.86 uA

20.3 uA

52.2 uA

PRTWI

6.00 uA

44.1uA

122,0 uA

PRTIM2

4.97 uA

33.2 uA

79.8 uA

PRTIM1

3.50 uA

23.0 uA

55.3 uA

PRTIM0

1.43 uA

9.2 uA

21.4 uA

PRSPI

5.01 uA

38.6 uA

111.4 uA

PRADC

6.34 uA

45.7 uA

123.6 uA

Tabla 29-6.

ATmega168PA: Consumo de corriente adicional (porcentaje) en la actividad e inactividad


modo
Consumo de corriente adicional
en comparacin con el activo con externo
reloj (consulte Figura 29-93 en la pgina
375 y Figura 29-94 en la pgina
375)

Consumo de corriente adicional


comparacin en Idle con externo
reloj (consulte Figura 29-98 en la pgina
377 y Figura 29-99 en la pgina
378)

PRUSART0

1,5%

8,9%

PRTWI

3,2%

19,5%

PRTIM2

2,4%

14,8%

PRTIM1

1,7%

10,3%

PRTIM0

0,7%

4,1%

PRSPI

2,9%

17,1%

PRADC

3,4%

20,3%

PRR poco

Es posible calcular el consumo de corriente tpico basado en los nmeros de Tabla 29-6
en la pgina 380 para otros ajustes VCC y frecuencia de los que aparecen en Tabla 29-5 en la pgina 380.
Ejemplo

Calcular el consumo actual se espera en modo inactivo con TIMER1, ADC, y SPI habilitado
en VCC = 2,0 V y F = 1 MHz. Desde Tabla 29-6 en la pgina 380, tercera columna, vemos que necesitamos
aadir 10,3% para el TIMER1, 20,3% para el ADC, y 17,1% para el mdulo SPI. Leyendo de
Figura 29-98 en la pgina 377, Nos encontramos con que el consumo de corriente de reposo es de ~ 0,027 mA en VCC = 2.0V
y F = 1 MHz. El consumo total de corriente en modo inactivo con TIMER1, ADC, y SPI habilitado,
da:
Yo CC totales 0.027 mA (1 + 0.103 + 0.203 + 0.171) 0.040 mA

380
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.3.4

Energa-abajo Corriente de suministro


Figura 29-103.ATmega168PA: Power-Abajo Corriente de suministro frente a VCC (Watchdog Timer
Disabled)
1

85 C
0.8

0.6
CPI (UA)

0.4

0.2

25 C
-40 C
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-104.ATmega168PA: Power-Abajo Corriente de suministro frente a VCC (temporizador Watchdog Activado)
8

-40 C
85 C
25 C

CPI (UA)

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

381
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.3.5

De ahorro de energa Corriente de


suministro
Figura 29-105.ATmega168PA: Ahorro de energa Corriente de suministro frente a VCC (Watchdog Timer discapacitados
y 32 kHz oscilador de cristal Running)
2.5

85 C
2

1.5
CPI (UA)

-40 C
25 C

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.3.6

Standby Corriente de suministro


Figura 29-106.ATmega168PA: Standby Corriente de suministro frente a Vcc (Watchdog Timer minusvlidos)
6MHz_xtal
6MHz_res

0.14

0.12

4MHz_res
4MHz_xtal

0.1

CPI 0.08
(mA)

2MHz_res
2MHz_xtal
450kHz_res
1MHz_res

0.06

0.04

0.02

0
1.5

2.5

3.5

4.5

5.5

VCC (MHz)

382
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.3.7

Pin Pull-Up
Figura 29-107.ATmega168PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 1,8 V)
50

40

30
PIO (UA)

20

10

25 C
-40 C
85 C

0
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

VOP (V)

Figura 29-108.ATmega168PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 2,7 V)
80
70
60
50
PIO (UA)

40
30
20

25 C

10

-40 C
85 C

0
0

0.5

1.5

2.5

VOP (V)

383
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-109.ATmega168PA: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 5 V)
160
140
120
100
PIO (UA)
80
60
40

25 C

20

-40 C
85 C

0
0

VOP (V)

Figura 29-110.ATmega168PA: Reponer resistencia pull-up actual vs. Cambiar Pin Voltaje
(VCC = 1,8 V)
40
35
30
25
IRESET (UA)

20
15
10

25 C
5

-40 C
85 C

0
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

VRESET (V)

384
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-111.ATmega168PA: Reponer resistencia pull-up actual vs. Cambiar Pin Voltaje
(VCC = 2,7 V)
60

50

40
IRESET (UA)

30

20

25 C
-40 C
85 C

10

0
0

0.5

1.5

2.5

VRESET (V)

Figura 29-112.ATmega168PA: Reponer resistencia pull-up actual vs. Cambiar Pin Voltaje (VCC = 5V)
120

100

80
IRESET (UA)

60

40

25 C
-40 C
85 C

20

0
0

VRESET (V)

385
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.3.8

Pin Fuerza Conductor


Figura 29-113.ATmega168PA: I / O Pin Voltaje de salida vs. Sink actual (VCC = 3 V)
1

85 C
0.8

25 C
0.6
VOL (V)

-40 C

0.4

0.2

0
0

12

16

20

IOL (mA)

Figura 29-114.ATmega168PA: I / O Pin Voltaje de salida vs. Sink actual (VCC = 5 V)


0.6

85 C
0.5

25 C
-40 C

0.4
VOL (V)
0.3

0.2

0.1

0
0

12

16

20

IOL (mA)

386
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-115.ATmega168PA: I / O Pin Voltaje de salida vs. Fuente actual (Vcc = 3 V)
3.5

2.5

-40 C
25 C
85 C

2
VOH (V)
1.5

0.5

0
0

12

16

20

IOH (mA)

Figura 29-116.ATmega168PA: I / O Pin Voltaje de salida vs. Fuente actual (VCC = 5 V)


5

4.8

4.6

-40 C
25 C
85 C

VOH (V)

4.4

4.2

4
0

12

16

20

IOH (mA)

387
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.3.9

Umbral Pin y histresis


Figura 29-117.ATmega168PA: I / O Pin Umbral de entrada Tensin vs. VCC (VIH, I / O Pin ledo como '1')
3

85 C
25 C
-40 C

2.5

2
Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-118.ATmega168PA: I / O Pin Umbral de entrada Tensin vs. VCC (VIllinois, I / O Pin ledo como '0')
85 C
25 C
-40 C

2.5

Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

388
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-119.ATmega168PA: I / O Pin histresis de entrada vs. VCC
85 C
25 C
-40 C

0.6

0.5
La histresis de
0.4 (mV)
entrada

0.3

0.2

0.1

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-120.ATmega168PA: Restablecer Umbral de entrada Tensin vs. VCC (VIH, I / O Pin ledo como '1')
85 C
-40 C
25 C

1.5

1.2

Umbral (V)

0.9

0.6

0.3

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

389
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-121.ATmega168PA: Restablecer Umbral de entrada Tensin vs. VCC (VIllinois, I / O Pin ledo como '0')
-40 C
85 C
25 C

2.5

Umbral (V)

1.5

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-122.ATmega168PA: Cambiar Pin histresis de entrada vs. VCC


0.7

0.6

0.5
La histresis
de
entrada (mV)
0.4

0.3

0.2

85 C
0.1

25 C
-40 C

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

390
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


03.29.10

Umbral BOD
Figura 29-123.ATmega168PA: BOD Umbrales vs. Temperatura (BODLEVEL es de 1,8 V)
1.86

1.84

Rising Vcc
1.82
Umbral (V)

1.8

Caer Vcc
1.78

1.76

1.74

1.72
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

Figura 29-124.ATmega168PA: BOD Umbrales vs. Temperatura (BODLEVEL es 2,7 V)


2.76

Rising Vcc
2.74

2.72
Umbral (V)

2.7

2.68

Caer Vcc
2.66

2.64

2.62
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

391
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-125.ATmega168PA: BOD Umbrales vs. Temperatura (BODLEVEL es 4,3 V)
4.34

4.32

Rising Vcc

4.3
Umbral (V)

4.28

4.26

Caer Vcc
4.24

4.22

4.2
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

03.29.11

Oscilllator interna Velocidad


Figura 29-126.ATmega168PA: Watchdog Oscilador de Frecuencia vs. Temperatura
121

119

117
FRC (kHz)

115

2,7 V
113

3,3 V
5,5 V

111
-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

392
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-127.ATmega168PA: Watchdog Oscilador de Frecuencia vs. VCC
122

120

-40 C
118
FRC (kHz)

25 C

116

114

112

85 C

110
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-128.ATmega168PA: Calibrada 8 MHz RC Oscilador de Frecuencia vs. VCC


8,4

85 C
8.2

25 C
8
FRC (MHz)

7.8

-40 C
7.6

7.4
1.5

2.5

3.5

4.5

5.5

VCC (V)

393
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-129.ATmega168PA: Calibrada 8 MHz RC Oscilador de Frecuencia vs. Temperatura
8.3

5,5 V
5,0 V
2,7 V

8.2
8.1

1,8 V

8
FRC (MHz)

7.9
7.8
7.7
7.6
7.5
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

Temperatura ( C)

Figura 29-130.ATmega168PA: Calibrada 8 MHz RC Oscilador de Frecuencia vs. OSCCAL Valor


16

85 C
25 C

14

-40 C
12
10
FRC (MHz)

8
6
4
2
0
0

16

32

48

64

80

96

112 128 144 160 176 192 208 224 240 256
OSCCAL (X1)

394
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


03.29.12

El consumo actual de las unidades perifricas


Figura 29-131.ATmega168PA: ADC actual vs. VCC (AREF = AVCC)
350

-40 C
25 C
85 C

300

250
CPI (UA)

200

150

100
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-132.ATmega168PA: Comparador analgico actual vs. VCC


90

-40 C
25 C
85 C

80

70
CPI (UA)

60

50

40

30
1.5

2.5

3.5

4.5

5.5

VCC (V)

395
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-133.ATmega168PA: AREF externa actual de referencia vs. VCC
180

25 C

160

85 C
-40 C

140
120
CPI (UA)
100

80
60
40
20
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-134.ATmega168PA: Brownout Detector de corriente vs. VCC


26

85 C

24

25 C
22

-40 C

20
CPI (UA)

18

16

14

12
1.5

2.5

3.5

4.5

5.5

VCC (V)

396
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-135.ATmega168PA: Programacin actual vs. VCC
10

-40 C
25 C

85 C

CPI (mA)

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.03.13

Consumo de corriente en Restablecer y Reset Amplitud de pulso


Figura 29-136.ATmega168PA: Restablecer Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
0.12

5,5 V
0.1

5,0 V
0.08

4,5 V

CPI (mA)

4,0 V

0.06

3,3 V

0.04

2,7 V
1,8 V

0.02

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

397
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-137.ATmega168PA: Restablecer Corriente de suministro vs. frecuencia (1-20 MHz)
2.5

5,5 V

5,0 V
4,5 V

1.5

CPI (mA)

4,0 V
1

3,3 V
0.5

2,7 V
1,8 V

0
0

10

12

14

16

18

20

Frecuencia (MHz)

Figura 29-138.ATmega168PA: El ancho de pulso de reset mnima vs. VCC


1750

1500

1250
PulseWidth
(ns)
1000

750

500

85 C
25 C
-40 C

250

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

398
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.4

ATmega328P caractersticas tpicas

29.4.1

Activo Corriente de suministro


Figura 29-139.ATmega328P: Activo Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
1.2

5,5 V
1

5,0 V
0.8

4,5 V

CPI (mA)

4,0 V

0.6

3,3 V
0.4

2,7 V
1,8 V

0.2

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

Figura 29-140.ATmega328P: Activo Corriente de suministro vs. frecuencia (1-20 MHz)


14

5,5 V

12

5,0 V

10

4,5 V

CPI (mA)

4,0 V
6

3,3 V
4

2,7 V
2

1,8 V
0
0

10

12

14

16

18

20

Frecuencia (MHz)

399
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-141.ATmega328P: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 128 kHz)
0.16

85 C
25 C
-40 C
0.12

CPI (mA)

0.08

0.04

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-142.ATmega328P: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 1 MHz)
1.4

85 C
25 C

1.2

-40 C
1

0.8
CPI (mA)
0.6

0.4

0.2

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

400
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-143.ATmega328P: Activo Corriente de suministro frente a VCC (Interno oscilador RC, 8 MHz)
8
7

85 C
25 C

-40 C
5
CPI (mA)

4
3
2
1
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.4.2

Inactivo Corriente de suministro


Figura 29-144.ATmega328P: Inactivo Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
0.2

5,5 V
0.16

5,0 V
4,5 V

0.12
CPI (mA)

4,0 V
3,3 V

0.08

2,7 V
0.04

1,8 V

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

401
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-145.ATmega328P: Inactivo Corriente de suministro vs. frecuencia (1-20 MHz)
4
3.5

5,5 V

5,0 V

2.5

4,5 V

Yo CC (mA)

4,0 V

1.5

3,3 V

2,7 V

0.5

1,8 V

0
0

10

12

14

16

18

20

Frecuencia (MHz)

Figura 29-146.ATmega328P: Inactivo Corriente de suministro frente a VCC (Interno oscilador RC, 128 kHz) ,
0.06

0.05

85 C

0.04
CPI (mA)

25 C
-40 C

0.03

0.02

0.01

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

402
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-147.ATmega328P: Inactivo Corriente de suministro frente a VCC (Interno oscilador RC, 1 MHz)
0.4

85 C

0.35

25 C
0.3

-40 C
0.25
CPI (mA)

0.2
0.15
0.1
0.05
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-148.ATmega328P: Inactivo Corriente de suministro frente a Vcc (Interno oscilador RC, 8 MHz)
2

85 C

1.6

25 C

-40 C
1.2
CPI (mA)

0.8

0.4

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

403
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P

29.4.3

ATmega328P Corriente de suministro de mdulos IO


Las tablas y frmulas a continuacin pueden ser utilizados para calcular el consumo de corriente adicional para
los diferentes mdulos de E / S en modo activo y de reposo. Los mdulos de la activacin o desactivacin de la I / O
son controlados por la Reduccin de Registro de energa. Ver "El poder de Reduccin de registro" en la pgina 42 para
detalles.

Tabla 29-7.
PRR poco

ATmega328P: Consumo de corriente adicional para los diferentes mdulos de E / S


(valores absolutos)
Nmeros tpicos
VCC = 2V, F = 1 MHz

VCC = 3V, F = 4MHz

PRUSART0

3,20 mu

22,17 mu

100,25 mu

PRTWI

7,34 mu

46,55 mu

199,25 mu

PRTIM2

7,34 mu

50,79 mu

224,25 mu

PRTIM1

6,19 mu

41,25 mu

176,25 mu

PRTIM0

1,89 mu

14,28 mu

61,13 mu

PRSPI

6,94 mu

43,84 mu

186,50 mu

PRADC

8,66 mu

61,80 mu

295,38 mu

Tabla 29-8.

PRR poco

VCC = 5V, F = 8 MHz

ATmega328P: Consumo de corriente adicional (porcentaje) en la actividad e inactividad


modo
Consumo de corriente adicional
Consumo de corriente adicional
en comparacin con el activo con externo comparacin en Idle con externo
reloj (consulte Figura 29 a 139 en la pginareloj (consulte Figura 29 a 144 en la pgina
399 y Figura 29 a 140 en la pgina
401 y Figura 29 a 145 en la pgina
399)
402)

PRUSART0

1,4%

7,8%

PRTWI

3,0%

16,6%

PRTIM2

3,3%

17,8%

PRTIM1

2,7%

14,5%

PRTIM0

0,9%

4,8%

PRSPI

2,9%

15,7%

PRADC

4,1%

22,1%

Es posible calcular el consumo de corriente tpico basado en los nmeros de Tabla 29-8
en la pgina 404 para otros ajustes VCC y frecuencia de los que aparecen en Tabla 29-7 en la pgina 404.
Ejemplo

Calcular el consumo actual se espera en modo inactivo con TIMER1, ADC, y SPI habilitado
en VCC = 2,0 V y F = 1 MHz. Desde Tabla 29-8 en la pgina 404, tercera columna, vemos que necesitamos
aadir 14,5% para el TIMER1, 22,1% para el ADC, y el 15,7% para el mdulo SPI. Leyendo de
Figura 29 a 145 en la pgina 402, nos encontramos con que el consumo de corriente de reposo es de ~ 0,055 mA en VCC =
2.0V y F = 1 MHz. El consumo total de corriente en modo inactivo con TIMER1, ADC, y SPI
habilitado, da:
Yo CC totales 0.045 mA (1 + 0,145 + 0,221 + 0,157) 0.069 mA

404
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.4.4

Energa-abajo Corriente de suministro


Figura 29-149.ATmega328P: Power-Abajo Corriente de suministro frente a VCC (Watchdog Timer minusvlidos)
1.2

85 C
1

0.8
CPI (UA)

0.6

0.4

0.2

25 C
-40 C
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-150.ATmega328P: Power-Abajo Corriente de suministro frente a VCC (temporizador Watchdog Activado)
10
9

-40 C
85 C
25 C

8
7
6
CPI (UA)

5
4
3
2
1
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

405
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.4.5

De ahorro de energa Corriente de


suministro
Figura 29-151.ATmega328P: Ahorro de energa Corriente de suministro frente a VCC (Watchdog Timer discapacitados
y 32 kHz oscilador de cristal Running)
2
1.8
1.6

25 C

1.4
1.2
CPI (UA)

1
0.8
0.6
0.4
0.2
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

29.4.6

Standby Corriente de suministro


Figura 29-152.ATmega328P: Standby Corriente de suministro frente a Vcc (Watchdog Timer minusvlidos)
0.16

6MHz_res
6MHz_xtal

0.14
0.12

4MHz_res
4MHz_xtal

0.1
0.08

2MHz_res
2MHz_xtal

0.06

1MHz_res

CPI (mA)

0.04
0.02
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

406
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.4.7

Pin Pull-Up
Figura 29-153.ATmega328P: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 1,8 V)
60

50

40
PIO (UA)

30

20

25 C

10

85 C
-40 C
0
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

VOP (V)

Figura 29-154.ATmega328P: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 2,7 V)
90
80
70
60
PIO 50
(UA)

40
30
20

25 C

10

85 C
-40 C

0
0

0.5

1.5

2.5

VOP (V)

407
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-155.ATmega328P: I / O Pin resistencia pull-up actual vs. Voltaje de entrada (VCC = 5 V)
160
140
120
100
PIO (UA)

80
60
40

25 C
85 C

20

-40 C

0
0

VOP (V)

Figura 29-156.ATmega328P: Reponer resistencia pull-up actual vs. Cambiar Pin Voltaje
(VCC = 1,8 V)
40
35
30
25
IRESET (UA)

20
15
10

25 C
85 C

-40 C

0
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

VRESET (V)

408
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-157.ATmega328P: Reponer resistencia pull-up actual vs. Cambiar Pin Voltaje
(VCC = 2,7 V)
70

60

50
IRESET
40 (UA)

30

20

25 C
10

85 C
-40 C

0
0

0.5

1.5

2.5

VRESET (V)

Figura 29-158.ATmega328P: Reponer resistencia pull-up actual vs. Cambiar Pin Voltaje (VCC = 5 V)
120

100

80
IRESET (UA)
60

40

25 C
20

85 C
-40 C

0
0

VRESET (V)

409
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.4.8

Pin Fuerza Conductor


Figura 29-159.ATmega328P: I / O Pin Voltaje de salida vs. Sink actual (VCC = 3 V)
1

85 C
0.8

25 C
0.6
V OL (V)

-40 C

0.4

0.2

0
0

10

15

20

25

IOL (mA)

Figura 29-160.ATmega328P: I / O Pin Voltaje de salida vs. Sink actual (VCC = 5 V)


0.6

85 C
0.5

25 C
0.4

-40 C
V OL (V)

0.3

0.2

0.1

0
0

10

15

20

25

IOL (mA)

410
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-161.ATmega328P: I / O Pin Voltaje de salida vs. Fuente actual (Vcc = 3 V)
3.5

2.5

-40 C
25 C
85 C

2
V OH (V)
1.5

0.5

0
0

10

15

20

25

IOH (mA)

Figura 29-162.ATmega328P: I / O Pin Voltaje de salida vs. Fuente actual (VCC = 5 V)


5.1
5
4.9
4.8
V OH (V)

4.7
4.6

-40 C
4.5

25 C
4.4

85 C

4.3
0

10

15

20

25

IOH (mA)

411
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.4.9

Umbral Pin y histresis


Figura 29-163.ATmega328P: I / O Pin Umbral de entrada Tensin vs. VCC (VIH, I / O Pin ledo como '1'),
4
3.5

-40 C
25 C
85 C

3
2.5

Umbral (V)

2
1.5
1
0.5
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-164.ATmega328P: I / O Pin Umbral de entrada Tensin vs. VCC (VIllinois, I / O Pin ledo como '0')
2.5

85 C
25 C
-40 C

Umbral
1.5 (V)

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

412
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-165.ATmega328P: I / O Pin histresis de entrada vs. VCC
0.7

-40 C
25 C
85 C

0.6

0.5
La histresis
de entrada
(mV)
0.4

0.3

0.2

0.1

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-166.ATmega328P: Restablecer Umbral de entrada Tensin vs. VCC (VIH, I / O Pin ledo como '1')
2.5

-40 C
25 C

85 C

Umbral
1.5 (V)

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

413
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-167.ATmega328P: Restablecer Umbral de entrada Tensin vs. VCC (VIllinois, I / O Pin ledo como '0')
2.5

85 C
25 C

-40 C

Umbral
1.5 (V)

0.5

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-168.ATmega328P: Cambiar Pin histresis de entrada vs. VCC


0.7

0.6

0.5
La histresis
de entrada
(mV)0.4

0.3

0.2

-40 C
0.1

25 C
85 C

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

414
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.04.10

Umbral BOD
Figura 29-169.ATmega328P: BOD Umbrales vs. Temperatura (BODLEVEL es de 1,8 V)
1.85

1.83

1
Umbral (V)

1.81

1.79

1.77

1.75
-60

-40

-20

20

40

60

80

100

Temperatura ( C)

Figura 29-170.ATmega328P: BOD Umbrales vs. Temperatura (BODLEVEL es 2,7 V)


2.78

2.76

1
2.74
Umbral (V)

2.72

2.7

2.68

2.66
-60

-40

-20

20

40

60

80

100

Temperatura ( C)

415
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-171.ATmega328P: BOD Umbrales vs. Temperatura (BODLEVEL es 4,3 V)
4.4

4.35
Umbral (V)

4.3

0
4.25
-60

-40

-20

20

40

60

80

100

Temperatura ( C)

04.29.11

Oscilllator interna Velocidad


Figura 29-172.ATmega328P: Watchdog Oscilador de Frecuencia vs. Temperatura
119
118
117
116
115

F RC (kHz)

114
113

2,7 V

112

3,3 V

111

4,0 V
5,5 V

110
109
-60

-40

-20

20

40

60

80

100

Temperatura ( C)

416
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-173.ATmega328P: Watchdog Oscilador de Frecuencia vs. VCC
120

118

-40 C
116
F RC (kHz)

25 C

114

112

110

85 C

108
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-174.ATmega328P: Calibrada 8 MHz RC Oscilador de Frecuencia vs. VCC


8.4

85 C
8.2

25 C
8

F RC (MHz)

-40 C

7.8

7.6

7.4
1.5

2.5

3.5

4.5

5.5

VCC (V)

417
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-175.ATmega328P: Calibrada 8 MHz RC Oscilador de Frecuencia vs. Temperatura
8.4

5,0 V

8.3

3,0 V

8.2
8.1
F RC (MHz)

8
7.9
7.8
7.7
7.6
-50

-40

-30

-20

-10

10

20

30

40

50

60

70

80

90

100

Temperatura ( C)

Figura 29-176.ATmega328P: Calibrada 8 MHz RC Oscilador de Frecuencia vs. OSCCAL Valor


16
14

85 C
25 C

12

-40 C
10
F RC (MHz)

8
6
4
2
0
0

16

32

48

64

80

96

112 128 144 160 176 192 208 224 240 256
OSCCAL (X1)

418
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.04.12

El consumo actual de las unidades perifricas


Figura 29-177.ATmega328P: ADC actual vs. VCC (AREF = AVCC)
350

-40 C
25 C
85 C

300

250

200
CPI (UA)
150

100

50

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-178.ATmega328P: Comparador analgico actual vs. VCC


120

100

-40 C
25 C
85 C

80
CPI (UA)

60

40

20

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

419
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-179.ATmega328P: AREF externa actual de referencia vs. VCC
180

85 C
25 C
-40 C

160
140
120
CPI (UA)
100

80
60
40
20
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

Figura 29-180.ATmega328P: Brownout Detector de corriente vs. VCC


30

85 C
25 C
-40 C

25

20
CPI (UA)

15

10

0
1.5

2.5

3.5

4.5

5.5

VCC (V)

420
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-181.ATmega328P: Programacin actual vs. VCC
10
9

25 C
85 C
-40 C

8
7
6
CPI (mA)

5
4
3
2
1
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

04.29.13

Consumo de corriente en Restablecer y Reset Amplitud de pulso


Figura 29-182.ATmega328P: Restablecer Corriente de suministro frente a baja frecuencia (0,1 a 1,0 MHz)
0.15

5,5 V
5,0 V

0.1

4,5 V

CPI (mA)

4,0 V
3,3 V
2,7 V

0.05

1,8 V

0
0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Frecuencia (MHz)

421
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Figura 29-183.ATmega328P: Restablecer Corriente de suministro vs. frecuencia (1-20 MHz)
3

5,5 V
2.5

5,0 V
4,5 V

2
CPI (mA)

4,0 V

1.5

3,3 V
2,7 V

0.5

1,8 V

0
0

10

12

14

16

18

20

Frecuencia (MHz)

Figura 29-184.ATmega328P: El ancho de pulso de reset mnima vs. VCC


1800
1600
1400
1200
PulseWidth
(ns)

1000

800
600
400

85 C
25 C
-40 C

200
0
1.5

2.5

3.5

4.5

5.5

VCC (V)

422
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


30. Registrarse Resumen
Direccin
(0xFF)

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Reservado

Nombre

(0xFE)

Reservado

(0xFD)

Reservado

(0xFC)

Reservado

(0xFB)

Reservado

(0xFA)

Reservado

(0xF9)

Reservado

(0xF8)

Reservado

(0xF7)

Reservado

(0xF6)

Reservado

(0xF5)

Reservado

(0xF4)

Reservado

(0xF3)

Reservado

(0xF2)

Reservado

(0xf1)

Reservado

(0xF0)

Reservado

(0xEF)

Reservado

(0xEE)

Reservado

(0xED)

Reservado

(0xEC)

Reservado

(0xEB)

Reservado

(0xEA)

Reservado

(0xE9)

Reservado

(0xE8)

Reservado

(0xE7)

Reservado

(0xE6)

Reservado

(0xE5)

Reservado

(0xE4)

Reservado

(0xE3)

Reservado

(0xE2)

Reservado

(0xE1)

Reservado

(0xE0)

Reservado

(0xDF)

Reservado

(0xDE)

Reservado

(0xdd)

Reservado

(0xDC)

Reservado

(0xDB)

Reservado

(0xDA)

Reservado

(0xD9)

Reservado

(0xd8)

Reservado

(0xD7)

Reservado

(0xD6)

Reservado

(0xD5)

Reservado

(0xD4)

Reservado

(0xD3)

Reservado

(0xD2)

Reservado

(0xD1)

Reservado

(0xD0)

Reservado

(0xCF)

Reservado

(0xCE)

Reservado

(0xCD)

Reservado

(0xCC)

Reservado

(0xCB)

Reservado

(0xCA)

Reservado

(0xC9)

Reservado

(0xC8)

Reservado

(0xC7)

Reservado

(0xC6)

UDR0

(0xC5)

UBRR0H

USART I / O Data Registro

195
USART Baud Rate Registro alta

(0xC4)

UBRR0L

(0xC3)

Reservado

(0xC2)

UCSR0C

UMSEL01

(0xC1)

UCSR0B

RXCIE0

(0xC0)

UCSR0A

RXC0

199

USART Baud Rate Registro bajo


-

Pgina

199

UMSEL00

UPM01

UPM00

USBS0

UCSZ01 / UDORD0

UCSZ00 / UCPHA0

UCPOL0

TXCIE0

UDRIE0

RXEN0

TXEN0

UCSZ02

RXB80

TXB80

196

TXC0

UDRE0

FE0

DOR0

UPE0

U2X0

MPCM0

195

197/212

423
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Direccin

Nombre

(0xBF)

Reservado

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Pgina

(0xBE)

Reservado

(0xBD)

TWAMR

TWAM6

TWAM5

TWAM4

TWAM3

TWAM2

TWAM1

TWAM0

244

(0xBC)

TWCR

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

241

(0xBB)

TWDR

(0xBA)

TWAR

TWA6

TWA5

TWA4

TWA3

TWA2

TWA1

TWA0

TWGCE

244

(0xB9)

TWSR

TWS7

TWS6

TWS5

TWS4

TWS3

TWPS1

TWPS0

243

2 cables de interfaz serie de datos Registro

243

(0xB8)

TWBR

(0xB7)

Reservado

2 hilos Bit Rate Interface Serial Registro

(0xB6)

ASSR

(0xB5)

Reservado

(0xB4)

OCR2B

Timer / Contador2 comparacin de salida Registro B

162

(0xB3)

OCR2A

Timer / Contador2 comparacin de salida Registro A

162

EXCLK

AS2

TCN2UB

241

OCR2AUB

OCR2BUB

TCR2AUB
-

TCR2BUB

164

(0xB2)

TCNT2

(0xB1)

TCCR2B

FOC2A

FOC2B

Timer / Contador2 (8 bits)


-

WGM22

CS22

CS21

CS20

(0xB0)

TCCR2A

COM2A1

COM2A0

COM2B1

COM2B0

WGM21

WGM20

(0xAF)

Reservado

162
161
158

(0xAE)

Reservado

(0xAD)

Reservado

(0xAC)

Reservado

(0xAB)

Reservado

(0xAA)

Reservado

(0xa9)

Reservado

(0xA8)

Reservado

(0xA7)

Reservado

(0xA6)

Reservado

(0xA5)

Reservado

(0xA4)

Reservado

(0xA3)

Reservado

(0xA2)

Reservado

(0xA1)

Reservado

(0xA0)

Reservado

(0x9F)

Reservado

(0x9E)

Reservado

(0x9D)

Reservado

(0x9C)

Reservado

(0x9B)

Reservado

(0x9A)

Reservado

(0x99)

Reservado

(0x98)

Reservado

(0x97)

Reservado

(0x96)

Reservado

(0x95)

Reservado

(0x94)

Reservado

(0x93)

Reservado

(0x92)

Reservado

(0x91)

Reservado

(0x90)

Reservado

(0x8F)

Reservado

(0x8E)

Reservado

(0x8D)

Reservado

(0x8C)

Reservado

(0x8B)

OCR1BH

Timer / Counter1 - Salida Comparar Registrar B High Byte

138

(0x8A)

OCR1BL

Timer / Counter1 - Salida Comparar Registrar B Low Byte

138

(0x89)

OCR1AH

Timer / Counter1 - comparacin de salida registran un alto Byte

138

(0x88)

OCR1AL

Timer / Counter1 - comparacin de salida Registrar Un Byte bajo

138

(0x87)

ICR1H

Timer / Counter1 - Captura de entrada Registro Byte alto

138

(0x86)

ICR1L

Timer / Counter1 - Captura de entrada Registro Byte bajo

138

(0x85)

TCNT1H

Timer / Counter1 - Contador Registro Byte alto

138

(0x84)

TCNT1L

Timer / Counter1 - Contador Registro Byte bajo

138

(0x83)

Reservado

(0x82)

TCCR1C

FOC1A

FOC1B

137

(0x81)

TCCR1B

ICNC1

ICES1

WGM13

WGM12

CS12

CS11

CS10

136

(0x80)

TCCR1A

COM1A1

COM1A0

COM1B1

COM1B0

WGM11

WGM10

134

(0x7F)

DIDR1

AIN1D

AIN0D

249

(0x7E)

DIDR0

ADC5D

ADC4D

ADC3D

ADC2D

ADC1D

ADC0D

266

424
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Direccin

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Reservado

(0x7C)

ADMUX

REFS1

REFS0

MUX3

MUX2

MUX1

MUX0

262

(0x7B)

ADCSRB

ACME

ADTS2

ADTS1

ADTS0

265

(0x7A)

ADCSRA

ADEN

ADSC

ADATE

ADIF

ADIE

ADPS2

ADPS1

ADPS0

263

(0x79)

ADCH

ADC Registro de datos Byte alto

(0x78)

ADCL

ADC Registro de datos Byte bajo

(0x77)

Reservado

(0x76)

Reservado

(0x75)

Reservado

(0x74)

Reservado

(0x73)

Reservado

(0x72)

Reservado

(0x71)

Reservado

(0x70)

TIMSK2

OCIE2B

OCIE2A

TOIE2

163

(0x6F)

TIMSK1

ICIE1

OCIE1B

OCIE1A

TOIE1

139

(0x6E)

TIMSK0

OCIE0B

OCIE0A

TOIE0

111

(0x6D)

PCMSK2

PCINT23

PCINT22

PCINT21

PCINT20

PCINT19

PCINT18

PCINT17

PCINT16

74

(0x6C)

PCMSK1

PCINT14

PCINT13

PCINT12

PCINT11

PCINT10

PCINT9

PCINT8

74

(0x6B)

PCMSK0

PCINT7

PCINT6

PCINT5

PCINT4

PCINT3

PCINT2

PCINT1

PCINT0

74

(0x6A)

Reservado

(0x69)

EICRA

ISC11

ISC10

ISC01

ISC00

(0x68)

PCICR

PCIE2

PCIE1

PCIE0

(0x67)

Reservado

(0x66)

OSCCAL

(0x65)

Reservado

(0x64)

PRR

PRTWI

PRTIM2

PRTIM0

PRTIM1

PRSPI

(0x63)

Reservado

(0x62)

Reservado

(0x61)

CLKPR

CLKPCE

CLKPS3

CLKPS2

CLKPS1

CLKPS0

37

(0x60)

WDTCSR

WDIF

WDIE

WDP3

WDCE

WDE

WDP2

WDP1

WDP0

54

0x3F (0x5F)

SREG

YO

0x3E (0x5E)

SPH

(SP10) 5.

SP9

SP8

12

0x3D (0x5D)

SPL

SP7

SP6

SP5

SP4

SP3

SP2

SP1

SP0

12

0x3C (0x5C)

Reservado

0x3B (0x5b)

Reservado

0x3A (0x5A)

Reservado

0x39 (0x59)

Reservado

0x38 (0x58)

Reservado

0x37 (0x57)

SPMCSR

SPMIE

(RWWSB) 5.

(RWWSRE) 5.

BLBSET

PGWRT

0x36 (0x56)

Reservado

0x35 (0x55)

MCUCR

BODSE

PUD

IVSEL

IVCE

0x34 (0x54)

MCUSR

WDRF

BORF

EXTRF

PORF

54

0x33 (0x53)

SMCR

SM2

SM1

SM0

SE

40

0x32 (0x52)

Reservado

0x31 (0x51)

Reservado

0x30 (0x50)

ACSR

ACD

ACBG

ACO

ACI

ACIE

ACIC

ACIS1

ACIS0

0x2F (0x4F)

Reservado

0x2E (0x4E)

SPDR

0x2D (0x4D)

SPSR

SPIF

WCOL

SPI2X

174

PEACC

SPIE

SPE

DORD

MSTR

CPOL

CPHA

SPR1

SPR0

173

(0x7D)

0x2C (0x4C)

Nombre

Adlar

265
265

Oscilador Calibracin Registro

Bods

PRUSART0
-

PGERS
-

PRADC

SELFPRGEN

44/68/92

247

175

Propsito General I / O Registro 2

0x2A (0x4A)

GPIOR1

Propsito General I / O Registro 1

0x29 (0x49)

Reservado

0x28 (0x48)

OCR0B

Timer / Counter0 comparacin de salida Registro B

0x27 (0x47)

OCR0A

Timer / Counter0 comparacin de salida Registro A

0x26 (0x46)

TCNT0

0x25 (0x45)

TCCR0B

FOC0A

FOC0B

WGM02

CS02

CS01

CS00

0x24 (0x44)

TCCR0A

COM0A1

COM0A0

COM0B1

COM0B0

WGM01

WGM00

0x23 (0x43)

GTCCR

TSM

PSRASY

PSRSYNC

0x22 (0x42)

EEARH

0x21 (0x41)

EEARL

0x20 (0x40)

EEDR

0x1F (0x3F)

EECR

0x1E (0x3E)

GPIOR0

0x1D (0x3D)

EIMSK

0x1C (0x3C)

EIFR

292

GPIOR2

42

0x2B (0x4B)

71

37

SPI Registro de Datos

Pgina

25
25

Timer / Counter0 (8 bits)

(EEPROM Direccin Registro Alto Byte)

5.

21

EEPROM Direccin Registro Byte bajo

21

EEPROM de datos Registro


-

EEPM1

EEPM0

MISTERIOSA

143/165

21
EEMPE

EEPE

EERE

INT1

INT0

72

INTF1

INTF0

72

Propsito General I / O Registro 0

21
25

425
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

0x1B (0x3B)

Direccin

PCIFR

PCIF2

PCIF1

PCIF0

0x1A (0x3A)

Reservado

0x19 (0x39)

Reservado

0x18 (0x38)

Reservado

0x17 (0x37)

TIFR2

OCF2B

OCF2A

TOV2

163

0x16 (0x36)

TIFR1

ICF1

OCF1B

OCF1A

TOV1

139

0x15 (0x35)

TIFR0

OCF0B

OCF0A

TOV0

0x14 (0x34)

Reservado

0x13 (0x33)

Reservado

0x12 (0x32)

Reservado

0x11 (0x31)

Reservado

0x10 (0x30)

Reservado

0x0F (0x2F)

Reservado

0x0E (0x2E)

Reservado

0x0D (0x2D)

Reservado

0x0C (0x2C)

Reservado

0x0B (0x2B)

PORTD

PORTD7

PORTD6

PORTD5

PORTD4

PORTD3

PORTD2

PORTD1

PORTD0

93

0x0A (0x2A)

DDRD

DDD7

DDD6

DDD5

DDD4

DDD3

DDD2

DDD1

DDD0

93

0x09 (0x29)

PIND

PIND7

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

93

0x08 (0x28)

PORTC

PORTC6

PORTC5

PORTC4

PORTC3

PORTC2

PORTC1

PORTC0

92

0x07 (0x27)

DDRC

DDC6

DDC5

DDC4

DDC3

DDC2

DDC1

DDC0

92

0x06 (0x26)

PINC

PINC6

PINC5

PINC4

PINC3

PINC2

PINC1

PINC0

92

0x05 (0x25)

PORTB

PORTB7

PORTB6

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

92

0x04 (0x24)

DDRB

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

92

0x03 (0x23)

PINB

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

92

0x02 (0x22)

Reservado

0x01 (0x21)

Reservado

0x0 (0x20)

Reservado

Nota:

Nombre

Pgina

1. Para la compatibilidad con dispositivos futuros, los bits reservados debe escribirse a cero si accede. Direcciones de memoria Reservados E / S
nunca debe ser por escrito.
2. E / S Registros dentro del rango de direcciones 0x00 - 0x1F son directamente poco accesible siguiendo las instrucciones de OSE y la ICC. En estos
registros, el valor de los bits individuales pueden verificarse mediante el uso de las instrucciones SBIS y SBIC.
3. Algunos de los indicadores de estado se borran escribiendo un uno lgico para ellos. Tenga en cuenta que, a diferencia de la mayora de los otros RAV, la CBI y
OSE
instrucciones slo funcionarn con el bit especificado, y por lo tanto se pueden utilizar en los registros que contienen tales Indicadores de estado. La
Instrucciones de la ICC y OSE trabajan con registros 0x00 a 0x1F solamente.
4. Cuando se utiliza el yo comandos especficos / S IN y OUT, la E / S direcciones 0x00 - 0x3F debe ser utilizado. Al abordar de E / S
Registros como espacio de datos utilizando instrucciones LD y ST, 0x20 hay que aadir a estas direcciones. La
ATmega48PA / 88PA / 168PA / 328P es un microcontrolador complejo con ms unidades perifricas que se puede apoyar en el 64
ubicacin reservada en Opcode para las instrucciones IN y OUT. Para el espacio ampliado de E / S de 0x60 - 0xFF en SRAM, slo
la ST / STS / ETS y las instrucciones LD / SUD / LDD se pueden utilizar.
5. Slo vlido para ATmega88PA / 168PA.

426
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Resumen Set 31. Instruccin
Nemotcnica

Operandos

Descripcin

Operacin

Banderas

#Clocks

Aritmticas y lgicas INSTRUCCIONES


AADIR

Rd, Rr

Aadir dos Registros

Rd Rd + Rr

Z, C, N, V, H

ADC

Rd, Rr

Aadir a llevar dos registros

Rd Rd + Rr + C

Z, C, N, V, H

ADIW

Rdl, K

Aadir inmediata a la Palabra

Rdh: Rdl Rdh: Rdl + K

Z, C, N, V, S

SUB

Rd, Rr

Restar dos Registros

Rd Rd - Rr

Z, C, N, V, H

SUBI

Rd, K

Reste constante de Registro

Rd Rd - K

Z, C, N, V, H

SBC

Rd, Rr

Restar con Carry dos Registros

Rd Rd - Rr - C

Z, C, N, V, H

SBCI

Rd, K

Restar con Carry constante de Reg.

Rd Rd - K - C

Z, C, N, V, H

SBIW

Rdl, K

Reste inmediata de Palabra

Rdh: Rdl Rdh: Rdl - K

Z, C, N, V, S

Rd, Rr

Y lgico Registros

Rd Rd Rr

Z, N, V

ANDI

Rd, K

Y lgico Registro y Constant

Rd Rd K

Z, N, V

Oregn

Rd, Rr

OR lgico Registros

Rd Rd v Rr

Z, N, V

ORI

Rd, K

Lgico O Registro y Constant

Rd Rd v K

Z, N, V

EOR

Rd, Rr

Exclusiva O Registros

Rd Rd Rr

Z, N, V

COM

Rd

Uno de Complemento

Rd 0xFF - Rd

Z, C, N, V

NEG

Rd

Complemento a dos

Rd 0x00 - Rd

Z, C, N, V, H

SBR

Rd, K

Bit Set (s) en el Registro

Rd Rd v K

Z, N, V

CBR

Rd, K

Bit Clear (s) en el Registro

Rd Rd (0xFF - K)

Z, N, V

INC

Rd

Incremento

Rd Rd + 1

Z, N, V

Diciembre

Rd

Decremento

Rd Rd - 1

Z, N, V

TST

Rd

Prueba de cero o Menos

Rd Rd Rd

Z, N, V

CLR

Rd

Borrar Registro

Rd Rd Rd

Z, N, V

SER

Rd

Establecer Registro

Rd 0xFF

Ninguno

MUL

Rd, Rr

Multiplicar Unsigned

R1: R0 Rd x Rr

Z, C

MULS

Rd, Rr

Multiplicar Firmado

R1: R0 Rd x Rr

Z, C

MULSU

Rd, Rr

Multiplique Firmado con Unsigned

R1: R0 Rd x Rr

Z, C

FMUL

Rd, Rr

Fraccional Multiplicar Unsigned

R1: R0 (Rd x Rr) <<

Z, C

FMULS

Rd, Rr

Fraccional Multiplicar Firmado

1
R1: R0 (Rd x Rr) <<
1

Z, C

FMULSU

Rd, Rr

Fraccional Multiplicar firmado con Unsigned

R1: R0 (Rd x Rr) << 1

Z, C

Jump Relativa

Ordenador personal PC + k + 1

Ninguno

Indirecto Saltar a (Z)

Ordenador personal Z

Ninguno

INSTRUCCIONES DE SUCURSALES
Rjmp

IJMP
JMP(1)

Ir directo

Ordenador personal k

Ninguno

RCALL

Relativa Subrutina de llamada

Ordenador personal PC + k + 1

Ninguno

Llamada indirecta a (Z)

Ordenador personal Z

Ninguno

Subrutina Llamada Directa

Ordenador personal k

Ninguno

RET

Subrutina Volver

Ordenador personal PILA

Ninguno

RETI

Interrupcin Volver

Ordenador personal PILA

YO

Rd, Rr

Compare, Omitir si Igualdad

si (Rd = RR) PC PC + 2 o 3

Ninguno

CP

Rd, Rr

Comparar

Rd - Rr

Z, N, V, C, H

CPC

Rd, Rr

Comparar con Carry

Rd - Rr - C

Z, N, V, C, H

IPC

Rd, K

Comparar Regstrate con Inmediata

Rd - K

Z, N, V, C, H

SBRC

Rr, b

Omitir si Bit Registrarse Borrado

si (Rr (b) = 0) PC PC + 2 o 3

Ninguno

1/2/3

SBRS

Rr, b

Omitir si Bit Registrarse es Set

si (Rr (b) = 1) PC PC + 2 o 3

Ninguno

1/2/3

SBIC

P, b

Omitir si Bit en I / O Registro Borrado

Si (P (b) = 0) PC PC + 2 o 3

Ninguno

1/2/3

SBIS

P, b

Omitir si Bit en I / O registradora est preparada

Si (P (b) = 1) PC PC + 2 o 3

Ninguno

1/2/3

BRBS

s, k

Rama si el estado de la bandera Conjunto

si (SREG (s) = 1), entonces PC PC + k + 1

Ninguno

1/2

BRBC

s, k

Rama si el estado de la bandera Borrado

si (SREG (s) = 0), entonces PC PC + k + 1

Ninguno

1/2

BREQ

Rama si Igualdad

Si (Z = 1), entonces PC PC + k + 1

Ninguno

1/2

Brn

Rama si no igual

Si (Z = 0), entonces PC PC + k + 1

Ninguno

1/2

BRCS

Bifurcacin si Configurar Carry

Si (C = 1), entonces PC PC + k + 1

Ninguno

1/2

BRCC

Rama si Carry Borrado

Si (C = 0), entonces PC PC + k + 1

Ninguno

1/2

BRSH

Rama si misma o mayor

Si (C = 0), entonces PC PC + k + 1

Ninguno

1/2

BRLO

Rama si Baja

Si (C = 1), entonces PC PC + k + 1

Ninguno

1/2

BRMI

Rama si Minus

si (N = 1), entonces PC PC + k + 1

Ninguno

1/2

BRPL

Rama si Plus

si (N = 0), entonces PC PC + k + 1

Ninguno

1/2

BRGE

Bifurcacin si es mayor o igual, Firmado

si (N V = 0), entonces PC PC + k + 1

Ninguno

1/2

BRLT

Rama si Menos que cero, Firmado

si (N V = 1), entonces PC PC + k + 1

Ninguno

1/2

BRHS

Rama si Mitad Carry Flag Set

Si (H = 1), entonces PC PC + k + 1

Ninguno

1/2

BRHC

Rama si Mitad indicador de acarreo Borrado

Si (H = 0), entonces PC PC + k + 1

Ninguno

1/2

BRTS

Rama si T Flag Set

si (T = 1), entonces PC PC + k + 1

Ninguno

1/2

BRTC

Rama si T Bandera Borrado

si (T = 0), entonces PC PC + k + 1

Ninguno

1/2

BRVS

Rama si la bandera de desbordamiento se activar

si (V = 1), entonces PC PC + k + 1

Ninguno

1/2

BRVC

Rama si la bandera de desbordamiento se borra

si (V = 0), entonces PC PC + k + 1

Ninguno

1/2

YO LO LLAMO
LLAMADA(1)

CPSE

4
1/2/3

427
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Nemotcnica

Operandos

Descripcin

Operacin

Banderas

#Clocks

BRIE

Rama si Habilitado

si (i = 1), entonces PC PC + k + 1

Ninguno

1/2

BRID

Rama si Interrupcin discapacitados

si (I = 0), entonces PC PC + k + 1

Ninguno

1/2

Bits y la PRUEBA INSTRUCCIONES


OSE

P, b

Bit Situado en I / O Registro

I / O (P, b) 1

Ninguno

CBI

P, b

Bit Clear en I / O Registro

I / O (P, b) 0

Ninguno

LSL

Rd

Desplazamiento lgico Izquierda

Rd (n + 1) Rd (n), Rd (0) 0

Z, C, N, V

LSR

Rd

Maysculas derecha Lgico

Rd (n) Rd (n + 1), Rd (7) 0

Z, C, N, V

ROL

Rd

Girar a la izquierda a travs de Carry

Rd (0) C, Rd (n + 1) Rd (n), C Rd (7)

Z, C, N, V

ROR

Rd

Gire derecha a travs de Carry

Rd (7) C, Rd (n) Rd (n + 1), C Rd (0)

Z, C, N, V

ASR

Rd

Maysculas derecha Aritmtica

Rd (n) Rd (n + 1), n = 0..6

Z, C, N, V

SWAP

Rd

Nibbles Intercambia

Rd (3..0) Rd (7..4), Rd (7..4) Rd (3..0)

Ninguno

BSET

Flag Set

SREG (s) 1

SREG (s)

BCLR

Bandera Borrar

SREG (s) 0

SREG (s)

BST

Rr, b

Bit tienda de Registro a T

T Rr (b)

BLD

Rd, b

Carga Bit de T a Registrar

Rd (b) T

Ninguno

SEC

Carry Set

C1

CLC

Claro Carry

C0

SEN

Establecer Bandera Negativo

N1

CLN

Bandera Negativo Borrar

N0

SEZ

Establecer la bandera Cero

Z1

CLZ

Borrar indicador Zero

Z0

SEI

Global Interrupt Enable

YO1

YO

CLI

Global Interrupt Desactivar

YO0

YO

SES

Set Firmado Bandera de prueba

S1

CLS

Borrar indicador de prueba Firmado

S0

SEV

Set Complemento a dos de desbordamiento.

V1

CLV

Claro Complemento a dos de desbordamiento

V0

SET

Establecer T en SREG

T1

CLT

T Claro en SREG

T0

SEH
CLH

Set Carry medio pabelln en SREG


Llevar Claro Medio Bandera en SREG

H1
H0

H
H

1
1

Rd Rr
Rd + 1: Rd Rr + 1: Rr

Ninguno

Ninguno

INSTRUCCIONES DE TRANSFERENCIA DE DATOS


MOV

Rd, Rr

Mueva entre registros

MOVW

Rd, Rr

Copia Registro Palabra

LDI

Rd, K

Carga Inmediata

Rd K

Ninguno

LD

Rd, X

Cargar indirecta

Rd (X)

Ninguno

LD

Rd, X +

Cargar indirecta y Post-Inc.

Rd (X), X X + 1

Ninguno

LD

Rd, - X

Cargar indirecta y Pre-diciembre

X X - 1, Rd (X)

Ninguno

LD

Rd, Y

Cargar indirecta

Rd (Y)

Ninguno

LD

Rd, Y +

Cargar indirecta y Post-Inc.

Rd (Y), Y Y + 1

Ninguno

LD

Rd, - Y

Cargar indirecta y Pre-diciembre

Y Y - 1, Rd (Y)

Ninguno

LDD

Rd, Y + q

Cargar indirecta con Desplazamiento

Rd (Y + q)

Ninguno

LD

Rd, Z

Cargar indirecta

Rd (Z)

Ninguno

LD

Rd, Z +

Cargar indirecta y Post-Inc.

Rd (Z), Z Z + 1

Ninguno

LD

Rd, -Z

Cargar indirecta y Pre-diciembre

Z Z - 1, Rd (Z)

Ninguno

LDD

Rd, Z + q

Cargar indirecta con Desplazamiento

Rd (Z + q)

Ninguno

LDS

Rd, k

Carga directa de SRAM

Rd (K)

Ninguno

ST

X, Rr

Tienda indirecta

(X) Rr

Ninguno

ST

X +, Rr

Guarde indirecta y Post-Inc.

(X) Rr, X X + 1

Ninguno

ST

- X, Rr

Guarde indirecta y Pre-diciembre

X X - 1, (X) Rr

Ninguno

ST

Y, Rr

Tienda indirecta

(Y) Rr

Ninguno

ST

Y +, Rr

Guarde indirecta y Post-Inc.

(Y) Rr, Y Y + 1

Ninguno

ST

- Y, Rr

Guarde indirecta y Pre-diciembre

Y Y - 1, (Y) Rr

Ninguno

STD

Y + q, Rr

Guarde indirecta con Desplazamiento

(Y + q) Rr

Ninguno

ST

Z, Rr

Tienda indirecta

(Z) Rr

Ninguno

ST

Z +, Rr

Guarde indirecta y Post-Inc.

(Z) Rr, Z Z + 1

Ninguno

ST

-Z, Rr

Guarde indirecta y Pre-diciembre

Z Z - 1, (Z) Rr

Ninguno

STD

Q + Z, Rr

Guarde indirecta con Desplazamiento

(Z + q) Rr

Ninguno

STS

k, Rr

Guarde directo a SRAM

(K) Rr

Ninguno

Memoria de programa de carga

R0 (Z)

Ninguno

LPM
LPM

Rd, Z

Memoria de programa de carga

Rd (Z)

Ninguno

LPM

Rd, Z +

Cargar memoria de programa y Post-Inc

Rd (Z), Z Z + 1

Ninguno

Tienda de memoria de programa

(Z) R1: R0

Ninguno

SPM
EN

Rd, P

En Puerto

Rd P

Ninguno

OUT

P, Rr

Puerto de salida

P Rr

Ninguno

EMPUJAR

Rr

Empuje Registro de Pila

PILA Rr

Ninguno

428
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Nemotcnica
POP

Operandos
Rd

Descripcin
Pop Registro de Pila

Operacin
Rd PILA

Banderas

#Clocks

Ninguno

Ninguno

INSTRUCCIONES DE CONTROL MCU


NOP

No Operacin

SLEEP

Sueo

(Ver descr especfico. Para la funcin Sleep)

Ninguno

WDR
DESCANSO

Watchdog Restablecer
Rotura

(Ver descr especfico. Para WDR / temporizador)


Por On-chip Slo depuracin

Ninguno
Ninguno

1
N/A

Nota:

1. Estas instrucciones estn disponibles nicamente en ATmega168PA y ATmega328P.

429
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Informacin 32. Orden
32.1

ATmega48PA

Speed (MHz)

20(3)

Nota:

Fuente De AlimentacinCdigo de pedido(2)

01.08 a 05.05

ATmega48PA-AU
ATmega48PA-MMH(4)
ATmega48PA-MU
ATmega48PA-PU

Paquete(1)

Rango Operativo

32A
28M1
32M1-A
28P3

Industrial
(-40C a 85C)

1. Este dispositivo tambin puede ser suministrado en forma de oblea. Por favor, pngase en contacto con su oficina local de ventas de Atmel para la informacin
de pedido detallado
y cantidades mnimas.
2. embalaje libre de plomo cumple con la Directiva Europea para la restriccin de sustancias peligrosas (Directiva RoHS) .Tambin
Haluro libre y totalmente verde.
3. Vase "grados de velocidad" en la pgina 316.
4. NiPdAu Finalizar plomo.

Tipo de paquete
32A

32-plomo, delgada (1,0 mm) de plstico Quad Flat Package (TQFP)

28M1

28-pad, 4 x 4 x 1,0 corporal, Lead Pitch 0.45 mm Cuadrado Plano-Gua / Micro Plomo paquete Frame (QFN / FML)

32M1-A

32-pad, 5 x 5 x 1.0 cuerpo, Lead Pitch 0.50 mm Cuadrado Plano-Gua / Micro Plomo paquete Frame (QFN / FML)

28P3

28-plomo, 0.300 "de ancho, Plstico Dual Inline Package (PDIP)

430
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


32.2

ATmega88PA

Speed (MHz)

20(3)

Nota:

Fuente De AlimentacinCdigo de pedido(2)

01.08 a 05.05

ATmega88PA-AU
ATmega88PA-MMH(4)
ATmega88PA-MU
ATmega88PA-PU

Paquete(1)

Rango Operativo

32A
28M1
32M1-A
28P3

Industrial
(-40C a 85C)

1. Este dispositivo tambin puede ser suministrado en forma de oblea. Por favor, pngase en contacto con su oficina local de ventas de Atmel para la informacin
de pedido detallado
y cantidades mnimas.
2. embalaje libre de plomo cumple con la Directiva Europea para la restriccin de sustancias peligrosas (Directiva RoHS) .Tambin
Haluro libre y totalmente verde.
3. Vase "grados de velocidad" en la pgina 316.
4. NiPdAu Finalizar plomo.

Tipo de paquete
32A

32-plomo, delgada (1,0 mm) de plstico Quad Flat Package (TQFP)

28M1

28-pad, 4 x 4 x 1,0 corporal, Lead Pitch 0.45 mm Cuadrado Plano-Gua / Micro Plomo paquete Frame (QFN / FML)

32M1-A

32-pad, 5 x 5 x 1.0 cuerpo, Lead Pitch 0.50 mm Cuadrado Plano-Gua / Micro Plomo paquete Frame (QFN / FML)

28P3

28-plomo, 0.300 "de ancho, Plstico Dual Inline Package (PDIP)

431
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


32.3

ATmega168PA

Speed (MHz)(3)

20

Nota:

Fuente De AlimentacinCdigo de pedido(2)

01.08 a 05.05

ATmega168PA-AU
ATmega168PA-MMH(4)
ATmega168PA-MU
ATmega168PA-PU

Paquete(1)

Rango Operativo

32A
28M1
32M1-A
28P3

Industrial
(-40C a 85C)

1. Este dispositivo tambin puede ser suministrado en forma de oblea. Por favor, pngase en contacto con su oficina local de ventas de Atmel para la informacin
de pedido detallado
y cantidades mnimas.
2. embalaje libre de plomo cumple con la Directiva Europea para la restriccin de sustancias peligrosas (Directiva RoHS) .Tambin
Haluro libre y totalmente verde.
3. Vase "grados de velocidad" en la pgina 316.
4. NiPdAu Finalizar plomo.

Tipo de paquete
32A

32-plomo, delgada (1,0 mm) de plstico Quad Flat Package (TQFP)

28M1

28-pad, 4 x 4 x 1,0 corporal, Lead Pitch 0.45 mm Cuadrado Plano-Gua / Micro Plomo paquete Frame (QFN / FML)

32M1-A

32-pad, 5 x 5 x 1.0 cuerpo, Lead Pitch 0.50 mm Cuadrado Plano-Gua / Micro Plomo paquete Frame (QFN / FML)

28P3

28-plomo, 0.300 "de ancho, Plstico Dual Inline Package (PDIP)

432
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


32.4

ATmega328P

Speed (MHz)
20 (3)

Nota:

Fuente De AlimentacinCdigo de pedido(2)


01.08 a 05.05

ATmega328P- AU
ATmega328P- MU
ATmega328P- PU

Paquete(1)

Rango Operativo

32A
32M1-A
28P3

Industrial
(-40C a 85C)

1. Este dispositivo tambin puede ser suministrado en forma de oblea. Por favor, pngase en contacto con su oficina local de ventas de Atmel para la informacin
de pedido detallado
y cantidades mnimas.
2. embalaje libre de plomo cumple con la Directiva Europea para la restriccin de sustancias peligrosas (Directiva RoHS) .Tambin
Haluro libre y totalmente verde.
3. Vase Figura 28-1 en la pgina 316.

Tipo de paquete
32A

32-plomo, delgada (1,0 mm) de plstico Quad Flat Package (TQFP)

28P3

28-plomo, 0.300 "de ancho, Plstico Dual Inline Package (PDIP)

32M1-A

32-pad, 5 x 5 x 1.0 cuerpo, Lead Pitch 0.50 mm Cuadrado Plano-Gua / Micro Plomo paquete Frame (QFN / FML)

433
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Informacin 33. Embalaje
33.1

32A

PIN 1
B
PIN 1 IDENTIFICADOR

E1

D1
D

0 ~ 7

A1

A2

La

L
DIMENSIONES COMUNES
(Unidad de medida = mm)

Notas:

1. Este paquete se ajusta a JEDEC referencia MS-026, Variacin ABA.


2. Las dimensiones D1 y E1 no incluyen protrusin molde. Admisible
protuberancia es de 0,25 mm por lado. Dimensiones D1 y E1 son mximo
dimensiones del tamao del cuerpo de plstico incluidas desajuste molde.
3. coplanarity plomo es de 0,10 mm como mximo.

SMBOLO

Min

NOM

MAX

La

1.20

A1

0.05

0.15

A2

0.95

1.00

1.05

8.75

9.00

9.25

D1

6.90

7.00

7.10

8.75

9.00

9.25

E1

6.90

7.00

7.10

0.30

0.45

0.09

0.20

0.45

0.75

NOTA

Nota 2

Nota 2

0.80 TYP

05/10/2001
TTULO
R

2325 Orchard Parkway


San Jose, CA 95131

32A, 32-plomo, 7 x 7 mm Tamao del cuerpo, 1.0 mm Espesor de cuerpo,


0,8 mm Paso Pitch, de perfil delgado de plstico Quad Flat Package (TQFP)

DIBUJO NO.
32A

REV.
B

434
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


33.2

28M1

1
Pin 1 ID
2

VISTA LATERAL

VISTA SUPERIOR
A2
D2
A1
La
0.08 C

1
2

Pin # 1
Muesca
(0,20 R)

DIMENSIONES COMUNES
(Unidad de medida = mm)

E2

SMBOLO

Min

NOM

MAX

La

0.70

0.75

0.80

A1

0.01

0.05

A2
b

e
VISTA INFERIOR

0.20 REF
0.18

D
D2

2.45

Referencia JEDEC estndar MO-220, Fig. 1 (singulacin SAW) WGGD-5.

0.30

2.60

2.75

4.00 BSC
2.45

e
Nota:

0.23
4.00 BSC

E
E2

NOTA

2.60

2.75

0.50 BSC
0.35

0.40

0.55

10.27.04
TTULO
2325 Orchard Parkway 20M1, 20-pad, 4 x 4 x 0,8 mm Cuerpo, Lead Pitch 0.50 mm,
26Ed P d MiL dFP k (FML) S JCA 9 131

DIBUJO NO.
20M1

REV.
La
435

8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


33.3

32M1-A

D
D1

1
2
3

Pin 1 ID
E1

VISTA LATERAL

VISTA SUPERIOR

A3
A2
A1
La

0.08 C

DIMENSIONES COMUNES
(Unidad de medida = mm)

SMBOLO

Min

NOM

MAX

La

0.80

0.90

1.00

A1

0.02

0.05

A2

0.65

1.00

P
D2

1
2
3

P
Pin # 1 Muesca
(0,20 R)

A3
E2

VISTA INFERIOR

0.20 REF

0.18

0.23

0.30

4.90

5.00

5.10

D1

4.70

4.75

4.80

D2

2.95

3.10

3.25

4.90

5.00

5.10

E1

4.70

4.75

4.80

E2

2.95

3.10

3.25

0.50 BSC

0.30

0.40

0.50

0.60
12o

0
Nota: JEDEC estndar MO-220, Fig. 2 (Anvil singulacin), VHHD-2.

NOTA

0.20

05.25.06

2325 Orchard Parkway


San Jose, CA 95131

TTULO
32M1-A, 32-pad, 5 x 5 x 1.0 mm Cuerpo, Lead Pitch 0.50 mm,
3.10 mm Pad Expuesto, Micro Plomo paquete Frame (FML)

DIBUJO NO.
32M1-A

REV.
E

436
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


33.4

28P3

PIN
1

E1

La

PLANO DE ASIENTO

A1

B2
B1

(4 plazas)

0 ~ 15

REF

e
E

eB

Nota:

1. Dimensiones D y E1 no incluyen flash molde o Saliente.


Flash molde o protrusin no excedern de 0.25 mm (0.010 ").

DIMENSIONES COMUNES
(Unidad de medida = mm)
SMBOLO

Min

NOM

La

A1

0,508

34.544

34.798

7,620

8,255

E1

7.112

7,493

0,381

0,533

B1

1,143

1,397

B2

0,762

1,143

3,175

3,429

0,203

0,356

eB

10.160

MAX

NOTA

4.5724

Nota 1

Nota 1

2.540 TYP

28.09.01

2325 Orchard Parkway


San Jose, CA 95131

TTULO
28P3, 28 derivaciones (0.300 "/7.62 mm Ancho) Dual Plstico
Paquete Inline (PDIP)

DIBUJO NO.
28P3

REV.
B

437
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


34. Errata
34.1

Errata ATmega48PA
La letra de revisin en este apartado se refiere a la revisin del dispositivo ATmega48PA.

34.1.1

Rev. D
No errata conocida.

34.2

Errata ATmega88PA
La letra de revisin en este apartado se refiere a la revisin del dispositivo ATmega88PA.

34.2.1

Rev. F
No errata conocida.

34.3

Errata ATmega168PA
La letra de revisin en este apartado se refiere a la revisin del dispositivo ATmega168PA.

34.3.1

Rev E
No errata conocida.

34.4

Errata ATmega328P
La letra de revisin en este apartado se refiere a la revisin del dispositivo ATmega328P.

34.4.1

Rev D
No errata conocida.

34.4.2

Rev C
No muestreado.

34.4.3

Rev B
Inestable oscilador de 32 kHz
1. Oscilador Inestable 32 kHz
El oscilador de 32 kHz no funciona como reloj del sistema.
El oscilador 32 kHz utilizado como temporizador asncrono es incorrecto.
Fix Problema / Solucin
Ninguno

34.4.4

Rev A
Inestable oscilador de 32 kHz
1. Oscilador Inestable 32 kHz
El oscilador de 32 kHz no funciona como reloj del sistema.
El oscilador 32 kHz utilizado como temporizador asncrono es incorrecto.
Fix Problema / Solucin
Ninguno

438
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


35. Hoja de datos Historial de revisiones
Tenga en cuenta que los nmeros de pgina hacen referencia en este apartado se hace referencia a este documento. La
revisin en referencia en este apartado se refiere a la revisin de documentos.

35.1

Rev. 8161D - 10/09

1.

35.2

35.3

Insertado Tabla en la pgina 32, Capacitancia para el oscilador de baja frecuencia.

Rev. 8161C - 05/09

1.

Actualizado "Funciones" en la pgina 1 para ATmega48PA / 88PA / 168PA / 328P.

2.

Actualizado "Visin general" en la pgina 5 incluido la Tabla 2-1 en la pgina 6.

3.

Actualizado "AVR Memories" en la pgina 16 incluido "Registrar Descripcin" en la pgina 21 y se inserta


Figura 7-1 en la pgina 17.

4.

Actualizado "Registrar Descripcin" en la pgina 44.

5.

Actualizado "Control del Sistema y Reset" en la pgina 46.

6.

Actualizado "Alarmas" en la pgina 57.

7.

Actualizado "Las interrupciones externas" en la pgina 70.

8.

Actualizado "Gestor de arranque de apoyo - Leer-While-Escribir Auto-Programacin, ATmega88PA,


ATmega168PA y ATmega328P "en la pgina 277.

9.

Insertado "Caractersticas ATmega168PA DC" en la pgina 315.

10.

Insertado "Caractersticas ATmega328P DC" en la pgina 316.

11.

Insertado "ATmega168PA Caractersticas tpicas" en la pgina 375.

12.

Insertado "ATmega328P Caractersticas tpicas" en la pgina 399.

13.

Informacin para pedidos Insertado por "ATmega168PA" en la pgina 432.

14.

Informacin para pedidos Insertado por "ATmega328P" en la pgina 433.

15.

Insertado "Errata ATmega328P" en la pgina 438.

16.

Actualizaciones de edicin.

Rev. 8161B - 01/09

1.

Actualizado "Funciones" en la pgina 1 para ATmega48PA y actualizada del libro en consecuencia.

2.

Actualizado "Visin general" en la pgina 5 incluido la Tabla 2-1 en la pgina 6.

3.

Actualizado "AVR Memories" en la pgina 16 incluido "Registrar Descripcin" en la pgina 21 y se inserta


Figura 7-1 en la pgina 17.

4.

Actualizado "Registrar Descripcin" en la pgina 44.

5.

Actualizado "Control del Sistema y Reset" en la pgina 46.

439
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


6.

Actualizado "Alarmas" en la pgina 57.

7.

Actualizado "Las interrupciones externas" en la pgina 70.

8.

Las caractersticas tpicas insertados para "ATmega48PA Caractersticas tpicas" en la pgina 327.

9.

Nombres cifra actualizada de las caractersticas tpicas de "ATmega88PA tpica caracterizacin


ticas "en la pgina 351.
Insertado "Caractersticas ATmega48PA DC" en la pgina 314.

10.
11.

Actualizado Tabla 28-1 en la pgina 317 mediante la eliminacin de la nota al pie de Vcc calibracin / usuario

12.

Actualizado Tabla 28-7 en la pgina 323 mediante la eliminacin de valor Max (2,5 LSB) de Absolute
exactitud, VREF = 4V, VCC = 4V, ADC reloj = 200 kHz.
Informacin para pedidos Insertado por "ATmega48PA" en la pgina 430.

13.

35.4

Rev. 8161A - 11/08

1.

Revisin inicial (Basado en la ficha tcnica ATmega48P / 88P / 168P / 328P 8025F-AVR-08/08).

2.

Cambios realizados en comparacin con ATmega48P / 88P / 168P / 328P ficha tcnica 8025F-AVR-08/08:

- Actualizado "Caractersticas de CC" en la pgina 313 con nuevos valores tpicos de la CPI.
- Actualizado "grados de velocidad" en la pgina 316.
- Nuevos grficos en "Caractersticas tpicas" en la pgina 326.
- Nuevo "Informacin de pedido" en la pgina 430.

440
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Tabla de contenido
Caractersticas ..................................................................................................... 1
1

Pin Configuraciones ................................................ ................................... 2


Descripciones 1.1Pin ........................................................................................................3

Informacin general ................................................. .................................................. 5


2.1Block Diagrama ...........................................................................................................5
2.2Comparison Entre ATmega48PA, ATmega88PA, ATmega168PA y
ATmega328P 6

Recursos ................................................. ................................................ 7

Retencin de Datos ................................................ .......................................... 7

Acerca Ejemplos de cdigo ............................................... .............................. 7

AVR CPU Core .................................................. ........................................ 8


6.1Overview ...................................................................................................................8
6.2ALU - Unidad Aritmtica Lgica ............................................ .......................................... 9
6.3Status Registro ..........................................................................................................9
6.4General Propsito Registro Archivo ............................................. ................................... 11
6.5Stack Pointer ...........................................................................................................12
6.6Instruction Ejecucin Timing .............................................. ..................................... 13
6.7Reset y manejo de interrupciones ............................................. ..................................... 14

AVR Memorias ................................................ ........................................ 16


7.1Overview .................................................................................................................16
7.2In-System reprogramable de memoria de programa Flash .......................................... ... 16
Memoria de datos 7.3SRAM .............................................. ................................................. 18
Memoria de datos 7.4EEPROM .............................................. ............................................ 19
7.5I / Memoria O ..............................................................................................................20
7.6Register Descripcin ............................................... ................................................. 21

Reloj del sistema y opciones de reloj ............................................. ............ 26


8.1Clock Sistemas y su distribucin ............................................ ........................... 26
Fuentes 8.2Clock .........................................................................................................27
8.3Low Poder Crystal Oscillator ............................................. ...................................... 28
8.4Full cristalina del oscilacin del oscilador ............................................. ....................................... 30
8.5Low Crystal Frecuencia Oscilador ............................................. ............................... 32
8.6Calibrated interno RC oscilador ............................................. ................................ 33

yo
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


8,7128 kHz oscilador interno .............................................. ........................................ 34
Reloj 8.8External .........................................................................................................34
8.9Clock bfer de salida .............................................. .................................................. 0.35
8.10Timer / Contador Oscilador ............................................. .......................................... 35
8.11System Reloj Precontador .............................................. .......................................... 35
8.12Register Descripcin ............................................... ............................................... 37

Administracin de energa y modos de espera ............................................. .... 39


Modos 9.1Sleep ...........................................................................................................39
9.2BOD Desactivar ............................................................................................................40
Modo 9.3Idle .................................................................................................................40
Modo de reduccin de ruido 9.4ADC ............................................. ...................................... 40
9.5Power desplegable Modo ............................................. .................................................. ... 41
9.6Power modo de ahorro ...................................................................................................41
Modo 9.7Standby .........................................................................................................41
El modo de espera 9.8Extended .............................................. ........................................... 41
9.9Power Reduccin Registro .............................................. ......................................... 42
9.10Minimizing Consumo de energa .............................................. .............................. 42
9.11Register Descripcin ............................................... ............................................... 44

10 Control del Sistema y Reset ............................................. ....................... 46


10.1Resetting AVR .............................................. .................................................. 0.46
Fuentes 10.2Reset .......................................................................................................46
10.3Power-en Restablecer .....................................................................................................47
Restablecer 10.4External .......................................................................................................48
10.5Brown de salida Deteccin ............................................. ................................................. 48
Restablecimiento del sistema 10.6Watchdog .............................................. ......................................... 49
10.7Internal Referencia de tensin .............................................. ...................................... 49
Timer 10.8Watchdog ....................................................................................................50
10.9Register Descripcin ............................................... ............................................... 54

11 Interrupciones ................................................ ................................................ 57


11.1Interrupt Vectores en ATmega48PA ............................................. ............................ 57
11.2Interrupt Vectores en ATmega88PA ............................................. ............................ 59
11.3Interrupt Vectores en ATmega168PA ............................................. .......................... 62
11.4Interrupt Vectores en ATmega328P ............................................. ............................ 65
11.5Register Descripcin ............................................... ............................................... 68

12 interrupciones externas ............................................... .................................. 70


ii
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


12.1Pin Cambio de interrupcin Timing ............................................. .................................... 70
12.2Register Descripcin ............................................... ............................................... 71

13 I / O-Puertos ............................................ .................................................. .... 75


13.1Overview ...............................................................................................................75
13.2Ports como el General E / S digital .......................................... ......................................... 76
Funciones 13.3Alternate Port .............................................. .......................................... 80
13.4Register Descripcin ............................................... ............................................... 92

14 8-bit del temporizador / Counter0 con PWM ......................................... ................... 94


14.1Features ................................................................................................................94
14.2Overview ...............................................................................................................94
14.3Timer / Contador Fuentes de reloj ............................................ ................................... 96
Unidad 14.4Counter ..........................................................................................................96
14.5Output Comparar Unidad .............................................. .............................................. 97
14.6Compare Partido Unidad de salida ............................................. ..................................... 98
14.7Modes de Operacin .............................................. ................................................. 99
14.8Timer / Contador diagramas de tiempo ............................................ ............................. 104
14.9Register Descripcin ............................................... ............................................. 106

15 de 16 bits Timer / Counter1 con PWM ......................................... ............... 113


15.1Features ..............................................................................................................113
15.2Overview .............................................................................................................113
15.3Accessing registros de 16 bits ............................................ ...................................... 115
15.4Timer / Contador Fuentes de reloj ............................................ ................................. 118
Unidad 15.5Counter ........................................................................................................119
15.6Input Captura Unidad .............................................. ................................................. 120
15.7Output Comparar Unidades .............................................. ........................................... 122
15.8Compare Partido Unidad de salida ............................................. ................................... 124
15.9Modes de Operacin .............................................. ............................................... 125
15.10Timer / Contador diagramas de tiempo ............................................ ........................... 132
15.11Register Descripcin ............................................... ........................................... 134

16 Temporizador / Counter0 y Timer / Counter1 Prescalers .............................. 141


16.1Internal fuente de reloj .............................................. ............................................ 141
Restablecer 16.2Prescaler ...................................................................................................141
16.3External fuente de reloj .............................................. ........................................... 141
16.4Register Descripcin ............................................... ............................................. 143

iii
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


17 8-bit del temporizador / Contador2 con PWM y asncrona Operacin ...... 144
17.1Features ..............................................................................................................144
17.2Overview .............................................................................................................144
17.3Timer / Contador Fuentes de reloj ............................................ ................................. 145
Unidad 17.4Counter ........................................................................................................145
17.5Output Comparar Unidad .............................................. ............................................ 146
17.6Compare Partido Unidad de salida ............................................. ................................... 148
17.7Modes de Operacin .............................................. ............................................... 149
17.8Timer / Contador diagramas de tiempo ............................................ ............................. 153
17.9Asynchronous Operacin del Timer / Contador2 ........................................... ............ 155
17.10Timer / Contador Precontador ............................................. ...................................... 156
17.11Register Descripcin ............................................... ........................................... 158

18 SPI - Serial Peripheral Interface ............................................ ............. 166


18.1Features ..............................................................................................................166
18.2Overview .............................................................................................................166
18.3SS Pin Funcionalidad .............................................. .............................................. 171
Modos 18.4Data .........................................................................................................171
18.5Register Descripcin ............................................... ............................................. 173

19 USART0 ................................................ ................................................. 176


19.1Features ..............................................................................................................176
19.2Overview .............................................................................................................176
19.3Clock Generacin ............................................... .................................................. 177
Formatos 19.4Frame ....................................................................................................180
19.5USART inicializacin ............................................... ............................................. 182
19.6Data Transmisin - El Transmisor USART ........................................... ......... 183
19.7Data Recepcin - El receptor USART ........................................... .................. 186
Recepcin 19.8Asynchronous datos .............................................. .............................. 190
19.9Multi procesador Modo de comunicacin ............................................ .................... 193
19.10Register Descripcin ............................................... ........................................... 195
19.11Examples de Baud Rate Ajuste ............................................ ............................ 199

20 USART en modo SPI ............................................. ................................ 204


20.1Features ..............................................................................................................204
20.2Overview .............................................................................................................204
20.3Clock Generacin ............................................... .................................................. 204
20.4SPI Modos y sincronizacin de datos ............................................ ................................... 205

iv
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


Formatos 20.5Frame ....................................................................................................206
20.6Data Transferencia ......................................................................................................208
20.7AVR USART MSPIM vs. AVR SPI .......................................... ............................ 210
20.8Register Descripcin ............................................... ............................................. 211

21 de 2 cables de interfaz Serial ............................................ .............................. 214


21.1Features ..............................................................................................................214
21.22 hilos de interfaz Serial Bus Definicin ........................................... ....................... 214
21.3Data Transferencia y Frame Formato ............................................ ............................ 216
21.4Multi-master Bus Systems, Arbitraje y sincronizacin ............................... 218
21.5Overview del Mdulo TWI ............................................ ................................... 221
21.6Using el TWI ......................................................................................................223
Modos 21.7Transmission ............................................... ............................................ 227
Sistemas 21.8Multi-master y Arbitraje ........................................... ....................... 240
21.9Register Descripcin ............................................... ............................................. 241

22 analgico Comparador ............................................... .............................. 246


22.1Overview .............................................................................................................246
22.2Analog Comparador multiplexado de entrada ............................................. .................... 246
22.3Register Descripcin ............................................... ............................................. 247

23 de analgico a digital ........................................... ..................... 250


23.1Features ..............................................................................................................250
23.2Overview .............................................................................................................250
23.3Starting una Conversin .............................................. ............................................ 252
23.4Prescaling y Conversin Timing ............................................. ......................... 253
Canal 23.5Changing o Seleccin de referencia ............................................ ............. 255
23.6ADC ruido Canceler .............................................. ............................................. 256
23.7ADC Conversin Resultado .............................................. ........................................ 261
23.8Temperature Medicin ............................................... .................................. 261
23.9Register Descripcin ............................................... ............................................. 262

24 Sistema de depuracin debugWIRE On-chip ........................................... ....... 267


24.1Features ..............................................................................................................267
24.2Overview .............................................................................................................267
24.3Physical Interfaz ............................................... ................................................. 267
Puntos de Quiebre 24.4Software .............................................. ........................................... 268
24.5Limitations de debugWIRE .............................................. ..................................... 268
24.6Register Descripcin ............................................... ............................................. 268

v
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


25 Auto-Programacin de la Flash, ATmega48PA ...................................... 269
25.1Overview .............................................................................................................269
25.2Addressing el flash durante la Auto-Programacin .......................................... ....... 270
25.3Register Descripcin ............................................... ............................................. 275

26 Cargador de arranque de apoyo - Leer-While-Escribe Auto-Programacin,


ATmega88PA, ATmega168PA y ATmega328P 277
26.1Features ..............................................................................................................277
26.2Overview .............................................................................................................277
26.3Application y del gestor de arranque flash Secciones ........................................... ............ 277
26.4Read-While-Escribir y Sin leer mientras saneamientos-flash Secciones .............................. 278
26.5Boot Loader Lock Bits ............................................. ............................................ 280
26.6Entering Programa gestor de arranque ............................................ .......................... 281
26.7Addressing el flash durante la Auto-Programacin .......................................... ....... 282
26.8Self-Programacin del flash ............................................ .................................... 282
26.9Register Descripcin ............................................... ............................................. 292

27 Programacin Memoria ............................................... .......................... 294


27.1Program Y bloqueo de memoria Bits de datos ........................................... ...................... 294
27.2Fuse Bits .............................................................................................................295
27.3Signature Bytes ...................................................................................................298
27.4Calibration Byte ...................................................................................................298
27.5Page Tamao ............................................................................................................299
27.6Parallel Parmetros de programacin, Mapping Pin y Comandos ..................... 299
27.7Parallel Programacin ............................................... ........................................... 301
27.8Serial Descarga ............................................... .............................................. 308

28 Caractersticas elctricas ............................................... ..................... 313


28.1Absolute Grados mximos * ............................................. .................................. 313
Caractersticas 28.2DC ............................................... ............................................... 313
Grados 28.3Speed .....................................................................................................316
Caractersticas 28.4Clock ............................................... ............................................ 317
28.5System y Restablecer Caractersticas ............................................. ......................... 318
Caractersticas de temporizacin 28.6SPI .............................................. .................................... 319
28.72 hilos Caractersticas de la interfaz Serial ............................................ ..................... 321
Caractersticas 28.8ADC ............................................... ............................................. 323
Caractersticas de programacin 28.9Parallel .............................................. ................... 324

29 Caractersticas tpicas ............................................... ......................... 326


vi
8161D-AVR-10.9

ATmega48PA / 88PA / 168PA / 328P


29.1ATmega48PA Caractersticas tpicas .............................................. ................... 327
29.2ATmega88PA Caractersticas tpicas .............................................. ................... 351
29.3ATmega168PA Caractersticas tpicas .............................................. ................. 375
29.4ATmega328P Caractersticas tpicas .............................................. ................... 399

30 Registrarse Resumen ............................................... ................................ 423


31 Instruccin Resumen Establecer .............................................. ...................... 427
32 Informacin de pedido ............................................... ............................ 430
32.1ATmega48PA ......................................................................................................430
32.2ATmega88PA ......................................................................................................431
32.3ATmega168PA ....................................................................................................432
32.4ATmega328P ......................................................................................................433

33 Informacin Packaging ............................................... ......................... 434


33.132A ......................................................................................................................434
33.228M1 ...................................................................................................................435
33.332M1-A ................................................................................................................436
33.428P3 ....................................................................................................................437

34 Errata ..................................................................................................... 438


34.1Errata ATmega48PA ............................................... ............................................ 438
34.2Errata ATmega88PA ............................................... ............................................ 438
34.3Errata ATmega168PA ............................................... .......................................... 438
34.4Errata ATmega328P ............................................... ............................................. 438

35 Hoja de datos Historial de revisiones .............................................. .................. 439


35.1Rev. 8161D - 10/09 ............................................. ............................................... 439
35.2Rev. 8161C - 05/09 ............................................. ............................................... 439
35.3Rev. 8161B - 01/09 ............................................. ................................................ 439
35.4Rev. 8161A - 11/08 ............................................. ................................................ 440

Tabla de contenido ............................................... ........................................ yo

vii
8161D-AVR-10.9

Sede

Internacional

Atmel Corporation
2325 Orchard Parkway
San Jose, CA 95131
EE.UU.
Tel: 1 (408) 441-0311
Fax: 1 (408) 487-2600

Atmel Asia
Unidad de 1-5 y 16, 19 / F
BEA Tower, Millennium City 5
418 Kwun Tong carretera
Kwun Tong, Kowloon
Hong Kong
Tel: (852) 2245-6100
Fax: (852) 2722-1369

Atmel Europa
Le Krebs
8, Rue Jean-Pierre Timbaud
BP 309
78054 Saint-Quentin-enYvelines Cedex
Francia
Tel: (33) 1-30-60-70-00
Fax: (33) 1-30-60-71-11

Atmel Japn
9F, Tonetsu Shinkawa Bldg.
1-24-8 Shinkawa
Chuo-ku, Tokio 104-0033
Japn
Tel: (81) 3-3523-3551
Fax: (81) 3-3523-7581

Apoyo Tcnico
avr@atmel.com

Contacto de Ventas
www.atmel.com/contacts

Producto Contacto
Sitio Web
www.atmel.com

Pide Literatura
www.atmel.com/literature

Descargo de responsabilidad: La informacin contenida en este documento se proporciona en relacin con los productos de Atmel. Ninguna licencia, expresa o implcita, por impedimento legal o de otro tipo, a cualquier
derecho de propiedad intelectual otorgadas por este documento o en conexin con la venta de productos Atmel. A EXCEPCIN DE LO ESTABLECIDO EN LOS TRMINOS Y CONDICIONES DEL ATMEL
CIONES DE VENTA UBICADA EN EL SITIO WEB DE ATMEL, ATMEL NO ASUME RESPONSABILIDAD ALGUNA Y RECHAZA CUALQUIER EXPRESA, IMPLCITA O LEGAL
GARANTA EN RELACIN CON SUS PRODUCTOS INCLUYENDO, PERO NO LIMITADO A, LA GARANTA DE COMERCIALIZACIN, IDONEIDAD PARA UN DETERMINADO
PROPSITO, O NO INFRACCIN. EN NINGN CASO ATMEL RESPONSABLE POR DAOS DIRECTOS, INDIRECTOS, MORALES, ESPECIAL O INCIDENTAL
DAOS TAL (INCLUYENDO, SIN LIMITACIONES, DAOS POR PRDIDA DE BENEFICIOS, INTERRUPCIN DE NEGOCIO O PRDIDA DE INFORMACIN) EMERGENTES
EL USO O LA IMPOSIBILIDAD DE USO DE ESTE DOCUMENTO, INCLUSO SI ATMEL HA SIDO ADVERTIDO DE LA POSIBILIDAD DE TALES DAOS. Atmel hace ninguna
representaciones o garantas con respecto a la exactitud o integridad de los contenidos de este documento y se reserva el derecho de realizar cambios en las especificaciones
y descripciones de productos en cualquier momento sin previo aviso. Atmel no tiene ningn compromiso de actualizar la informacin contenida en el presente documento. A menos que se disponga especficamente
de lo contrario, los productos Atmel no son adecuados para, y no podrn ser utilizados en aplicaciones de automocin. Los productos de Atmel no pretenden, autorizados, o una garanta de uso
como componentes en aplicaciones destinadas a apoyar o sostener la vida.

2009 Atmel Corporation. Reservados todos los derechos. Atmel , el logotipo y combinaciones de los mismos Atmel, comercio AVR, logotipo AVR y otros estn registrados
marcas comerciales o marcas de Atmel Corporation o sus filiales. Otros trminos y nombres de productos pueden ser marcas comerciales de otros.

8161D-AVR-10.9

You might also like