Sei sulla pagina 1di 81

17/11/24 OCR4BH y OCR4BL - comparación de salida registrar 4 B

Poco 7 6 5 4 3 2 1 0

(0xAA) OCR4B [15: 8] OCR4BH

(0xAB) OCR4B [7: 0] OCR4BL

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

17/11/25 OCR4CH y OCR4CL -Salida de comparación Regístrese 4 C

Poco 7 6 5 4 3 2 1 0

(0xAD) OCR4C [15: 8] OCR4CH

(0xAC) OCR4C [7: 0] OCR4CL

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

17/11/26 OCR5AH y OCR5AL - comparación de salida 5 A Register

Poco 7 6 5 4 3 2 1 0

(0x129) OCR5A [15: 8] OCR5AH

(0x128) OCR5A [7: 0] OCR5AL

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

17/11/27 OCR5BH y OCR5BL - comparación de salida Register 5 B

Poco 7 6 5 4 3 2 1 0

(0x12B) OCR5B [15: 8] OCR5BH

(0x12A) OCR5B [7: 0] OCR5BL

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

17/11/28 OCR5CH y OCR5CL -Salida de comparación Regístrese 5 C

Poco 7 6 5 4 3 2 1 0

(0x12D) OCR5C [15: 8] OCR5CH

(0x12C) OCR5C [7: 0] OCR5CL

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

Los registros de salida de comparación contienen un valor de 16 bits que se compara de forma continua con el valor del contador (TCNTn). Un fósforo se puede utilizar para
generar una comparación de salida de interrupción, o para generar una salida de forma de onda en el pasador OCnx.

Los registros de salida de comparación son de 16 bits en el tamaño. Para asegurar que tanto los bytes alto y bajo se escriben simultáneamente cuando la CPU
escribe en estos registros, el acceso se realiza utilizando un byte de registro de alta de 8 bits temporal (TEMP). Este registro temporal es compartida por todos los
demás registros de 16 bits. Consulte “Acceso a registros de 16 bits” en la página 135.

17/11/29 ICR1H y ICR1L - Registro de entrada de captura 1

Poco 7 6 5 4 3 2 1 0

(0x87) ICR1 [15: 8] ICR1H

(0x86) ICR1 [7: 0] ICR1L

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 160


2549Q-AVR-02/2014
17/11/30 ICR3H y ICR3L - Registro de entrada de captura 3

Poco 7 6 5 4 3 2 1 0

(0x97) ICR3 [15: 8] ICR3H

(0x96) ICR3 [7: 0] ICR3L

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

17/11/31 ICR4H y ICR4L - Entrada Registro Capture 4

Poco 7 6 5 4 3 2 1 0

(0xA7) ICR4 [15: 8] ICR4H

(0xA6) ICR4 [7: 0] ICR4L

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

17/11/32 ICR5H y ICR5L - Registro de entrada Captura 5

Poco 7 6 5 4 3 2 1 0

(0x127) ICR5 [15: 8] ICR5H

(0x126) ICR5 [7: 0] ICR5L

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

La captura de entrada se actualiza con el valor de contador (TCNTn) cada vez que se produce un evento en el pasador ICPN (u opcionalmente en la salida
analógica comparador para Timer / Counter1). La captura de entrada se puede utilizar para definir el valor del contador TOP.

El registro de captura de entrada es de 16 bits de tamaño. Para asegurar que tanto los bytes alto y bajo se leen simultáneamente cuando el CPU accede a
estos registros, el acceso se realiza utilizando un byte de registro de alta de 8 bits temporal (TEMP). Este registro temporal es compartida por todos los demás
registros de 16 bits. Consulte “Acceso a registros de 16 bits” en la página 135.

11/17/33 TIMSK1 - temporizador / contador 1 Interrumpir registro de máscara

Poco 7 6 5 4 3 2 1 0

(0x6F) - - ICIE1 - OCIE1C OCIE1B OCIE1A TOIE1 TIMSK1

Leer escribir R R R/W R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

11/17/34 TIMSK3 - temporizador / contador 3 de interrupción registro de máscara

Poco 7 6 5 4 3 2 1 0

(0x71) - - ICIE3 - OCIE3C OCIE3B OCIE3A TOIE3 TIMSK3

Leer escribir R R R/W R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

11/17/35 TIMSK4 - temporizador / contador 4 de interrupción registro de máscara

Poco 7 6 5 4 3 2 1 0

(0x72) - - ICIE4 - OCIE4C OCIE4B OCIE4A TOIE4 TIMSK4

Leer escribir R R R/W R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 161


2549Q-AVR-02/2014
11/17/36 TIMSK5 - Temporizador / Contador 5 Interrupción registro de máscara

Poco 7 6 5 4 3 2 1 0

(0x73) - - ICIE5 - OCIE5C OCIE5B OCIE5A TOIE5 TIMSK5

Leer escribir R R R/W R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 5 - ICIEn: Temporizador / Countern, capturar la entrada de habilitación de interrupción

Cuando este bit se escribe en uno, y el I-bandera en el registro de estado se establece (interrumpe a nivel mundial activado), el / Countern interrupción capturar la entrada del
temporizador está activado. El correspondiente vector de interrupción (véase “interrupciones” en la página 101 ) Se ejecuta cuando la bandera ICFn, situada en TIFRn, se
establece.

• Bit 3 - OCIEnC: Temporizador / Countern, comparación de salida C de ajuste de habilitación de interrupción

Cuando este bit se escribe en uno, y el I-bandera en el registro de estado se establece (interrumpe a nivel mundial activado), el / Salida Countern temporizador de
interrupción C Comparar Partido está habilitada. El correspondiente vector de interrupción (véase “interrupciones” en la página 101 ) Se ejecuta cuando la bandera
OCFnC, situada en TIFRn, se establece.

• Bit 2 - OCIEnB: Temporizador / Countern, comparación de salida B Partido habilitación de interrupción

Cuando este bit se escribe en uno, y la I-bandera en el registro de estado se establece (interrumpe a nivel mundial activado), el / Salida Countern temporizador Comparar
interrupción del partido B está habilitada. El correspondiente vector de interrupción (véase “interrupciones” en la página 101 ) Se ejecuta cuando la bandera OCFnB,
situada en TIFRn, se establece.

• Bit 1 - OCIEnA: Temporizador / Countern, comparación de salida una interrupción de ajuste de Habilitación

Cuando este bit se escribe en uno, y el I-bandera en el registro de estado se establece (interrumpe a nivel mundial activado), el / Salida Countern temporizador comparar
una interrupción de ajuste está activado. El correspondiente vector de interrupción (véase “interrupciones” en la página 101 ) Se ejecuta cuando la bandera OCFnA,
situada en TIFRn, se establece.

• Bit 0 - TOIEn: Temporizador / Countern, desbordamiento de habilitación de interrupción

Cuando este bit se escribe en uno, y el I-bandera en el registro de estado se establece (interrumpe a nivel mundial activado), la interrupción del temporizador / Countern

desbordamiento está activado. El correspondiente vector de interrupción (véase “interrupciones” en la página 101 ) Se ejecuta cuando la bandera tovn, situada en TIFRn, se

establece.

11/17/37 TIFR1 - Temporizador / Contador1 interrupción de la bandera de Registro

Poco 7 6 5 4 3 2 1 0

0x16 (0x36) - - ICF1 - OCF1C OCF1B OCF1A TOV1 TIFR1

Leer escribir R R R/W R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

11/17/38 TIFR3 - Temporizador / Counter3 interrupción de la bandera de Registro

Poco 7 6 5 4 3 2 1 0

0x18 (0x38) - - ICF3 - OCF3C OCF3B OCF3A TOV3 TIFR3

Leer escribir R R R/W R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

11/17/39 TIFR4 - Temporizador / Counter4 interrupción de la bandera de Registro

Poco 7 6 5 4 3 2 1 0

0x19 (0x39) - - ICF4 - OCF4C OCF4B OCF4A TOV4 TIFR4

Leer escribir R R R/W R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 162


2549Q-AVR-02/2014
11/17/40 TIFR5 - Temporizador / Counter5 interrupción de la bandera de Registro

Poco 7 6 5 4 3 2 1 0

0x1A (0x3A) - - ICF5 - OCF5C OCF5B OCF5A TOV5 TIFR5

Leer escribir R R R/W R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 5 - ICFn: Temporizador / Countern, captura la bandera de entrada

Esta bandera se establece cuando se produce un evento de captura sobre el pasador ICPN. Cuando el registro de captura de entrada (ICRN) es fijado por el WGMn3: 0 para ser

utilizado como el valor TOP, la Bandera ICFn se establece cuando el contador alcanza el valor superior. ICFn se borra automáticamente cuando se ejecuta la captura de entrada

de interrupción del vector. Alternativamente, se puede borrar ICFn escribiendo un uno lógico a su ubicación poco.

• Bit 3 OCFnC: Temporizador / Countern, comparación de salida C Match Flag

Este indicador se establece en el ciclo de reloj temporizador después de que el valor del contador (TCNTn) coincide con la comparación de salida Registro C (OCRnC).

Tenga en cuenta que una comparación (FOCnC) estroboscópica salida forzada no se establece el indicador de OCFnC.

OCFnC se borra automáticamente cuando la comparación de salida de ajuste de C vector de interrupción se ejecuta. Como alternativa, se puede borrar OCFnC
escribiendo un uno lógico a su ubicación poco.

• Bit 2 - OCFnB: Temporizador / Counter1 comparación de salida B Match Flag

Este indicador se establece en el ciclo de reloj temporizador después de que el valor del contador (TCNTn) coincide con la comparación de salida Registro B (OCRnB).

Tenga en cuenta que una comparación (FOCnB) estroboscópica salida forzada no se establece el indicador de OCFnB.

OCFnB se borra automáticamente cuando la comparación de salida B Partido vector de interrupción se ejecuta. Alternativamente, se puede borrar OCFnB
escribiendo un uno lógico a su ubicación poco.

• Bit 1 - OCF1A: Temporizador / Counter1 Una comparación de salida Match Flag

Este indicador se establece en el ciclo de reloj temporizador después de que el contador (valor TCNTn coincide con la comparación de salida Registro A (OCRnA).

Tenga en cuenta que una comparación (FOCnA) estroboscópica salida forzada no se establece el indicador de OCFnA.

OCFnA se borra automáticamente cuando la comparación de salida que coincida con un vector de interrupción se ejecuta. Alternativamente, se puede borrar OCFnA
escribiendo un uno lógico a su ubicación poco.

• Bit 0 - tovn: Temporizador / Countern, Bandera de desbordamiento

La configuración de este indicador es dependiente de la WGMn3: Configuración de 0 bits. En los modos normales y CTC, la Bandera tovn se establece cuando se desborda el

temporizador. Referirse a Tabla 17-2 en la página 145 por el comportamiento de la bandera tovn cuando se utiliza otra WGMn3: ajuste de 0 bits.

Tovn se borra automáticamente cuando se ejecuta el temporizador / Countern desbordamiento vector de interrupción. Como alternativa, se puede borrar tovn escribiendo un
uno lógico a su ubicación poco.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 163


2549Q-AVR-02/2014
18. temporizador / contador 0, 1, 3, 4, y 5 de divisor

Temporizador / contador 0, 1, 3, 4 y 5 comparten el mismo módulo de pre-escalador, pero los Timer / contadores pueden tener diferentes configuraciones prescaler. La siguiente

descripción se aplica a todos los temporizadores / contadores. Tn se usa como un nombre general, n = 0, 1, 3, 4, o

5.

18.1 fuente de reloj interno

El temporizador / contador puede ser ajustado directamente por el reloj del sistema (mediante el establecimiento de la CSN2: 0 = 1). Esto proporciona la operación más rápida, con

un / contador de frecuencia de reloj temporizador máximo igual a la frecuencia de reloj del sistema (f CLK_I / O).

Alternativamente, uno de los cuatro grifos de la prescaler se puede utilizar como una fuente de reloj. El reloj de preescalado tiene una frecuencia de f CLK_I / O / 8,
f CLK_I / O / 64, f CLK_I / O / 256, o f CLK_I / O / 1024.

18.2 de divisor de reinicio

El pre-escalador se repite libremente, es decir, opera en forma independiente de la lógica Selección de reloj del temporizador / contador, y que es compartida por el
temporizador / contador Tn. Desde el pre-escalador no se ve afectada por el reloj del temporizador / contador de selección, 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 número de ciclos de reloj del sistema desde cuando el temporizador está habilitado para el primer conteo se produce
puede ser de 1 a ciclos de reloj N + 1 del sistema, donde N es igual al divisor prescaler (8, 64, 256, o 1024).

Es posible utilizar el reinicio prescaler para sincronizar el temporizador / contador para la ejecución del programa. Sin embargo, se debe tener cuidado si el otro temporizador /

contador que comparte el mismo pre-escalador también utiliza preescala. Un restablecimiento prescaler afectará el período pre-escalador de todos los temporizadores / contadores

que está conectado.

18.3 fuente de reloj externa

Una fuente de reloj externa aplicada al pin Tn se puede utilizar como temporizador / contador de reloj (clk Tennesse). El pasador Tn se muestrea una vez cada ciclo
de reloj del sistema por la lógica de sincronización pin. La señal sincronizada (muestreada) se hace pasar luego a través del detector de borde. Figura 18-1 muestra
un diagrama de bloques equivalente funcional de la sincronización y el borde lógica detector Tn. Los registros están sincronizados en el borde positivo del reloj
del sistema interno (clk I / O). El pestillo es transparente en el periodo alto del reloj interno del sistema. El detector de borde genera una clk Tennesse pulso para cada
positivo (CSN2: 0 = 7) o negativo (CSN2: 0 = 6) de borde que detecta.

La Figura 18-1. Tn / T0 Pin muestreo

Tn_sync
Tennesse DQ DQ DQ
(Para Reloj
Seleccione Logic)

LE

CLK I / O

Sincronización detector de bordes

La lógica del detector de sincronización y el borde introduce un retardo de 2,5 a 3,5 ciclos de reloj del sistema desde un borde ha sido aplicado a la clavija de
Tn al contador se actualiza.

Activación y desactivación de la entrada de reloj se debe hacer cuando Tn ha sido estable durante al menos un ciclo de reloj del sistema, de lo contrario el riesgo de que
se genera un / impulso falso temporizador contador de reloj.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 164


2549Q-AVR-02/2014
Cada medio periodo del reloj externa aplicada debe ser más largo que un ciclo de reloj del sistema para asegurar el muestreo correcto. El reloj externo debe estar

garantizado para tener menos de la mitad de la frecuencia de reloj del sistema (f ExtClk < F clk_I / O / 2) dado un ciclo de trabajo del 50/50%. Puesto que el detector de borde

utiliza el muestreo, la frecuencia máxima de un reloj externo que puede detectar es la mitad de la frecuencia de muestreo (teorema de muestreo de Nyquist). Sin

embargo, debido a la variación del ciclo de la frecuencia de reloj del sistema y el deber causado por la fuente de oscilador (de cristal, resonador, y condensadores)

tolerancias, lo que se recomienda que la máxima frecuencia de una fuente de reloj externa es menor que f clk_I / O / 2.5. Una fuente de reloj externo no se puede

preescalado.

La Figura 18-2. Prescaler para el temporizador / contadores síncronos

CLK I / O
Claro

PSR10

Tn
sincronización

Tn
sincronización La

CSn0 CSn0

Csn1 Csn1

Csn2 Csn2

TIMER / CLOCK SOURCE COUNTERn TIMER / CLOCK SOURCE COUNTERn


CLK Tennesse CLK Tennesse

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 165


2549Q-AVR-02/2014
18.4 Registro Descripción

18.4.1 GTCCR - General de temporizador / contador Registro de Control

Poco 7 6 5 4 3 2 1 0

0x23 (0x43) TSM - - - - - PSRASY PSRSYNC GTCCR

Leer escribir R/W R R R R R R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 7 - TSM: / Modo de sincronización contador del temporizador

Escribir el bit TSM a uno activa el modo de temporizador / contador de sincronización. En este modo, el valor que se escribe en los bits PSRASY y PSRSYNC
se mantiene, por lo tanto mantener las correspondientes señales de restablecimiento prescaler afirmaron. Esto asegura que los correspondientes
temporizador / contadores se detienen y se pueden configurar en el mismo valor sin el riesgo de una de ellas avanzando en la configuración. Cuando el bit de
TSM está escrito a cero, los bits PSRASY y PSRSYNC se borran por el hardware, y el temporizador / contadores empiezan a contar al mismo tiempo.

• Bit 0 - PSRSYNC: Cambiar de divisor para sincrónicos Timer / Contadores


Cuando este bit es uno, temporizador / Counter0, temporizador / Counter1 temporizador / Counter3, temporizador / contador de tiempo pre-escalador Counter4 y / Counter5 se restablecerá. Este bit se

borra normalmente inmediatamente por hardware, excepto si el bit se establece TSM. Tenga en cuenta que Temporizador / Counter0, temporizador / Counter1 temporizador / Counter3, temporizador /

contador de tiempo Counter4 y / Counter5 comparten el mismo pre-escalador y un restablecimiento de este pre-escalador afectará a todos los temporizadores.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 166


2549Q-AVR-02/2014
19. comparación de salida del modulador (OCM1C0A)

19.1 Descripción general

La comparación de salida del modulador (OCM) permite la generación de formas de onda moduladas con una frecuencia portadora. El modulador utiliza las salidas de la
salida de la unidad de comparación C de la 16-bit de temporizador / Counter1 y la salida de la unidad de comparación de la 8-bit Timer / Counter0. Para más detalles
acerca de estos Timer / Contadores ver “Temporizador / contador 0, 1, 3, 4, y 5 de divisor” en la página 164 y “8-bit de temporización / Counter2 con PWM y asíncrono de
funcionamiento” en la página 169 .

La Figura 19-1. Comparación de salida del modulador, Diagrama de bloques

Temporizador / contador 1 OC1C

Pin OC1C /

OC0A / PB7

Timer / Contador 0 OC0A

Cuando se activa el modulador, los dos canales de salida comparar se modulan juntos como se muestra en el esquema de bloques (ver Figura 19-1 ).

19.2 Descripción

La unidad de comparación de salida 1C y salida de la unidad de comparación 2 acciones Pin del puerto PB7 para la salida. Las salidas de las unidades de
comparación de salida (OC1C y OC0A) hace caso omiso de la normal PORTB7 Registro cuando uno de ellos está activado (es decir, cuando COMnx1: 0 no es igual
a cero). Cuando ambos OC1C y OC0A están activadas al mismo tiempo, el modulador se activa automáticamente.

El esquema equivalente funcional del modulador se muestra en Figura 19-2 . El esquema incluye parte de las unidades de temporizador / contador y el circuito
controlador de salida de puerto B pin 7.

La Figura 19-2. Comparación de salida del modulador, Esquema


COMA01 Vcc

COMA00

COM1C1 modulador

COM1C0
0

1
(De Generador de forma de onda) DQ

1
OC1C
Alfiler

0
OC1C /
(De Generador de forma de onda) DQ
OC0A / PB7

OC0A

DQ DQ

PORTB7 DDRB7
BUS DE DATOS

Cuando el modulador está activado el tipo de modulación (lógico Y u O) puede ser seleccionado por el Registro PORTB7. Tenga en cuenta que la DDRB7
controla la dirección del puerto independiente del COMnx1: ajuste de 0 bits.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 167


2549Q-AVR-02/2014
19.2.1 ejemplo de temporización

Figura 19-3 ilustra el modulador en acción. En este ejemplo, el temporizador / Counter1 está ajustado para funcionar en modo PWM rápido (no invertida) y el
temporizador / Counter0 utiliza el modo de forma de onda de CTC con toggle Comparar modo de salida (COMnx1: 0 = 1).

La Figura 19-3. Comparación de salida del modulador, Cronograma

CLK I / O

OC1C
(Modo fPWM)

OC0A
(Modo CTC)

PB7
(PORTB7 = 0)

PB7
(PORTB7 = 1)

1 2 3
(Período)

En este ejemplo, el temporizador / Counter2 proporciona el soporte, mientras que la señal de modulación se genera por la salida de la unidad de comparación C del temporizador /

Counter1.

La resolución de la señal PWM (OC1C) se reduce por la modulación. El factor de reducción es igual al número de ciclos de reloj del sistema de un periodo de
la portadora (OC0A). En este ejemplo, la resolución se reduce por un factor de dos. La razón de la reducción se ilustra en Figura 19-3 en el segundo y tercer
período de la salida PB7 cuando PORTB7 es igual a cero. El período de 2 hora es un ciclo más largo que el período de 3 hora, pero el resultado en la salida
PB7 es igual en ambos períodos.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 168


2549Q-AVR-02/2014
20. 8-bit Timer / Counter2 con PWM y operación asincrónica

Temporizador / Counter2 es una, de un solo canal, / módulo de propósito general temporizador de 8 bits del contador. Las características principales son:

• Counter Single Channel


• Borrar contador de ajuste de comparación (auto Recargar)

• De saltos libres, Fase pulso correcta modulador de la anchura (PWM)


• Generador de frecuencia
• 10-bit de reloj de divisor
• Desbordamiento y comparar fuentes de interrupción del partido (TOV2, OCF2A y OCF2B)
• Permite Clocking de 32kHz cristal de reloj externa independiente del reloj de O / I

20.1 Descripción general

Un diagrama de bloques simplificado de la 8-bit temporizador / contador se muestra en la Figura 17-12 en la página 153 Para la colocación real de pines de E / S, consulte “Configuraciones

PIN” en la página 2 . CPU accesible de E / S de registro, incluyendo bits de E / S y I pines de E / S, se muestran en negrita. Las ubicaciones de I / O Registro y bits de dispositivos

específicos se enumeran en la “Registrar Descripción” en la página 182 .

El bit de energía Reducción del temporizador / Counter2, PRTIM2, en “PRR0 - Reducción de potencia 0 Registro” en la página 55 debe ser escrita a cero para permitir que el módulo

temporizador / Counter2.

La Figura 20-1. 8-bit de temporizador / contador Diagrama de bloques

Contar con
tovn
una dirección (Int.Req.)
valores
clara CLK Tennesse TOSC1

T/C
Oscilador

divisor TOSC2
Inferior Superior
CLK I / O
control de

Temporizador / Contador

TCNTn
= =0
OCnA
(Int.Req.)
lógica de

Generación de
= forma de onda
OCnA

OCRnA
TOP fija
OCnB
(Int.Req.)
BUS DE DATOS

Generación de
= forma de onda
OCnB

OCRnB
banderas de estado sincronizados CLK I / O
Sincronización Unidad de
CLK ASY

modo asíncrono
indicadores de estado seleccionar (ASN)
ASSRn

TCCRnA TCCRnB

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 169


2549Q-AVR-02/2014
20.1.1 Registros

El temporizador / contador (TCNT2) y la comparación de salida Registro (OCR2A y OCR2B) son registros de 8 bits. señales de solicitud de interrupción (abreviado a Int.Req.) son

todos visibles en la interrupción de la bandera de registro del temporizador (TIFR2). Todas las interrupciones están enmascarados por separado con el temporizador de interrupción

de registro de máscara (TIMSK2). TIFR2 y TIMSK2 no se muestran en la figura.

El temporizador / contador puede ser ajustado internamente, a través de la pre-escalador, o de forma asíncrona velocidad de reloj a partir de los TOSC1 / 2 pines, como se
detalla más adelante en esta sección. La operación asincrónica es controlada por el Estado asíncrona Registro (RASS). El reloj de seleccionar controles bloque lógico que
reloj de origen utiliza el temporizador / contador de incremento (o decremento) su valor. El temporizador / contador está inactivo cuando no se selecciona la fuente de reloj.
La salida de la lógica Selección de reloj se conoce como el reloj temporizador (CLK T2).

La salida doble buffer Comparar Registro (OCR2A y OCR2B) se compara con el valor del temporizador / contador en todo momento. El resultado de la comparación
puede ser utilizado por el generador de forma de onda para generar un PWM o salida de frecuencia variable sobre la comparación de salida pasadores (OC2A y
OC2B). Ver “Comparación de salida Unidad” en la página 175 para detalles. El evento partido comparar también fijará la bandera de comparación (OCF2A o OCF2B)
que se puede utilizar para generar una solicitud de interrupción de comparación de salida.

20.1.2 Definiciones

Muchas referencias de registro y de bits en este documento están escritas en forma general. Un caso inferior “n” sustituye el número temporizador / contador, en

este caso 2. Sin embargo, cuando se utiliza el registro o bit define en un programa, se debe utilizar la forma precisa, es decir, TCNT2 para acceder valor del

contador del temporizador / Counter2 y pronto. Las definiciones de Tabla 20-1 también se utilizan extensamente en toda la sección.

Tabla 20-1. definiciones INFERIOR

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

MAX El contador alcanza su máximo cuando se convierte en 0xFF (decimal 255)

PARTE SUPERIOR El contador llega a la parte superior cuando se hace igual al valor más alto de la secuencia de cuenta. El valor superior puede ser
programado para ser el valor fijo 0xFF (MAX) o el valor almacenado en el registro OCR2A. La asignación depende de la modalidad
de funcionamiento

20.2 temporizador / contador Fuentes de reloj

El temporizador / contador se puede sincronizado por una síncrono interno o una fuente de reloj asíncrono externa. La fuente de reloj CLK T2 es por defecto igual al
reloj de MCU, CLK I / O. Cuando el bit de AS2 en el Registro ASSR se escribe en uno lógico, fuente de reloj se toma del temporizador / contador oscilador
conectado a TOSC1 y TOSC2. Para más detalles sobre el funcionamiento asíncrono, consulte “Operación asíncrona de temporizador / Counter2” en la página 179 .
Para más detalles sobre las fuentes de reloj y pre-escalador, véase “Temporizador / contador de divisor” en la página 180 .

20.3 Unidad de contador

La parte principal de la 8-bit temporizador / contador es la unidad de contador bidireccional programable. Figura 20-2 en la página 171
muestra un diagrama de bloques de la barra y su ambiente circundante.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 170


2549Q-AVR-02/2014
La Figura 20-2. Contador Diagrama de bloques de la unidad

tovn
(Int.Req.)
BUS DE DATOS

TOSC1
control
T/C
claro CLK Tennesse
TCNTn recuento lógica de prescaler Oscilador

inferior
TOSC2

dirección parte superior


CLK I / O

Descripción de señales (señales internas):

contar Incremento o decremento TCNT2 por 1.

dirección Selecciona entre el incremento y decremento.

claro TCNT2 clara (poner todos los bits a cero).

CLK Tennesse Temporizador / contador de reloj, se hace referencia como CLK T2 en el siguiente.

parte superior Señaliza TCNT2 ha alcanzado el valor máximo.

fondo Señaliza que TCNT2 ha alcanzado el valor mínimo (cero).

Dependiendo del modo de operación utilizado, el contador se borra, incrementa o decrementa en cada reloj temporizador (clk T2). CLK T2 puede ser generada a partir de una
fuente de reloj externa o interna, seleccionado por los bits de selección de reloj (CS22: 0). Cuando no se selecciona ninguna fuente de reloj (CS22: 0 = 0) el temporizador
se detiene. Sin embargo, el valor TCNT2 se puede acceder por la CPU, independientemente de si CLK T2 está presente o no. A las anulaciones de escritura del procesador
(tiene prioridad sobre) todas contador claras o contar las operaciones.

La secuencia de conteo se determina por el ajuste de los bits WGM21 y WGM20 ubicados en el registro de control del temporizador / contador (TCCR2A) y la
WGM22 situado en el temporizador / contador Registro de Control B (TCCR2B). Existen estrechas conexiones entre cómo se comporta el contador (cuenta) y
cómo se generan formas de onda en la comparación de salida salidas OC2A y OC2B. Para más detalles acerca de las secuencias de conteo avanzada y la
generación de forma de onda, consulte "Modos de operacion" .

La bandera de desbordamiento de temporizador / contador (TOV2) se establece de acuerdo con el modo de funcionamiento seleccionado por el WGM22: 0 bits. TOV2 se puede utilizar para

generar una interrupción de la CPU.

20.4 Modos de funcionamiento

El modo de funcionamiento, es decir, el comportamiento del temporizador / contador y la salida de comparación alfileres, se define por la combinación del modo
de forma de onda Generación (WGM22: 0) y comparar el modo de salida (COM2x1: 0) bits. Los bits de modo de comparación de salida no afectan a la secuencia
de conteo, mientras que los bits de modo de forma de onda Generación hacen. El COM2x1: 0 bits de control si la salida PWM generada debe ser invertida o no
(invertida o PWM no invertida). Para los no-PWM Modos de COM2x1: 0 bits controlan si la salida se debe establecer, borra, o alternar en un partido de comparar. Consulte
“Comparación de ajuste de la unidad de salida” en la página 176.

Para obtener información detallada de temporización consulte “Temporizador / Contador diagramas de tiempo” en la página 177 .

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 171


2549Q-AVR-02/2014
Modo Normal 20.4.1

El modo más simple de funcionamiento es el modo normal (WGM22: 0 = 0). En este modo el sentido de contaje es siempre hacia arriba (incrementar), y no se realiza ninguna

contador claro. El contador simplemente desborda cuando pasa a su valor de 8 bits máxima (TOP = 0xFF) y luego se reinicia desde la parte inferior (0x00). En funcionamiento normal,

el indicador de desbordamiento de temporizador / contador (TOV2) se encuentra en el mismo ciclo de reloj temporizador como el TCNT2 se convierte en cero. La bandera TOV2 en

este caso se comporta como un noveno bit, con la excepción de que sólo se establece, sin despachar. Sin embargo, en combinación con la interrupción de desbordamiento del

temporizador que se borra automáticamente la Bandera TOV2, la resolución 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 comparación de salida se puede utilizar para generar interrupciones en algún momento dado. El uso de la comparación de salida para generar formas de onda
en el modo normal no es recomendable, ya que esto va a ocupar demasiado del tiempo de CPU.

20.4.2 Borrar temporizador en el modo de ajuste de Comparación (CTC)

En Borrar temporizador en el modo CTC (WGM22: 0 = 2) Comparar o, en el Registro OCR2A se utiliza para manipular la resolución del contador. En el modo de

CTC el contador se pone a cero cuando el valor contador (TCNT2) coincide con el OCR2A. El OCR2A define el valor superior para el contador, por lo tanto

también su resolución. Este modo permite un mayor control de la frecuencia de salida del partido comparar. También simplifica la operación de contar los

acontecimientos externos. El diagrama de tiempos para el modo de CTC se muestra en la Figura 20-3 . El valor del contador (TCNT2) aumenta hasta que se

produce una coincidencia comparar entre TCNT2 y OCR2A, y luego contador (TCNT2) se borra.

La Figura 20-3. Modo CTC, diagrama de tiempos

OCnx Establecer indicador de interrupción

TCNTn

OCnx
(COMnx1: 0 = 1)
(Toggle)

Período 1 2 3 4

Una interrupción puede ser generada cada vez que el valor del contador alcanza el valor TOP mediante el uso de la Bandera OCF2A. Si se habilita la interrupción,
la rutina de controlador de interrupción se puede utilizar para actualizar el valor superior. Sin embargo, el cambio de TOP a un valor cercano a abajo cuando el
contador se está ejecutando con ninguno o un bajo valor de pre-escalador debe hacerse con cuidado ya que el modo de CTC no tiene la característica de doble
buffer. Si el nuevo valor escrito en OCR2A es menor que el valor actual de TCNT2, el contador se pierda el partido comparar. El contador tendrá entonces a contar
hasta su máximo valor (0xFF) y se envuelven alrededor a partir de 0x00 antes del partido compare puede ocurrir. Para generar una salida de forma de onda en el
modo CTC, la salida OC2A se puede configurar para cambiar el nivel lógico de cada compara partido estableciendo la Compara bits de modo de salida a modo de
alternar (COM2A1: 0 = 1). El valor OC2A no será visible en el pin del puerto a menos que la dirección de datos para el pasador se establece en la salida. La forma
de onda generada tendrá una frecuencia máxima de f OC2A = F clk_I / O / 2 cuando OCR2A se establece en cero (0x00). La frecuencia de la forma de onda se define por la
siguiente ecuación:

F clk_I / O
F OCnx = --------------------------------------------------
2 norte
• 1 •OCRnx • + •

los norte variable representa el factor de preescala (1, 8, 32, 64, 128, 256, o 1024).

En cuanto al modo normal de funcionamiento, la Bandera TOV2 se encuentra en el mismo ciclo de reloj temporizador que el contador cuenta de MAX a 0x00.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 172


2549Q-AVR-02/2014
20.4.3 PWM de modo rápido

La Figura 20-4. PWM de modo rápido, diagrama de tiempos

Flag Set

OCRnx Actualización y tovn Establecer

indicador de interrupción

TCNTn

OCnx (COMnx1: 0 = 2)

OCnx (COMnx1: 0 = 3) OCRnx Interrupt

Período 1 2 3 4 5 6 7

La bandera de desbordamiento Timer / Contador (TOV2) se establece cada vez que el contador alcanza TOP. Si se habilita la interrupción, la rutina de controlador de interrupción se

puede utilizar para actualizar el valor de comparación.

En el modo PWM rápido, la unidad de comparación permite la generación de formas de onda PWM en el pin OC2x. Ajuste de la COM2x1: 0 bits a dos
producirá un PWM no invertida y una salida PWM invertida se pueden generar mediante el establecimiento de la COM2x1: 0 a tres. TOP se define como 0xFF
cuando WGM2: 0 = 3, y OCR2A cuando WGM2: 0 = 7 (ver Tabla 20-3 en la página 182 ). El valor real OC2x sólo será visible en el pin de puerto si la dirección
de datos para el pin del puerto está configurado como salida. La forma de onda PWM se genera mediante el establecimiento (o borrar) el Registro OC2x en el
partido de comparar entre OCR2x y TCNT2, y la limpieza (o configuración) el Registro OC2x en el ciclo de reloj temporizador se borra el contador (cambios
de arriba a abajo).

La frecuencia PWM para la salida se puede calcular mediante la siguiente ecuación:

F clk_I / O
F OCnxPWM = ------------------
• 256
norte

los norte variable 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 una forma de onda de salida PWM en el modo PWM rápido. Si
el OCR2A se establece igual a abajo, la salida será un pico estrecho para cada ciclo de reloj temporizador MAX + 1. Ajuste de la OCR2A igual a MAX resultará
en una salida constantemente alta o baja (dependiendo de la polaridad de la salida establecido por el COM2A1: 0 bits).

Una frecuencia (con 50% de ciclo de trabajo) de salida de forma de onda en el modo PWM rápido se puede lograr mediante el establecimiento de OC2x para alternar su nivel

lógico en cada compara partido (COM2x1: 0 = 1). La forma de onda generado tendrá una frecuencia máxima de f oc2 = F clk_I / O / 2 cuando OCR2A se establece en cero. Esta

función es similar a la de palanca OC2A en el modo CTC, a excepción de la función de doble búfer de la unidad de comparación de salida está activado en el modo PWM

rápido.

20.4.4 Fase PWM de modo correcto

El modo de fase correcta PWM (WGM22: 0 = 1 o 5) proporciona una opción correcta PWM generación de forma de onda de alta fase de resolución. El modo
PWM de fase correcta se basa en una operación de doble pendiente. El contador cuenta repetidamente desde abajo hacia arriba y luego de arriba a abajo. TOP
se define como 0xFF cuando WGM22: = 0 1, y cuando OCR2A MGM22: = 0 5. En no inversora Comparar el modo de salida, la comparación de salida (OC2x)
se despeja en el partido comparar entre TCNT2 y OCR2x mientras conteo progresivo, y establece en el partido, mientras que comparar conteo regresivo. En
invirtiendo salida modo de comparación, se invierte la operación. La operación de doble pendiente tiene menor funcionamiento máximo

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 173


2549Q-AVR-02/2014
frecuencia de operación con una sola pendiente. Sin embargo, debido a la característica simétrica de los modos de PWM de doble pendiente, estos modos son los preferidos

para aplicaciones de control de motor.

En el modo PWM de fase correcta el contador se incrementa hasta que el valor del contador coincide con TOP. Cuando el contador llega a TOP, cambia la
dirección de conteo. El valor TCNT2 será igual a la parte superior para un ciclo de reloj temporizador. El diagrama de tiempos para el modo PWM de fase correcta
se muestra en Figura 20-5 . El valor TCNT2 está en el diagrama de temporización que muestra como un histograma para ilustrar la operación de doble pendiente.
El diagrama incluye las salidas no invertidas e invertidas PWM. Las pequeñas marcas de líneas horizontales en las laderas representan TCNT2 comparan los
partidos entre OCR2x y TCNT2.

La Figura 20-5. Fase PWM de modo correcto, diagrama de tiempos

OCnx Establecer indicador de interrupción

actualización

Tovn la bandera de interrupción Conjunto

TCNTn

OCnx (COMnx1: 0 = 2)

OCnx (COMnx1: 0 = 3) OCRnx

período 1 2 3

La bandera de desbordamiento de temporizador / contador (TOV2) se establece cada vez que el contador alcanza BOTTOM. El indicador de interrupción se puede utilizar para

generar una interrupción cada vez que el contador alcanza el valor BOTTOM.

En el modo correcto de PWM fase, la unidad de comparación permite la generación de formas de onda PWM en el pin OC2x. Ajuste de la COM2x1: 0 bits a dos
producirá un PWM no invertida. Una salida PWM invertida puede ser generada 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 20-4 en la página 183 ). El valor real OC2x sólo será visible en el pin de puerto si la dirección de
datos para el pin del puerto está configurado como salida. La forma de onda PWM se genera en la limpieza (o configuración) el Registro OC2x en el partido de
comparar entre OCR2x y TCNT2 cuando el contador se incrementa, y el establecimiento (o compensación) el Registro OC2x en comparar partido entre OCR2x
y TCNT2 cuando el contador disminuye. La frecuencia PWM para la salida cuando se usa PWM de fase correcta se puede calcular por la siguiente ecuación:

F clk_I / O
F OCnxPCPWM = ------------------
• 510
norte

los norte variable representa el factor de preescala (1, 8, 32, 64, 128, 256, o 1024).

Los valores extremos para el Registro OCR2A representan casos especiales cuando generar una salida de forma de onda de PWM en el modo PWM de fase
correcta. Si el OCR2A se establece igual a abajo, la salida será continuamente baja y si se establece igual a MAX la salida será continuamente alta para el
modo no invertida PWM. Para PWM invertida la salida tendrá los valores lógicos opuestos.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 174


2549Q-AVR-02/2014
En el comienzo del período de 2 en Figura 20-5 en la página 174 OCnx tiene una transición de alto a bajo a pesar de que no es comparar Partido. El punto de
esta transición es garantizar la simetría alrededor de BOTTOM. Hay dos casos que dan una transición sin ajuste de comparación.

• OCR2A cambia su valor de MAX, como en Figura 20-5 en la página 174 . Cuando el valor MAX OCR2A es el valor pin OCn es el mismo que el resultado de una
cuenta descendente comparar partido. Para asegurar la simetría alrededor de la base del valor en OCn MAX debe corresponderse con el resultado de una
comparación de conteo progresivo Partido.

• El temporizador empieza a contar a partir de un valor más alto que el de OCR2A, y por esa razón se pierde el partido y de ahí el cambio OCn que habría
sucedido en el camino comparar.

20.5 comparación de salida Unidad

El comparador de 8 bits compara continuamente TCNT2 con el Registro de comparación de salida (OCR2A y OCR2B). Siempre es igual TCNT2 OCR2A o
OCR2B, el comparador indica un partido. Un partido fijará la bandera de comparación de salida (OCF2A o OCF2B) en el siguiente ciclo de reloj del
temporizador. Si se habilita la interrupción correspondiente, la comparación de salida de la bandera genera una comparación de salida de interrupción. La
comparación de salida de la bandera se borra automáticamente cuando se ejecuta la interrupción. Como alternativa, la comparación de salida de la bandera
se puede eliminar el software escribiendo un uno lógico a su ubicación bits de E / S. El generador de forma de onda utiliza la señal de correspondencia para
generar una salida de acuerdo con el modo de funcionamiento establecido por el WGM22: 0 bits y compara el modo de salida (COM2x1: 0) bits. “Modos de
funcionamiento” en la página 171 ).

Figura 20-6 muestra un diagrama de bloques de la unidad de salida de comparación.

La Figura 20-6. Unidad de salida de comparación, Diagrama de bloques

BUS DE DATOS

OCRnx TCNTn

= ( Comparador de 8 bits)

OCFn x (Int.Req.)

parte superior

fondo
Generador de forma de onda
OCnx
FOCn

WGMn1: 0 COMnX1: 0

El Registro OCR2x es amortiguada doble cuando se utiliza cualquiera de los modos de modulación de ancho de pulso (PWM). Para el normal y Clear Timer
en Comparar (CTC) modos de funcionamiento, el doble búfer está desactivado. El doble buffer sincroniza la actualización del registro de comparación OCR2x
a la parte superior o inferior de la secuencia de conteo. La sincronización evita la ocurrencia de de longitud impar, pulsos PWM no simétricas, con lo que la
salida glitch-libre.

El acceso OCR2x Registro puede parecer complejo, pero este no es el caso. Cuando se habilita el doble buffer, la CPU tiene acceso al registro tampón
OCR2x, y si el doble búfer está deshabilitada la CPU accederá a la OCR2x directamente.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 175


2549Q-AVR-02/2014
20.5.1 Forzar salida Comparar

En los modos de generación de forma de onda no PWM, la salida del comparador partido puede ser forzado escribiendo un uno a la salida de la Fuerza de comparación (FOC2x)

bits. Obligando a comparar partido no va a establecer el indicador OCF2x o volver a cargar / borrar el contador de tiempo, pero el pasador OC2x se actualizará como si hubiera

ocurrido un verdadero partido de comparar (la COM2x1: configuración de los bits 0 definen si se establece el pasador OC2x, borra o conmutado) .

20.5.2 Comparar ajuste de bloqueo por TCNT2 Comentario

Todas las operaciones de escritura del procesador al Registro TCNT2 bloquearán cualquier comparar partido que se presenta en el siguiente ciclo de reloj temporizador, incluso

cuando se detiene el temporizador. Esta característica permite OCR2x a ser inicializado con el mismo valor que TCNT2 sin provocar una interrupción cuando se activa el reloj /

contador del temporizador.

20.5.3 Uso de la comparación de salida Unidad

Después de haber escrito TCNT2 en cualquier modo de operación bloqueará todos los partidos para comparar un ciclo de reloj temporizador, existen riesgos al
cambiar TCNT2 cuando se utiliza el canal de comparación de salida, independientemente de si el temporizador / contador está funcionando o no. Si el valor
escrito en TCNT2 es igual al valor OCR2x, se perdió el partido comparar, lo que resulta en la generación de formas de onda incorrecta. Del mismo modo, no
escribir el valor TCNT2 igual a fondo cuando el contador es de conteo regresivo.

La configuración de la OC2x se debe realizar antes de la Dirección Registro de datos para el pin del puerto de salida. La forma más sencilla de establecer el

valor OC2x es utilizar la salida de la Fuerza de comparación (FOC2x) bit de selección en el modo Normal. El Registro OC2x mantiene su valor, incluso

cuando se cambia entre los modos de forma de onda Generación. Tenga en cuenta que el COM2x1: 0 bits no se doble búfer junto con el valor de

comparación. Cambio de la COM2x1: 0 bits entrarán en vigor inmediatamente.

20.6 Comparar Unidad de salida Partido

El modo de salida de comparación (COM2x1: 0) bits tienen dos funciones. El generador de forma de onda utiliza el COM2x1: 0 bits para definir el estado de
comparación de salida (OC2x) en el siguiente partido comparar. También, el COM2x1: 0 bits de control de la fuente de salida pin OC2x. Figura 20-7 en la página
177 muestra un esquema simplificado de la lógica afectada por la COM2x1: ajuste de 0 bits. El I / O Registros, de E / S bits, e I pines de E / S en la figura se
muestran en negrita. Sólo las partes de la I general de E / S del puerto de registros de control (DDR y PORT) que se ven afectados por el COM2x1: 0 bits se
muestra. Cuando se hace referencia al estado OC2x, la referencia es para el OC2x registro interno, no el pasador OC2x.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 176


2549Q-AVR-02/2014
La Figura 20-7. Comparar Unidad de salida del partido, Esquema

COMnx1

COMnx0 Generador de
DQ
FOCnx forma de onda

1
OCnx
OCnx Pin
0

BUS DE DATOS
PUERTO

DQDQ

DDR
CLK I / O

La función de puerto de E / S generales se anula por la salida de comparación (OC2x) desde el generador de forma de onda si cualquiera de la COM2x1: se establecen los bits

0. Sin embargo, la dirección pin OC2x (de entrada o de salida) está siendo controlada por la dirección de los datos Register (DDR) para la espiga puerto. El registro de bits de

dirección de los datos para el pasador OC2x (DDR_OC2x) debe configurarse como salida antes de que el valor OC2x es visible en el pin. La función de anulación puerto es

independiente del modo de forma de onda Generación.

El diseño de la lógica pin de salida de comparación permite la inicialización del estado OC2x antes de habilitar la salida. Tenga en cuenta que algunos COM2x1: ajustes de
0 bits están reservados para determinados modos de funcionamiento. Ver “Registro Descripción” en la página 182.

20.6.1 Comparación de Modo de salida de forma de onda y Generación

El generador de forma de onda utiliza el COM2x1: 0 bits diferente en modos normal, CTC, y PWM. Para todos los modos, el establecimiento de la COM2x1: 0 = 0 indica

al generador de forma de onda que ninguna acción en el Registro OC2x se va a realizar en el próximo partido comparar. Para comparar las acciones de salida en el

PWM no se refieren a los modos Tabla 20-5 en la página 183 . Para el modo PWM rápido, consulte Tabla 20-6 en la página 183 , Y por PWM de fase correcta se refiere a Tabla

20-7 en la página 184 . Un cambio de la COM2x1: Estado 0 bits tendrá efecto en el primer partido después de comparar los bits se escriben. Para los modos nonPWM,

la acción puede ser forzada a tener efecto inmediato mediante el uso de los bits estroboscópicas FOC2x.

20.7 temporizador / contador diagramas de temporización

Las siguientes figuras muestran el temporizador / contador en modo síncrono, y el reloj temporizador (CLK T2) por lo tanto, se muestra como un reloj de señal de habilitación. En el

modo asíncrono, CLK I / O debe ser reemplazado por el reloj temporizador / contador oscilador. Las cifras incluyen información sobre cuándo se establecen las banderas de

interrupción. Figura 20-8 en la página 178 contiene datos de temporización para el funcionamiento básico del temporizador / contador. La figura muestra la secuencia de cuenta

cerca del valor MAX en todos los modos que no sean el modo PWM de fase correcta.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 177


2549Q-AVR-02/2014
La Figura 20-8. Temporizador / contador Diagrama de temporización, sin preescala

tovn I / O

CLK Tennesse
(CLK I / O / 1)

TCNTn MAX - 1 MAX FONDO BOTTOM + 1

CLK

Figura 20-9 muestra los mismos datos de tiempo, pero con el prescaler habilitado.

La Figura 20-9. Temporizador / contador Diagrama de temporización, la de divisor (f clk_I / O / 8)

CLK I / O

CLK Tennesse
(CLK I / O / 8)

TCNTn MAX - 1 MAX FONDO BOTTOM + 1

tovn

Figura 20-10 muestra la configuración de OCF2A en todos los modos excepto el modo CTC.

Figura 20-10. Temporizador / contador Diagrama de temporización, Ajuste de OCF2A, con prescaler (f clk_I / O / 8)

CLK I / O

CLK Tennesse
(CLK I / O / 8)

TCNTn OCRnx - 1 OCRnx OCRnx + 1 OCRnx + 2

OCRnx OCRnx Valor

OCFnx

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 178


2549Q-AVR-02/2014
Figura 20-11 muestra la configuración de OCF2A y la limpieza de TCNT2 en el modo de CTC.

Figura 20-11. Temporizador / contador Diagrama de temporización, Borrar temporizador en el modo de ajuste de comparación, con el prescaler (f clk_I / O / 8)

CLK I / O

CLK Tn
(CLK I / O / 8)

TOP - 1 PARTE SUPERIOR FONDO BOTTOM + 1


(CTC)

TCNTn
PARTE SUPERIOR

OCRnx

OCFnx

20,8 operación asincrónica de temporizador / Counter2

Cuando Timer / Counter2 opera de forma asíncrona, algunas consideraciones deben tomarse.

• Advertencia: Al cambiar entre clocking asíncronos y síncronos de temporizador / Counter2, el temporizador Registros TCNT2, OCR2x, y TCCR2x
podría estar dañado. Un procedimiento seguro para la conmutación de la fuente de reloj es:

1. Deshabilitar el temporizador / Counter2 interrumpe en la limpieza de OCIE2x y TOIE2.

2. Seleccione la fuente de reloj, ajuste el AS2 según corresponda.

3. escribir nuevos valores en TCNT2, OCR2x y TCCR2x.

4. Para cambiar a la operación asincrónica: Esperar a que TCN2UB, OCR2xUB y TCR2xUB.

5. Banderas cero el temporizador / Counter2 interrupción.

6. habilitar las interrupciones, si es necesario.

• La frecuencia de reloj de la CPU principal debe ser más 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 sellado después de dos bordes
positivos en TOSC1. El usuario no debe escribir un nuevo valor antes de que el contenido del registro temporal se han transferido a su destino. Cada
uno de los cinco registros mencionados tienen su registro temporal individual, lo que significa que, por ejemplo, escribiendo a TCNT2 no molestar a una
escritura OCR2x en curso. Para detectar que una transferencia al registro de destino ha tenido lugar, el registro de estado asíncrona - ASSR se ha
implementado.

• Al entrar de ahorro de energía o modo de reducción de ruido del ADC después de haber escrito a TCNT2, OCR2x o TCCR2x, el usuario debe esperar hasta que el
registro se ha actualizado por escrito si el temporizador / Counter2 se utiliza para despertar el dispositivo. De lo contrario, la MCU entrará en modo de reposo antes
de que los cambios sean efectivos. Esto es particularmente importante si se utiliza cualquiera de la salida Comparación2 interrupción para despertar el dispositivo, ya
que la comparación de salida función se desactiva durante la escritura de OCR2x o TCNT2. Si el ciclo de escritura no ha terminado, y el MCU entra en modo de
reposo antes de que los bits correspondientes rendimientos OCR2xUB a cero, el dispositivo nunca recibirá un partido comparar interrumpe, y el MCU no se despierta.

• Si el temporizador / Counter2 se utiliza para despertar el dispositivo a partir de ahorro de energía o modo de reducción de ruido del ADC, se deben tomar precauciones
si el usuario quiere volver a entrar en uno de estos modos: La lógica de interrupción necesita un ciclo TOSC1 a ponerse a cero. Si el tiempo entre despertador y el
modo de suspensión re-entrada es inferior a un ciclo de TOSC1, no se producirá la interrupción, y el dispositivo dejará de despertar. Si el usuario está en duda si el
tiempo antes de volver a entrar de ahorro de energía o el modo de reducción de ruido del ADC es suficiente, el siguiente algoritmo se puede utilizar para asegurarse de
que ha transcurrido un ciclo TOSC1:

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 179


2549Q-AVR-02/2014
1. Escribir un valor de TCCR2x, TCNT2 o OCR2x.

2. Esperar hasta que la correspondiente bandera de ocupado Actualización en ASSR vuelve a cero.

3. Introduzca de ahorro de energía o el modo de reducción de ruido del ADC.

• Cuando se selecciona la operación asincrónica, el oscilador de 32,768 kHz para el Temporizador / Counter2 siempre está en funcionamiento, excepto en los modos de
espera de alimentación hacia abajo y. Después de una de reinicio de encendido o de atención desde el modo de espera al apagar o, el usuario debe ser consciente del
hecho de que este oscilador puede llegar a tardar hasta un segundo para estabilizar. Se aconseja al usuario que esperar por lo menos un segundo antes de usar
temporizador / Counter2 después del encendido o activación desde el modo de espera al apagar o. deben tenerse en cuenta los contenidos de todos los registros del
temporizador / Counter2 perdida después de una llamada desde el modo de espera al apagar o debido a la señal de reloj inestable en el arranque, no importa si el
oscilador está en uso o una señal de reloj se aplica a la pin TOSC1.

• Descripción del despertar de ahorro de energía o el modo de reducción de ADC ruido cuando el temporizador se sincroniza de forma asíncrona: Cuando se cumple
la condición de interrupción, se inicia el proceso de despertador en el siguiente ciclo del reloj temporizador, es decir, el temporizador es siempre avanzada por al
menos una antes de que el procesador puede leer el valor del contador. Después de despertar, el MCU se detiene durante cuatro ciclos, se ejecuta la rutina de
interrupción, y reanuda la ejecución de la instrucción siguiente SLEEP.

• Lectura del Registro TCNT2 poco después de la reactivación a partir de ahorro de energía puede dar un resultado incorrecto. Desde TCNT2 es sincronizado
en el reloj TOSC asíncrono, la lectura TCNT2 debe hacerse a través de un registro sincronizado con el dominio interno de reloj I / O. La sincronización se
realiza para cada borde TOSC1 naciente. Al despertar del modo de ahorro de energía, y el reloj de E / S (CLK I / O) vuelve a ser activo, TCNT2 leerá como el
valor anterior (antes de entrar en el sueño), hasta el siguiente flanco ascendente TOSC1. La fase del reloj TOSC después de despertar de la energía en modo
de ahorro es esencialmente impredecible, ya que depende de la hora del despertador. El procedimiento recomendado para la lectura TCNT2 es, pues, de la
siguiente manera:

1. Escribir cualquier valor a cualquiera de los registros o OCR2x TCCR2x.

2. Espere a que la correspondiente bandera de ocupado de actualización que se solucione.

3. Lea TCNT2.

• Durante el funcionamiento asíncrono, la sincronización de las Banderas de interrupción para el temporizador asíncrono toma tres ciclos de procesador más un ciclo de
temporizador. Por consiguiente, el temporizador se hace avanzar por al menos una antes de que el procesador puede leer el valor del temporizador y la configuración
de la bandera de interrupción. El pasador de comparación de salida se cambia en el reloj temporizador y no se sincroniza con el reloj del procesador.

20.9 temporizador / contador de divisor

Figura 20-12. Prescaler de temporizador / Counter2

CLK I / O
CLK T2S
10-BIT T / C pre-escalador
Claro
TOSC1
CLK T2S / 8

CLK T2S / 64

CLK T2S / 128

CLK T2S / 256

CLK T2S / 1024


CLK T2S / 32

AS2

PSRASY
0

CS20
CS21
CS22

FUENTE DEL TEMPORIZADOR / RELOJ COUNTER2

CLK T2

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 180


2549Q-AVR-02/2014
La fuente de reloj del temporizador / Counter2 se llama CLK T2S. CLK T2S es por defecto conectado al sistema principal I / O de reloj clk yo O. Al establecer el bit de AS2
en ASSR, temporizador / Counter2 se sincroniza de forma asíncrona desde el pin TOSC1. Esto permite el uso del temporizador / Counter2 como un contador de
tiempo real (RTC). Cuando se establece AS2, pasadores TOSC1 y TOSC2 están desconectados de puerto C. Un cristal se pueden conectar entre los pasadores
TOSC1 y TOSC2 para servir como una fuente de reloj independiente para Timer / Counter2. El oscilador está optimizado para el uso con un cristal de 32,768
kHz. Al establecer el bit EXCLK en el ASSR, un reloj externo de 32 kHz se puede aplicar. Ver “ASSR - asíncrono Registro de Estado” en la página 187 para
detalles.

Para el temporizador / Counter2, las posibles selecciones preescalado son: CLK T2S / 8, clk T2S / 32, clk T2S / 64, clk T2S / 128, CLK T2S / 256, y clk T2S / 1024. Además, clk T2S así
como 0 (parada) puede ser seleccionado. El establecimiento del bit PSRASY en GTCCR restablece el pre-escalador. Esto permite al usuario operar con un
prescaler predecible.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 181


2549Q-AVR-02/2014
20.10 Registro Descripción

20.10.1 TCCR2A -Temporizador / Contador Registro de Control A

Poco 7 6 5 4 3 2 1 0

(0xB0) COM2A1 COM2A0 COM2B1 COM2B0 - - WGM21 WGM20 TCCR2A

Leer escribir R/W R/W R/W R/W R R R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Los bits 7: 6 - COM2A1: 0: Comparación de salida de ajuste de A Modo

Estos bits controlan el comportamiento de comparación de salida pin (OC2A). Si uno o ambos de la COM2A1: se establecen 0 los bits, la salida OC2A anula la

funcionalidad puerto normal del pin I / O está conectado a. Sin embargo, tenga en cuenta que el bit Dirección de Registro de datos (DDR) que corresponde a la

clavija OC2A debe ajustarse a fin de que el controlador de salida. Cuando OC2A está conectado a la clavija, la función de la COM2A1: 0 los bits depende de la

WGM22: ajuste de 0 bits.


Tabla 20-2 muestra el COM2A1: la funcionalidad de bit 0 cuando los WGM22: 0 bits se establecen en un modo normal o CTC (nonPWM).

Tabla 20-2. Comparación de Modo de salida, de modo que no PWM

COM2A1 COM2A0 Descripción

0 0 la operación del puerto normal, OC2A desconectado

0 1 Alternar OC2A el Partido Comparar

1 0 Claro OC2A el Partido Comparar

1 1 Establecer OC2A el Partido Comparar

Tabla 20-3 muestra el COM2A1: la funcionalidad de bit 0 cuando los WGM21: 0 bits se establecen en modo PWM rápido.

Tabla 20-3. Comparación de Modo de salida, PWM de modo rápido ( 1)

COM2A1 COM2A0 Descripción

0 0 la operación del puerto normal, OC2A desconectado

WGM22 = 0: Normal Operación Puerto, OC2A desconectado


0 1
WGM22 = 1: Activar el ajuste de OC2A Comparar

Claro OC2A el Partido de comparación, establecer OC2A en la parte inferior


1 0
(Modo no inversora)

Establecer OC2A el Partido de comparación, OC2A clara en la parte inferior


1 1
(Modo invirtiendo)

Nota: 1. Un caso especial ocurre cuando OCR2A es igual TOP y COM2A1 se establece. En este caso, el ajuste de comparación se ignora, pero el conjunto o transparente se realiza en la
parte inferior. Ver “PWM de modo rápido” en la página 173 para más detalles.

Tabla 20-4 en la página 183 muestra el COM2A1: la funcionalidad de bit 0 cuando los WGM22: 0 bits se establecen en fase de modo PWM correcta.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 182


2549Q-AVR-02/2014
Tabla 20-4. Comparación de Modo de salida, la fase PWM de modo correcto ( 1)

COM2A1 COM2A0 Descripción

0 0 la operación del puerto normal, OC2A desconectado

WGM22 = 0: Normal Operación Puerto, OC2A desconectado


0 1
WGM22 = 1: Activar el ajuste de OC2A Comparar

Claro OC2A el Partido de comparación, cuando hasta el conteo Establecer OC2A el


1 0
Partido de comparación cuando se de cuenta descendente

Establecer OC2A el Partido de comparación cuando arriba-contando Claro OC2A el


1 1
Partido de comparación cuando se de cuenta descendente

Nota: 1. Un caso especial ocurre cuando OCR2A es igual TOP y COM2A1 se establece. En este caso, el ajuste de comparación se ignora, pero el conjunto o transparente se realiza en la
parte superior. Ver “Fase correcta PWM de modo” en la página 173 para más detalles.

• Los bits 5: 4 - COM2B1: 0: Comparación de ajuste de Modo de salida B

Estos bits controlan el comportamiento de comparación de salida pin (OC2B). Si uno o ambos de la COM2B1: se establecen 0 los bits, la salida OC2B anula la

funcionalidad puerto normal del pin I / O está conectado a. Sin embargo, tenga en cuenta que el bit Dirección de Registro de datos (DDR) que corresponde a la

clavija OC2B debe ajustarse a fin de que el controlador de salida. Cuando OC2B está conectado a la clavija, la función de la COM2B1: 0 bits depende de la

WGM22: ajuste de 0 bits.


Tabla 20-5 muestra el COM2B1: la funcionalidad de bit 0 cuando los WGM22: 0 bits se establecen en un modo normal o CTC (nonPWM).

Tabla 20-5. Comparación de Modo de salida, de modo que no PWM

COM2B1 COM2B0 Descripción

0 0 la operación del puerto normal, OC2B desconectado

0 1 Alternar OC2B el Partido Comparar

1 0 Claro OC2B el Partido Comparar

1 1 Establecer OC2B el Partido Comparar

Tabla 20-6 muestra el COM2B1: la funcionalidad de bit 0 cuando los WGM22: 0 bits se establecen en modo PWM rápido.

Tabla 20-6. Comparación de Modo de salida, PWM de modo rápido ( 1)

COM2B1 COM2B0 Descripción

0 0 la operación del puerto normal, OC2B desconectado

0 1 Reservado

Claro OC2B el Partido de comparación, establecer OC2B en la parte inferior


1 0
(Modo no inversora)

Establecer OC2B el Partido de comparación, OC2B clara en la parte inferior


1 1
(Modo invirtiendo)

Nota: 1. Un caso especial ocurre cuando OCR2B es igual TOP y COM2B1 se establece. En este caso, el ajuste de comparación se ignora, pero el conjunto o transparente se realiza en la
parte inferior. Ver “PWM de modo rápido” en la página 173 para más detalles.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 183


2549Q-AVR-02/2014
Tabla 20-7 muestra el COM2B1: la funcionalidad de bit 0 cuando los WGM22: 0 bits se establecen en fase de modo PWM correcta.

Tabla 20-7. Comparación de Modo de salida, la fase PWM de modo correcto ( 1)

COM2B1 COM2B0 Descripción

0 0 la operación del puerto normal, OC2B desconectado

0 1 Reservado

Claro OC2B el Partido de comparación, cuando hasta el conteo Establecer OC2B el


1 0
Partido de comparación cuando se de cuenta descendente

Establecer OC2B el Partido de comparación cuando arriba-contando Claro OC2B el


1 1
Partido de comparación cuando se de cuenta descendente

Nota: 1. Un caso especial ocurre cuando OCR2B es igual TOP y COM2B1 se establece. En este caso, el ajuste de comparación se ignora, pero el conjunto o transparente se realiza en la
parte superior. Ver “Fase correcta PWM de modo” en la página 173 para más detalles.

• Los bits 3, 2 - Res: Bits Reservados

Estos bits se reservan los bits y siempre lee como cero.

• Los bits 1: 0 - WGM21: 0: Modo de generación de formas de onda

Combinado con el WGM22 bit encontró en el Registro TCCR2B, estos bits de control de la secuencia de conteo del contador, la fuente para el máximo valor
de contador (TOP), y qué tipo de generación de forma de onda para ser utilizado, ver
Tabla 20-8 . Modos de operación soportados por la unidad de temporizador / contador son: Modo normal (contador), Borrar temporizador en el modo de ajuste de Comparación

(CTC), y dos tipos de modos de modulación por ancho de pulso (PWM) (véase “Modos de funcionamiento” en la página 171 ).

Tabla 20-8. Modo de generación de formas de onda Bit Descripción

Temporizador / modo de contador de Actualización de Bandera TOV


Ubicado en ( 1) (2)
Modo WGM2 WGM1 WGM0 Operación PARTE SUPERIOR OCRx en

0 0 0 0 Normal 0xFF Inmediato MAX

1 0 0 1 PWM, fase correcta 0xFF PARTE SUPERIOR FONDO

2 0 1 0 CTC OCRA Inmediato MAX

3 0 1 1 PWM rápido 0xFF FONDO MAX

4 1 0 0 Reservado - - -

5 1 0 1 PWM, fase correcta OCRA PARTE SUPERIOR FONDO

6 1 1 0 Reservado - - -

7 1 1 1 PWM rápido OCRA FONDO PARTE SUPERIOR

Notas: 1. MAX = 0xFF.


2. BOTTOM = 0x00.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 184


2549Q-AVR-02/2014
20.10.2 TCCR2B - temporizador / contador Registro de Control B

Poco 7 6 5 4 3 2 1 0

(0xB1) FOC2A FOC2B - - WGM22 CS22 CS21 CS20 TCCR2B

Leer escribir W W R R R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 7 - FOC2A: Forzar salida comparar una


El bit FOC2A sólo se activa cuando los bits WGM especifican un modo no PWM.

Sin embargo, para asegurar la compatibilidad con los dispositivos en el futuro, este bit debe ponerse a cero cuando TCCR2B se escribe cuando se trabaja en modo
PWM. Al escribir un uno lógico en el bit FOC2A, una inmediata Comparar Partido es forzado en la unidad de forma de onda Generación. La salida OC2A se cambia
de acuerdo a su COM2A1: 0 bits de ajuste. Tenga en cuenta que el bit FOC2A se implementa como una luz estroboscópica. Por lo tanto es el valor presente en el
COM2A1: 0 bits que determina el efecto de los obligados comparar.

Una luz estroboscópica FOC2A no generará ninguna interrupción, ni va a cero el temporizador en el modo CTC usando OCR2A como TOP. El bit FOC2A siempre se

lee como cero.

• Bit 6 - FOC2B: Forzar salida Comparar B


El bit FOC2B sólo se activa cuando los bits WGM especifican un modo no PWM.

Sin embargo, para asegurar la compatibilidad con los dispositivos en el futuro, este bit debe ponerse a cero cuando TCCR2B se escribe cuando se trabaja en modo
PWM. Al escribir un uno lógico en el bit FOC2B, una inmediata Comparar Partido es forzado en la unidad de forma de onda Generación. La salida OC2B se cambia de
acuerdo a su COM2B1: Configuración de 0 bits. Tenga en cuenta que el poco FOC2B se implementa como una luz estroboscópica. Por lo tanto es el valor presente en
el COM2B1: 0 bits que determina el efecto de los obligados comparar.

Una luz estroboscópica FOC2B no generará ninguna interrupción, ni va a cero 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 se reservan los bits y siempre lee como cero.

• Bit 3 - WGM22: Modo de forma de onda Generación

Véase la descripción en el “TCCR2A -Temporizador / Contador Un registro de control” en la página 182 .

• Bit 2: 0 - CS22: 0: Selección de reloj

Los tres bits de selección de reloj seleccionar la fuente de reloj para ser utilizado por el temporizador / contador, ver Tabla 20-9 .

Tabla 20-9. Selección de reloj Bit Descripción

CS22 CS21 CS20 Descripción

0 0 0 Sin fuente de reloj (temporizador / contador parado)

0 0 1 CLK T2S / ( Sin preescala)

0 1 0 CLK T2S / 8 (De prescaler)

0 1 1 CLK T2S / 32 (De prescaler)

1 0 0 CLK T2S / 64 (De prescaler)

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 185


2549Q-AVR-02/2014
Tabla 20-9. Selección de reloj de bits Descripción (Continuación)

CS22 CS21 CS20 Descripción

1 0 1 CLK T2S / 128 (De prescaler)

1 1 0 CLK T2S / 256 (De prescaler)

1 1 1 CLK T2S / 1024 (De prescaler)

Si se utilizan los modos de pines externos para el temporizador / Counter0, las transiciones en el reloj voluntad pin T0 el contador incluso si el pin es configurado como una salida.

Esta característica permite que el software de control de la cuenta.

20.10.3 TCNT2 - temporizador / contador Registro

Poco 7 6 5 4 3 2 1 0

(0xB2) TCNT2 [7: 0] TCNT2

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

El temporizador / contador Registro da acceso directo, tanto para las operaciones de lectura y escritura, a la unidad de temporizador / contador contador de 8 bits.
Escribiendo a los TCNT2 Registro bloques (elimina) el Partido Comparar en el siguiente reloj temporizador. La modificación del contador (TCNT2), mientras que el contador
está en funcionamiento, presenta un riesgo de perder un partido de comparación entre TCNT2 y los Registros OCR2x.

20.10.4 OCR2A - Registro de comparación de salida A

Poco 7 6 5 4 3 2 1 0

(0xB3) OCR2A [7: 0] OCR2A

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

La comparación de salida Registro Un contiene un valor de 8 bits que se compara de forma continua con el valor del contador (TCNT2). Un fósforo se puede utilizar para
generar una comparación de salida de interrupción, o para generar una salida de forma de onda en el pasador OC2A.

20.10.5 OCR2B - Registro de comparación de salida B

Poco 7 6 5 4 3 2 1 0

(0xB4) OCR2B [7: 0] OCR2B

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

La comparación de salida Registro B contiene un valor de 8 bits que se compara de forma continua con el valor del contador (TCNT2). Un fósforo se puede utilizar para
generar una comparación de salida de interrupción, o para generar una salida de forma de onda en el pasador OC2B.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 186


2549Q-AVR-02/2014
20.10.6 ASSR - asíncrono registro de estado

Poco 7 6 5 4 3 2 1 0

(0xB6) - EXCLK AS2 TCN2UB OCR2AUB OCR2BUB TCR2AUB TCR2BUB ASSR

Leer escribir R R/W R/W R R R R R

Valor inicial 0 0 0 0 0 0 0 0

• Bit 6 - EXCLK: Entrada de habilitación de reloj externo

Cuando EXCLK se escribe en uno, y se selecciona de reloj asíncrono, la memoria intermedia de entrada de reloj externo está activado y un reloj externo se puede
introducir en el temporizador oscilador 1 (TOSC1) pin en lugar de un cristal de 32 kHz. Escrito a EXCLK se debe hacer antes de que se selecciona la operación
asincrónica. Tenga en cuenta que el oscilador de cristal sólo se ejecuta cuando este bit es cero.

• Bit 5 - AS2: asíncrono temporizador / Counter2


Cuando AS2 está escrito a cero, Timer / Counter2 es sincronizado desde el I / reloj O, clk I / O. Cuando AS2 se escribe en uno, Timer / Counter2 es sincronizado
a partir de un oscilador de cristal conectado al pin de temporizador oscilador 1 (TOSC1). Cuando se cambia el valor de AS2, el contenido de TCNT2, OCR2A,
OCR2B, TCCR2A y TCCR2B podrían estar dañadas.

• Bit 4 - TCN2UB: Actualización del temporizador / Counter2 Ocupado

Cuando Temporizador / Counter2 funciona de forma asíncrona y TCNT2 está escrito, esta broca se establece. Cuando TCNT2 se ha actualizado desde el registro
de almacenamiento temporal, este bit se borra por el hardware. Un cero lógico en este bit indica que TCNT2 está listo para ser actualizado con un nuevo valor.

• Bit 3 - OCR2AUB: comparación de salida register2 actualización Ocupado

Cuando Temporizador / Counter2 funciona de forma asíncrona y OCR2A está escrito, esta broca se establece. Cuando OCR2A se ha actualizado desde el registro
de almacenamiento temporal, este bit se borra por el hardware. Un cero lógico en este bit indica que OCR2A está listo para ser actualizado con un nuevo valor.

• Bit 2 - OCR2BUB: comparación de salida register2 actualización Ocupado

Cuando Temporizador / Counter2 funciona de forma asíncrona y OCR2B está escrito, esta broca se establece. Cuando OCR2B se ha actualizado desde el registro
de almacenamiento temporal, este bit se borra por el hardware. Un cero lógico en este bit indica que OCR2B está listo para ser actualizado con un nuevo valor.

• Bit 1 - TCR2AUB: Temporizador / Contador de control register2 actualización Ocupado

Cuando Temporizador / Counter2 funciona de forma asíncrona y TCCR2A está escrito, esta broca se establece. Cuando TCCR2A se ha actualizado desde el
registro de almacenamiento temporal, este bit se borra por el hardware. Un cero lógico en este bit indica que TCCR2A está listo para ser actualizado con un nuevo
valor.

• Bit 0 - TCR2BUB: Temporizador / Contador de control register2 actualización Ocupado

Cuando Temporizador / Counter2 funciona de forma asíncrona y TCCR2B está escrito, esta broca se establece. Cuando TCCR2B se ha actualizado desde el
registro de almacenamiento temporal, este bit se borra por el hardware. Un cero lógico en este bit indica que TCCR2B está listo para ser actualizado con un nuevo
valor.

Si una escritura se lleva a cabo con cualquiera de los cinco temporizador / Counter2 Registros mientras que su actualización ocupado indicador está activado, el valor actualizado podrían

corromperse y causar una interrupción involuntaria que se produzca.

Los mecanismos para la lectura TCNT2, OCR2A, OCR2B, TCCR2A y TCCR2B son diferentes. Al leer TCNT2, se lee el valor actual del temporizador. Al leer
OCR2A, OCR2B, TCCR2A y TCCR2B el valor en el registro de almacenamiento temporal se lee.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 187


2549Q-AVR-02/2014
20.10.7 TIMSK2 - Temporizador / Counter2 registro de máscara de interrupción

Poco 7 6 5 4 3 2 1 0

(0x70) - - - - - OCIE2B OCIE2A TOIE2 TIMSK2

Leer escribir R R R R R R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 2 - OCIE2B: Temporizador / Counter2 comparación de salida de ajuste de habilitación de interrupción B

Cuando el bit OCIE2B se escribe en uno y Registro se establece el bit I en el estado (uno), el temporizador / Counter2 Comparar B Partido de interrupción está habilitada. La

interrupción correspondiente se ejecuta si se produce una coincidencia en la comparación de temporizador / Counter2, es decir, cuando el bit OCF2B se encuentra en el temporizador /

contador 2 de interrupción de la bandera de Registro - TIFR2.

• Bit 1 - OCIE2A: Temporizador / Counter2 comparación de salida coincida con una habilitación de interrupción

Cuando el bit OCIE2A se escribe en uno y el bit I en el Registro de Estado está establecido (uno), el temporizador / Counter2 Comparar coinciden con una interrupción está habilitada. La

interrupción correspondiente se ejecuta si se produce una coincidencia en la comparación de temporizador / Counter2, es decir, cuando el bit OCF2A se encuentra en el temporizador /

contador 2 de interrupción de la bandera de Registro - TIFR2.

• Bit 0 - TOIE2: Temporizador / Counter2 desbordamiento de habilitación de interrupción

Cuando el bit TOIE2 se escribe en uno y se establece el bit I en el registro de estado (uno), la interrupción del temporizador / Counter2 desbordamiento está activado. La

interrupción correspondiente se ejecuta si se produce un desbordamiento en el Timer / Counter2, es decir, cuando el bit TOV2 se establece en la bandera de registro del

temporizador / Counter2 Interrupt - TIFR2.

20.10.8 TIFR2 - Temporizador / Counter2 interrupción de la bandera de Registro

Poco 7 6 5 4 3 2 1 0

0x17 (0x37) - - - - - OCF2B OCF2A TOV2 TIFR2

Leer escribir R R R R R R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 2 - OCF2B: comparación de salida de la bandera 2 B

se establece el bit OCF2B (uno) cuando un partido de comparar se produce entre el temporizador / Counter2 y los datos en OCR2B - comparación de salida register2.
OCF2B se borra por hardware al ejecutar el correspondiente vector de manejo de interrupciones. Como alternativa, se borra OCF2B escribiendo un uno lógico a la
bandera. Cuando el bit I en SREG, OCIE2B (temporizador / Counter2 Comparar coincide con habilitación de interrupción), y se establecen OCF2B (uno), el
temporizador / Counter2 Comparar partido de interrupción se ejecuta.

• Bit 1 - OCF2A: Bandera de comparación de salida 2 A

se establece el bit OCF2A (uno) cuando un partido de comparar se produce entre el temporizador / Counter2 y los datos en OCR2A - comparación de salida register2.
OCF2A se borra por hardware al ejecutar el correspondiente vector de manejo de interrupciones. Como alternativa, se borra OCF2A escribiendo un uno lógico a la
bandera. Cuando el bit I en SREG, OCIE2A (temporizador / Counter2 Comparar coincide con habilitación de interrupción), y se establecen OCF2A (uno), el
temporizador / Counter2 Comparar partido de interrupción se ejecuta.

• Bit 0 - TOV2: Temporizador / Counter2 Bandera de desbordamiento

se establece el bit TOV2 (uno) cuando se produce un desbordamiento en el Timer / Counter2. TOV2 se borra por hardware al ejecutar el correspondiente vector de
manejo de interrupciones. Como alternativa, se borra TOV2 escribiendo un uno lógico a la bandera. Cuando el SREG I-bits, TOIE2A (Timer / Counter2 desbordamiento
de habilitación de interrupción), y se establecen TOV2 (uno), se ejecuta la interrupción de temporizador / Counter2 desbordamiento. En el modo PWM, este bit se
establece cuando Timer / Counter2 cambia sentido de contaje en 0x00.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 188


2549Q-AVR-02/2014
20.10.9 GTCCR - General de temporizador / contador Registro de Control

Poco 7 6 5 4 3 2 1 0

0x23 (0x43) TSM - - - - - PSRASY PSRSYNC GTCCR

Leer escribir R/W R R R R R R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 1 - PSRASY: de divisor temporizador de restablecimiento / Counter2

Cuando este bit es uno, el pre-escalador del temporizador / Counter2 se restablecerá. Este bit se borra normalmente inmediatamente por hardware. Si el bit se escribe
cuando Temporizador / Counter2 está funcionando en modo asíncrono, el bit seguirá siendo uno hasta que el pre-escalador se ha restablecido. El bit no se borrará por
hardware si se establece el bit de TSM. Consulte la descripción de la “Bit 7 - TSM: Temporizador / Contador Modo de sincronización” en la página 166 para una
descripción del modo de temporizador / contador de sincronización.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 189


2549Q-AVR-02/2014
21. SPI - Serial Peripheral Interface

El Ser ial Per ipheral Interface (SPI) El Al mínimos transferencia sincrónica de datos de alta velocidad entre los dispositivos ATmega640 /
1280/1281/2560/2561 y periféricas o entre varios dispositivos AVR. El ATmega640 / 1280/1281/2560/2561 SPI incluye las siguientes características:

• Full-duplex, de tres hilos de transferencia de datos síncrona


• Master o slave
• LSB Transferencia Primera o MSB First Data
• Siete programables Velocidad de bit
• Fin de la transmisión de la bandera de interrupción

• Protección contra escritura de la bandera de colisión

• La activación desde el modo inactivo

• Velocidad doble (2 CK /) Modo Maestro SPI

USART también se puede utilizar en el modo Maestro SPI, ver “USART en modo SPI” en la página 227 . El bit de Reducción de Potencia SPI, PRSPI, en “PRR0 -

Reducción de potencia 0 Registro” en la página 55 en la página 50 deben escribirse a cero para permitir que el módulo SPI.

La Figura 21-1. Diagrama de bloques del SPI ( 1)

DIVISOR /
2/4/8/16/32/64/128
SPI2X

SPI2X

Nota: 1. Consulte Figura 1-1 en la página 2 y Tabla 13-6 en la página 76 para la colocación pin SPI.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 190


2549Q-AVR-02/2014
La interconexión entre las CPU Master y Slave con SPI se muestra en la Figura 21-2 . El sistema consta de dos registros de desplazamiento, una Dakota del
Norte un generador de reloj maestro. El SPI maestro inicia el ciclo de comunicación cuando se tira bajo el Esclavo Seleccionar pin SS del esclavo deseado.
Maestro y esclavo preparar los datos para ser enviados en sus respectivos registros de desplazamiento, y el maestro genera los impulsos de reloj requeridas en
la línea SCK para intercambiar datos. Los datos siempre se desplaza de maestro a esclavo en la salida master - esclavo en, MOSI, línea y de esclavo a maestro
en el Master In - Esclavo O Utah , MISO, línea. Después de cada paquete de datos, el Maestro sincronizará el Slave tirando alta el Slave Select, SS, la línea.

Cuando se configura como un maestro, la interfaz SPI no tiene control automático de la línea de SS. Esto debe ser manejado por el software de usuario antes de que
la comunicación se puede iniciar. Cuando se hace esto, escribir un byte en el registro de datos SPI se inicia el generador de reloj SPI, y el hardware cambia los ocho
bits en el esclavo. Después de cambiar un byte, el generador de reloj SPI se detiene, la configuración final de marca de transmisión (SPIF). Si el SPI Interrupt Enable
bit (SPIE) en el Registro SPCR se establece, se solicita una interrupción. El maestro puede co ntinue para cambiar el siguiente byte escribiendo en SPDR, o indica el
fin de paquete tirando alta del Esclavo Select, la línea SS. El último byte entrante se mantiene en el registro de memoria intermedia para su uso posterior.

Cuando se configura como un esclavo, la interfaz SPI permanecerá dormir con MISO tri-declarado, siempre y cuando el pasador SS es impulsado alta. En este estado, el
software puede actualizar el contenido del XX mi SPI registro de datos, SPDR, pero los datos no serán desplazados por los pulsos de reloj de entrada en el pin SCK hasta
que el pasador SS es conducido bajo. Como un byte ha sido completamente cambiado, al final de la bandera de transmisión, SPIF se establece. Si el bit de habilitación de
interrupción SPI, SPIE, en el Registro PEACC se establece, se solicita una interrupción. El esclavo puede seguir colocando los nuevos datos a ser enviados al SPDR antes
de leer los datos de entrada. El último byte entrante se mantiene en el registro de memoria intermedia para su uso posterior.

La Figura 21-2. SPI Interconexión maestro-esclavo

SHIFT
HABILITAR

El sistema está sola tamponada en la dirección de transmisión y de doble memoria intermedia en la dirección de recepción. Esto significa que los bytes que se transmiten
no puede ser escrita en el registro de datos SPI antes de completar todo el ciclo de desplazamiento. Cuando se reciben datos, sin embargo, un carácter recibido debe ser
leído desde el registro de datos SPI antes de que el siguiente carácter se ha desplazado por completo. De lo contrario, se pierde el primer byte.

En el modo de SPI Slave, la lógica de control muestreará la señal entrante de la clavija de SCK. Para garantizar un muestreo correcto de la señal de reloj, los
períodos mínimos de baja y alta deben ser:

Bajo Época: Más de dos ciclos de reloj de la CPU.

Alta periodo: Más de dos ciclos de reloj de la CPU.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 191


2549Q-AVR-02/2014
Cuando se habilita el SPI, la dirección de los datos de los pasadores MOSI, MISO, SCK, y SS se anula según
Tabla 21-1 . Para más detalles sobre las anulaciones de puertos automático, consulte “Funciones puerto alternativo” en la página 72 .

Tabla 21-1. SPI Pin anulaciones ( 1)

Alfiler Dirección, Maestro SPI Dirección, Slave SPI

MOSI Usuario definido Entrada

MISO Entrada Usuario definido

SCK Usuario definido Entrada

SS Usuario definido Entrada

Nota: 1. Ver “Funciones alternativas de Puerto B” en la página 76 para una descripción detallada de cómo definir la dirección del usuario
pines SPI definidos.

Los siguientes ejemplos de código muestran cómo inicializar el SPI como Maestro y cómo realizar una transmisión simple. DDR_SPI en los ejemplos debe ser
sustituido por el registro de dirección de los datos reales controlar los pines SPI. DD_MOSI, DD_MISO y DD_SCK deben ser reemplazados por los bits de
dirección de datos reales para estos pasadores. Por ejemplo, si se coloca en MOSI PB5 pin, reemplace DD_MOSI con DDB5 y DDR_SPI con DDRB.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 192


2549Q-AVR-02/2014
Ejemplo de código de montaje ( 1)

SPI_MasterInit:
; Establecer MOSI y SCK salida, toda la entrada de los demás

LDI R17, (1 << DD_MOSI) | (1 << DD_SCK)

afuera DDR_SPI, r17

; Habilitar SPI, Maestro, establecer la velocidad de reloj fck / 16

LDI R17, (1 << SPE) | (1 << MSTR) | (1 << SPR0)

afuera PEACC, r17

jubilado

SPI_MasterTransmit:
; Iniciar la transmisión de los datos (R16)
afuera SPDR, r16
Wait_Transmit:
; Espere a que la transmisión completa
sbis SPSR, SPIF
rjmp Wait_Transmit
jubilado

Ejemplo de código C ( 1)

vacío SPI_MasterInit ( vacío)


{
/ * Establecer MOSI y SCK de salida, todos los demás de entrada * / DDR_SPI = (1

<< DD_MOSI) | (1 << DD_SCK); / * Habilitar SPI, Maestro, establecer la velocidad de

reloj fck / 16 * / SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0); }

vacío SPI_MasterTransmit ( carbonizarse cData) {

/ * * Inicio de transmisión / SPDR =


cData;
/ * Espere a que la transmisión completa * /
mientras(!( SPSR y (1 << SPIF))); }

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 193


2549Q-AVR-02/2014
Los siguientes ejemplos de código muestran cómo inicializar el SPI como un esclavo y cómo realizar una recepción sencilla.

Ejemplo de código de montaje ( 1)

SPI_SlaveInit:
; Ponga la salida MISO, todos los demás de entrada

LDI r17, (1 << DD_MISO)


afuera DDR_SPI, r17;
Habilitar SPI
LDI r17, (1 << SPE)
afuera PEACC, r17

jubilado

SPI_SlaveReceive:
; Esperar a la recepción completa
sbis SPSR, SPIF
rjmp SPI_SlaveReceive; Leer los datos recibidos y
rentabilidad
en r16, SPDR
jubilado

Ejemplo de código C ( 1)

vacío SPI_SlaveInit ( vacío)


{
/ * Ajuste de salida MISO, todos los demás de entrada * /
DDR_SPI = (1 << DD_MISO); / * Activar SPI * / SPCR = (1 <<
SPE); }

carbonizarse SPI_SlaveReceive ( vacío)

{
/ * Espera para la recepción completa * /
mientras(!( SPSR y (1 << SPIF)));

/ * Retorno registro de datos * /


regreso SPDR; }

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 194


2549Q-AVR-02/2014
21.1 SS Pin Funcionalidad

21.1.1 Modo esclavo

Cuando el SPI se configura como un esclavo, el pasador Esclavo Select (SS) es siempre de entrada. Cuando SS se mantiene baja , t SPI que se activa, y el miso se convierte

en una salida si se ha configurado de modo por el usuario. Todos los demás pines son entradas. Cuando se acciona alta SS, todos los pines son entradas y XX mi SPI es

pasivo, lo que significa que no va a recibir los datos entrantes. Tenga en cuenta que la lógica SPI se restablecerá una vez que el pin SS es impulsado alta. El pasador de SS

es útil para pa ck et sincronización / byte para mantener el contador de bits síncrono esclavo con el generador de reloj maestro. Cuando el pin SS es excitada alta, el esclavo

SPI se restablecerá de inmediato el envío y recepción de lógica, y soltar cualquier dato parcialmente recibidas en el registro de desplazamiento.

Modo Maestro 21.1.2

Cuando el SPI está configurado como un Master (MSTR en SPCR está establecido), el usuario puede determinar la dirección de la clavija de SS. Si se configura como SS un la

producción, el pasador es un pin de salida general que no afecta el sistema SPI. Típicamente, el pasador estará conduciendo el pasador de SS de la SPI Slave.

Si SS se configura como una entrada, es preciso señalar alta para asegurar Maestro S operación PI. Si el pasador de SS es impulsado bajo por la circuitería periférica cuando
el SPI está configurado como un Maestro con el pasador de SS definido como una entrada, el sistema SPI interpreta esto como otro maestro seleccionando el SPI como
esclavo y comenzar a enviar los datos a la misma. Para evitar la contención del bus, el sistema SPI realiza las acciones siguientes:

1. El bit MSTR en SPCR se borra y el sistema SPI se convierte en un esclavo. Como resultado de la SPI convertirse en un esclavo, los pasadores MOSI y SCK se
convierten en insumos.

2. La bandera SPIF en SPSR se fija, y si se habilita la interrupción de SPI, y se establece el bit I en SREG, se ejecuta la rutina de interrupción.

transmisión SPI Así, impulsado por interrumpir cuando se utiliza en modo maestro, y existe una posibilidad de que SS es impulsado bajo, la interrupción debe comprobar

siempre que el bit MSTR todavía está establecido. Si el bit de MSTR ha sido aprobado por un esclavo de selección, debe ser establecido por el usuario para volver a habilitar

el modo maestro SPI.

21.1.3 Modos de Datos

Hay cuatro combinaciones de fase SCK y la polaridad con respecto a los datos de serie, que están determinadas por los bits de control CPHA y CPOL. Los formatos de
transferencia de datos SPI se muestran en la Figura 21-3 en la página 196 y Figura 21-4 en la página 196 . Los bits de datos se desplazan hacia fuera y aseguradas en en
los bordes opuestos de la señal SCK, asegurando tiempo suficiente para que las señales de datos se estabilice. Esto se ve claramente resumiendo Tabla 21-3 en la
página 197 y Tabla 21-4 en la página 197
en Tabla 21-2 .

Tabla 21-2. CPOL Funcionalidad

Leading Edge borde posterior Modo SPI

CPOL = 0, CPHA = 0 Muestra (Rising) Configuración (Falling) 0

CPOL = 0, CPHA = 1 Configuración (Rising) Muestra (Falling) 1

CPOL = 1, CPHA = 0 Muestra (Falling) Configuración (Rising) 2

CPOL = 1, CPHA = 1 Configuración (Falling) Muestra (Rising) 3

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 195


2549Q-AVR-02/2014
La Figura 21-3. Formato de transferencia SPI con ACSP = 0

SCK (CPOL = 0) Modo


0

Modo 2 I
EJEMPLO
PIN SCK
MOSI (CPOL = 1)
/ MISO
CAMBIAR PIN 0 MISO
CAMBIO 0 MOSI

SS

MSB primero (DORD = 0) LSB MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 LSB
primero (DORD = 1) LSB Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 MSB

La Figura 21-4. Formato Transfer SPI con CPHA = 1

SCK (CPOL = 0) Modo


1

Modo 3 I
EJEMPLO
PIN
MOSISCK (CPOL = 1)
/ MISO
CAMBIAR PIN 0 MISO
CAMBIO 0 MOSI

SS

MSB primero (DORD = 0) LSB MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 LSB
primero (DORD = 1) LSB Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 MSB

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 196


2549Q-AVR-02/2014
21.2 Registro Descripción

21.2.1 SPCR - Registro de Control SPI

Poco 7 6 5 4 3 2 1 0

0x2C (0x4C) SPIE SPE DORD MSTR CPOL ACSP SPR1 SPR0 SPCR

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 7 - SPIE: SPI habilitación de interrupción

Este bit de interrupción hace que el SPI para ser ejecutado si SPIF bit en el registro SPSR se establece y se establece el bit de interrupción si el Activación global en
SREG.

• Bit 6 - SPE: Habilitar SPI


Cuando el bit SPE se escribe en uno, el SPI está activada. Este bit debe establecerse para permitir a cualquier operación de SPI.

• Bit 5 - DORD: Orden de Datos

Cuando el bit DORD se escribe en uno, el LSB de la palabra de datos se transmite en primer lugar. Cuando el bit DORD

está escrito a cero, el MSB de la palabra de datos se transmite primero.

• Bit 4 - MSTR: Selección Maestro / Esclavo

Este bit selecciona el modo Maestro SPI cuando se escribe a uno, y el modo SPI esclavo cuando se escribe cero lógico. Si SS se configura 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 para establecer MSTR para volver a habilitar el modo

maestro SPI.

• Bit 3 - CPOL: Polaridad del Reloj

Cuando este bit se escribe en uno, SCK es alto cuando está inactivo. Cuando se escribe CPOL a cero, SCK es baja cuando está inactivo. Referirse a Figura 21-3 en
la página 196 y Figura 21-4 en la página 196 para un ejemplo. La funcionalidad se resume en CPOL
Tabla 21-3 .

Tabla 21-3. CPOL Funcionalidad

CPOL Leading Edge borde posterior

0 Creciente Que cae

1 Que cae Creciente

• Bit 2 - ACSP: Fase de reloj


Los ajustes de la broca Fase de reloj (ACSP) determinar si los datos se muestran en la (última) borde de ataque (primera) o al final de SCK. Referirse a Figura
21-3 en la página 196 y Figura 21-4 en la página 196 para un ejemplo. La funcionalidad se resume en CPOL Tabla 21-4 .

Tabla 21-4. Funcionalidad ACSP

ACSP Leading Edge borde posterior

0 Muestra Preparar

1 Preparar Muestra

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 197


2549Q-AVR-02/2014
• Los bits 1, 0 - SPR1, SPR0: SPI Velocidad de reloj Seleccione 1 y 0

Estos dos bits de control de la tasa de SCK del dispositivo configurado como un Maestro. SPR1 y SPR0 tienen ningún efecto sobre el esclavo. La relación
entre la SCK y la frecuencia de oscilador de reloj f osc se muestra en la Tabla 21-5 .

Tabla 21-5. Relación entre SCK y la frecuencia del oscilador

SPI2X SPR1 SPR0 SCK Frecuencia

0 0 0 F osc / 4

0 0 1 F osc / dieciséis

0 1 0 F osc / 64

0 1 1 F osc / 128

1 0 0 F osc / 2

1 0 1 F osc / 8

1 1 0 F osc / 32

1 1 1 F osc / 64

21.2.2 SPSR - SPI registro de estado

Poco 7 6 5 4 3 2 1 0

0x2D (0x4D) SPIF WCOL - - - - - SPI2X SPSR

Leer escribir R R R R R R R R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 7 - SPIF: SPI bandera de interrupción

Cuando una transferencia de serie es co mplete, la bandera SPIF se establece. se genera una interrupción si SPIE en PEACC se establece y las interrupciones globales están
habilitadas. Si SS es una entrada y es conducido bajo cuando el SPI está en modo maestro, esto también va a establecer el indicador SPIF. SPIF se borra por hardware al
ejecutar el correspondiente vector de manejo de interrupciones. Como alternativa, el bit SPIF se borra por primera lectura del estado de SPI Registre con juego SPIF, a
continuación, acceder al registro de datos SPI (SPDR).

• Bit 6 - WCOL: Escribir la bandera de colisión

El bit WCOL se fija si el registro de datos SPI (SPDR) se escribe durante una transmisión de datos. El bit WCOL (y el bit SPIF) se borran por primera lectura
del estado de SPI Registre con juego WCOL, y luego acceder al registro de datos SPI.

• Bit 5: 1 - Res: Bits Reservados


Estos bits se reservan los bits y siempre lee como cero.

• Bit 0 - SPI2X: Bit doble SPI velocidad


Cuando este bit es un uno lógico la velocidad SPI (Frecuencia SCK) escrito se duplicará cuando el SPI está en el modo Maestro (ver Tabla 21-5 ). Esto significa
que el período mínimo será de SCK dos períodos de reloj de la CPU. Cuando el SPI se configura como esclavo, el SPI sólo se garantiza para trabajar en f osc / 4
o inferior.

La interfaz SPI en el ATmega640 / 1280/1281/2560/2561 también se utiliza para la memoria del programa y la descarga o carga de EEPROM. Ver “Descarga
de serie” en la página 338 para la programación de serie y verificación.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 198


2549Q-AVR-02/2014
21.2.3 SPDR - SPI Registro de Datos

Poco 7 6 5 4 3 2 1 0

0x2E (0x4E) MSB LSB SPDR

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial X X X X X X X X Indefinido

El registro de datos SPI es una lectura / escritura de registro utilizado para la transferencia de datos entre el Registro de archivos y el cambio SPI Registro. Escribiendo en el

registro inicia la transmisión de datos. La lectura del registro hace que el registro de desplazamiento búfer de recepción para ser leído.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 199


2549Q-AVR-02/2014
22. USART

22.1 Características

• Plena operación dúplex (de serie independiente de recepción y transmisión Registros)


• Funcionamiento síncrono o asíncrono
• Maestro o esclavo Clocked Funcionamiento síncrono
• Generador de alta resolución velocidad de transmisión

• Soporta Frames serie con 5, 6, 7, 8, o 9 bits de datos y 1 o 2 bits de parada


• Par o impar generación de paridad y comprobación de paridad compatible con el hardware

• Los datos de detección de saturación

• Detección de error de trama


• Incluye filtro de ruido False Start Bit Detección y Digitales Filtro de paso bajo
• Tres interrupciones por separado sobre TX completo, datos de TX y RX Registro Vacío completa
• Modo de comunicación multi-procesador
• Doble velocidad Modo de comunicación asíncrona

22.2 Descripción general

El Synchronous Universal y Receptor serie asíncrona y el transmisor (USART) es un dispositivo de comunicación en serie altamente flexible.

El ATmega640 / 1280/2560 tiene cuatro USART de, USART0, USART1, USART2 y USART3. La funcionalidad de los cuatro USART de se describe a
continuación. USART0, USART1, USART2, y USART3 tienen diferentes registros de E / S como se muestra en “Registrar Resumen” en la página 399 .

Un diagrama de bloques simplificado del transmisor USART se muestra en la Figura 22-1 en la página 201 . CPU accesible de E / S Registros y I pines de E / S se

muestran en negrita. El bit de energía redución USART0, PRUSART0, en “PRR0 - Reducción de potencia 0 Registro” en la página 55 debe estar inhabilitado escribiendo

un cero lógico a la misma.

El bit de energía redución USART1, PRUSART1, en “PRR1 - Registro de Reducción de Potencia 1” en la página 56 debe estar inhabilitado escribiendo un cero lógico a la
misma.

El bit de energía redución USART2, PRUSART2, en “PRR1 - Registro de Reducción de Potencia 1” en la página 56 debe estar inhabilitado escribiendo un cero lógico a la
misma.

El bit de energía redución USART3, PRUSART3, en “PRR1 - Registro de Reducción de Potencia 1” en la página 56 debe estar inhabilitado escribiendo un cero lógico a la
misma.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 200


2549Q-AVR-02/2014
La Figura 22-1. Diagrama de bloques USART ( 1)

Generador de reloj

UBRR [H: L]
OSC

GENERADOR DE VELOCIDAD

lógica de sincronización
CONTROL
XCK
DE PIN

Transmisor
CONTROL
UDR ( Transmitir)
DE TX

generador de
paridad
BUS DE DATOS

CONTROL
TRANSMITIR REGISTRO DE DESPLAZAMIENTO TxD
DE PIN

Receptor

recuperación CONTROL
de reloj DE RX

RECUPERACIÓN CONTROL
RECIBIR REGISTRO DE DESPLAZAMIENTO RxD
DE DATOS DE PIN

PARIDAD
UDR ( Recibir)
CHECKER

UCSRA UCSRB UCSRC

Nota: 1. Ver Figura 1-1 en la página 2 , La figura 1-3 en la página 4 , Tabla 13-12 en la página 80 , Tabla 13-15 en la página 82 , Tabla 13-24 en
página 88 y Tabla 13-27 en la página 90 para la colocación pin USART.

Las cajas de trazos en el diagrama de bloques separan las tres partes principales de la USART (enumeradas desde la parte superior): Generador de reloj, transmisor y
receptor. Registros de control son compartidos por todas las unidades. La lógica de reloj Generación consiste lógica de sincronización para la entrada de reloj externo utilizado
por funcionamiento esclavo síncrono, y el generador de velocidad de transmisión. El (Transferencia del reloj) pin XCKn sólo se utiliza por el modo de transferencia síncrona. El
transmisor consta de un solo buffer de escritura, un registro de desplazamiento en serie, generador de paridad y la lógica de control para el manejo de diferentes formatos de
trama de serie. El buffer de escritura permite una transferencia continua de datos sin ningún retraso entre bastidores. El receptor es la parte más compleja del módulo USART
debido a sus unidades de reloj y de recuperación de datos. Las unidades de recuperación se utilizan para la recepción de datos asincrónica. Además de las unidades de
recuperación, El receptor incluye una lógica Checker, Control de Paridad, un registro de desplazamiento y un nivel de dos búfer de recepción (UDRn). El receptor es
compatible con los mismos formatos de trama como el transmisor, y puede detectar error de trama, rebasamiento de datos y errores de paridad.

22.3 Reloj Generación

La lógica del reloj Generación genera el reloj base para el transmisor y el receptor. El USARTn soporta cuatro modos de funcionamiento: el reloj asíncrono
normal, asíncronos de doble velocidad, síncronos Maestro y Esclavo modo sincrónico. El bit UMSELn en el Control USART y Registro de Estado C
(UCSRnC) selecciona entre el funcionamiento asíncronos y síncronos. Doble velocidad (modo asíncrono) es controlado por el U2Xn encontrado en el
Registro UCSRnA. Al usar el modo síncrono (UMSELn = 1), la dirección 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 sólo se activa cuando se utiliza el modo síncrono.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 201


2549Q-AVR-02/2014
Figura 22-2 muestra un diagrama de bloques de la lógica de generación de reloj.

La Figura 22-2. Lógica de generación de reloj, Diagrama de bloques

UBRR
U2X
fosc

Preescala contador UBRR + 1


/2 /4 /2
descendente 0

0
txclk
1
DDR_XCK
sincronización OSC

Registro de detector de

xcki bordes 0
XCK UMSEL
xcko 1
Pin

DDR_XCK UCPOL
1
rxclk 0

Descripción de la señal:

txclk reloj del transmisor (señal interna).

rxclk reloj base del receptor (señal interna).

xcki Las aportaciones de XCK pasador (señal interna). Se utiliza para el funcionamiento síncrono esclavo.

xcko salida de reloj a XCK pasador (señal interna). Se utiliza para el funcionamiento maestro síncrono.

F OSC Frecuencia pin XTAL (reloj del sistema).

22.3.1 Generación reloj interno - La Tasa generador de baudios

generación de reloj interno se utiliza para el maestro de los modos de funcionamiento síncrono asíncrono y. La descripción en esta sección se refiere a Figura
22-2 .

La velocidad en baudios Registro USART (UBRRn) y el contador descendente conectado a él función como un pre-escalador programable o generador de velocidad en
baudios. El contador descendente, corriendo el reloj de sistema (f osc), se carga con el valor UBRRn cada vez que el contador ha contado a cero o cuando el Registro
UBRRLn está escrito. Un reloj se genera cada vez que el contador llegue a cero. Este reloj es la salida la velocidad de transmisión de reloj generador (= f osc / ( UBRRn + 1)).
El transmisor divide la velocidad de transmisión de salida de reloj del generador por 2, 8, o 16 dependiendo del modo. La salida del generador velocidad de transmisión se
utiliza directamente por las unidades de reloj y de recuperación de datos del receptor. Sin embargo, las unidades de recuperación utilizan una máquina de estado que
utiliza 2, 8 o 16 estados dependiendo del modo establecido por el estado de los bits de UMSELn, U2Xn y DDR_XCKn.

Tabla 22-1, en la página 203 contiene ecuaciones para calcular la velocidad de transmisión (en bits por segundo) y para calcular el valor UBRRn para cada modo de
operación utilizando una fuente de reloj generado internamente.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 202


2549Q-AVR-02/2014
Tabla 22-1. Ecuaciones para el cálculo de la velocidad en baudios registro de ajuste

Modo operativo Ecuación para calcular la velocidad en baudios ( 1) Ecuación para calcular UBRR Valor

Modo normal asíncrono (U2Xn = 0) F OSC F OSC


BAUDIO = ------------------------------------------ UBRR norte = ------------------------ - 1
• UBRR norte +
dieciséis 1 • dieciséis BAUDIO

el modo asíncrono de doble velocidad F OSC F OSC


BAUDIO = --------------------------------------- UBRR norte = -------------------- - 1
(U2Xn = 1) •
8 UBRR norte 1 + • 8 BAUDIO

F OSC
Modo maestro síncrono BAUDIO = --------------------------------------- F OSC

2 UBRR norte 1 + • UBRR norte = -------------------- - 1
2 BAUDIO

Nota: 1. La velocidad de transmisión se define para ser la velocidad de transferencia en bits por segundo (bps).

BAUDIO Velocidad de transmisión (en bits por segundo, bps).

F OSC Sistema de oscilador de frecuencia de reloj.

UBRRn El contenido de la UBRRHn y UBRRLn Registros, (0-4095).

Algunos ejemplos de valores UBRRn para algunas frecuencias de reloj del sistema se encuentran en Tabla 22-9 en la página 223 .

Operación Doble velocidad 22.3.2 (U2Xn)

La velocidad de transferencia se puede duplicar al establecer el bit U2Xn en UCSRnA. Al establecer este bit sólo tiene efecto para el funcionamiento asíncrono. Establecer
este bit a cero cuando se utiliza el funcionamiento síncrono.

Establecer este bit reducirá el divisor del divisor de velocidad de transmisión 16-8, duplicando la tasa de transferencia para la comunicación asincrónica. Note
sin embargo que el receptor en este caso sólo utilizar la mitad del número de muestras (reducido de 16 a 8) para el muestreo de datos y recuperación de
reloj, y por lo tanto un reloj de ajuste de velocidad de transmisión y sistema más preciso son necesarios cuando se utiliza este modo. Para el transmisor, no
hay inconvenientes.

22.3.3 reloj externo

de reloj externo es utilizado por los esclavos modos de funcionamiento síncrono. La descripción en esta sección se refiere a
Figura 22-2 en la página 202 para detalles.

entrada de reloj externa del pasador XCKn es muestreada por un registro de la sincronización para minimizar la posibilidad de metaestabilidad. La salida del
registro de sincronización entonces debe pasar a través de un detector de borde antes de que pueda ser utilizado por el transmisor y el receptor. Este proceso
introduce un periodo de reloj de retraso de dos CPU y por lo tanto la frecuencia de reloj máxima XCKn externa está limitada por la siguiente ecuación:

F OSC
F XCK • -----------
4

Tenga en cuenta que f osc depende de la estabilidad de la fuente de reloj del sistema. Por ello se recomienda añadir un poco de margen para evitar la posible pérdida de datos

debido a las variaciones de frecuencia.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 203


2549Q-AVR-02/2014
22.3.4 Operación reloj síncrono

Cuando se utiliza el modo síncrono (UMSELn = 1), el pasador XCKn se utilizará como entrada de reloj (Slave) o salida de reloj (Master). La dependencia
entre el muestreo bordes de reloj y de datos o cambio de datos es el mismo. El principio básico es que la entrada de datos (en RxDn) se muestrea en el borde
de reloj XCKn opuesto del borde se cambia la salida de datos (TxDn).

La Figura 22-3. El tiempo Modo síncrono 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 se utiliza para el cambio de datos. Como Figura 22-3 espectáculos, cuando

UCPOLn es cero los datos se pueden cambiar en el flanco ascendente XCKn y la muestra a flanco descendente XCKn. Si UCPOLn se establece, los datos se pueden cambiar en el

flanco descendente XCKn y se tomaron muestras en el flanco ascendente XCKn.

22.4 formatos de trama

Un marco de serie se define como un carácter de bits de datos con bits de sincronización (iniciar y detener bits) y, opcionalmente, un bit de paridad para la comprobación
de errores. El USART acepta todas las 30 combinaciones de los siguientes formatos de trama válidos:

• 1 bit de inicio

• 5, 6, 7, 8, o 9 bits de datos

• ninguna, par o impar bit de paridad

• 1 o 2 bits de parada

Una trama comienza con el bit de inicio, seguido por el bit de datos de menor valor. A continuación, los siguientes bits de datos, hasta un total de nueve, están teniendo éxito,

terminando con el bit más significativo. Si está activado, el bit de paridad se inserta después de que los bits de datos, antes de que los bits de parada. Cuando se transmite una

trama completa, se puede seguido directamente por una nueva trama, o la línea de comunicación se puede establecer en un estado de inactividad (alto). Figura 22-4 ilustra las

posibles combinaciones de los formatos de trama. Los bits dentro de los paréntesis son opcionales.

La Figura 22-4. formatos de trama

CUADRO

(OCIOSO) St 0 1 2 3 4 [5] [6] [7] [8] [PAG] Sp1 [Sp2] (St / IDLE)

St Bit de inicio, siempre bajos.

(norte) Los bits de datos (0 a 8).

PAG bit de paridad. Puede ser par o impar.

sp Bit de parada, siempre alto.

OCIOSO No hay transferencias en la línea de comunicación (RxDn o TxDn). Una línea libre debe ser alta.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 204


2549Q-AVR-02/2014
El formato de trama utilizado por el USART es fijado por el UCSZn2: 0, UPMn1: 0 y los bits USBSn en UCSRnB y UCSRnC. El receptor y el transmisor utilizan la

misma configuración. Tenga en cuenta que al cambiar la configuración de cualquiera de estos bits corromperá toda la comunicación en curso, tanto para el

receptor y el transmisor. El tamaño USART de caracteres (UCSZn2: 0) bits de seleccionar el número de los bits de datos en el marco. El modo USART paridad

(UPMn1: 0) bits de habilitar y ajustar el tipo de bit de paridad. La selección entre uno o dos bits de parada se realiza por la Selección de bits USART bit de parada

(USBSn). El receptor ignora el segundo bit de parada. Un FE (Error Frame) será por tanto, sólo puede detectar en los casos en que el primer bit de parada es cero.

22.4.1 Bit de paridad Cálculo

El bit de paridad se calcula haciendo un exclusivo-o de todos los bits de datos. Si se utiliza paridad impar, el resultado de la exclusiva o se invierte. El bit de paridad
se encuentra entre el último bit de datos y el primer bit de parada de un bastidor de serie. La relación entre los bits de bits y datos de paridad es la siguiente:

PAG incluso = re norte 1


-
• • • re 3 re• 2 re 1 re 0• 0 • •
PAG impar = re norte 1
-
• • • re 3 re• 2 re 1 re 0• 1 • •

PAG incluso Bit de paridad utilizando la paridad par.

PAG impar Bit de paridad utilizando la paridad impar.

re norte n bits de datos del personaje.

22.5 USART inicialización

El USART tiene que ser inicializado antes de cualquier comunicación puede tener lugar. El proceso de inicialización normalmente consiste en establecer la velocidad de

transmisión, el establecimiento de formato de trama y permitiendo que el transmisor o el receptor dependiendo del uso. Para interrupción impulsado operación USART, el

indicador global de interrupción debe ser limpiado (e interrumpe la mundialmente desactivado) cuando se realiza la inicialización.

Antes de hacer una re-inicialización con la velocidad de transmisión cambiada o el formato de cuadro, asegurarse de que no hay transmisiones en curso durante el período
de que se cambien los registros. La bandera TXCn se puede utilizar para verificar que el transmisor ha completado todas las transferencias, y la bandera RX C se puede
utilizar para comprobar que no hay datos leídos en el buffer de recepción. Tenga en cuenta que la bandera TXCn debe ser limpiado antes de cada transmisión (antes
UDRn está escrito) si se utiliza para este propósito.

Los siguientes ejemplos de código sencillo de inicialización USART muestran un montaje y una función C que son iguales en funcionalidad. Los ejemplos asumen
operación utilizando el sondeo asíncrona (no hay interrupciones habilitadas) y un formato de trama fija. La velocidad de transmisión se da como un parámetro de función.
Para el código de montaje, se asume que el parámetro de velocidad de transmisión para ser almacenado en la r17: r16 registros.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 205


2549Q-AVR-02/2014
USART_Init:; Establecer la

velocidad de transmisión

STS UBRRnH, r17


STS UBRRnL, r16
LDI r16, (1 << U2Xn)
STS UCRnA, r16; Habilitar receptor y el transmisor

LDI R16, (1 << RXENn) | (1 << TXENn)


STS UCSRnB, r16; Establecer formato de marco: 8Datos basados, poco

1stop

LDI R16, (2 << UMSELn) | (3 << UCSZn0)


STS UCSRnC, r16

jubilado

Ejemplo de código C ( 1)

# definir FOSC 1843200 // Velocidad de reloj


en la rutina principal,
# definir o pueden
transmisión combinar con el código de inicialización para otros módulos de E / S. Ejemplo de código de montaje ( 1)
9600

# definir (MYUBRR FOSC / 16 / Baud-1) void main


(void) {...

USART_Init (MYUBRR);
. . . } // principal
USART_Init anular (unsigned int ubrr) {/ * Definición de la velocidad de

transmisión * /

UBRRH
aplicaciones = (unsigned
utilizan char) (ubrr
una configuración fija de>>
los8); UBRRL
registros de=baudios
(unsigned
y de control, y para estos tipos de aplicaciones, el código de inicialización se pueden colocar directamente
char) ubrr; / * Activar receptor y el transmisor * / UCSRB = (1
<< RXEN) | (1 << TXEN);

/ * Establecer formato de trama: 8Datos basados, 2stop bits * / UCSRC

= (1 << USBS) | (3 << UCSZ0); } // USART_Init

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

Más rutinas de inicialización avanzados pueden hacer que incluyen formato de trama como parámetros, deshabilitar interrupciones y así sucesivamente. Sin embargo, muchas

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 206


2549Q-AVR-02/2014
22.6 Transmisión de Datos - El transmisor USART

El transmisor USART se habilita estableciendo la Habilitación de transmisión ( TXEN) bit en el registro UCSRnB. Cuando se activa el transmisor, el
funcionamiento normal de puerto del pasador TxDn es anulado por el USART y dada la función que la producción en serie del transmisor. La velocidad de
transmisión, modo de operación y formato de trama debe configurarse una vez antes de hacer cualquier transmisión. Si se utiliza el funcionamiento síncrono, el
reloj de la clavija de XCKn se anulará y se utiliza como reloj de transmisión.

22.6.1 Envío de tramas con el bit 5 al 8 de Datos

Una transmisión de datos se inicia mediante la carga de la memoria intermedia de transmisión con los datos a transmitir. La CPU puede cargará la memoria intermedia de transmisión por

escrito a la ubicación UDRn I / O. Los datos almacenados en la memoria intermedia de transmisión serán movidos al registro de desplazamiento cuando el registro de desplazamiento está

listo para enviar una nueva trama. El registro de desplazamiento se carga con nuevos datos si se encuentra en estado de reposo (sin transmisión continua) o inmediatamente después de

que se transmitió el último bit de parada de la trama anterior. Cuando el registro de desplazamiento está cargado con nuevos datos, transferirá una trama completa a la velocidad

propuesta por el Baud Register, poco U2Xn o por XCKn dependiendo del modo de operación.

Los siguientes ejemplos de código muestran una función de transmisión USART simple basado en el sondeo de la Registro de datos vacía

(UDREn) Bandera. Al utilizar marcos con menos de ocho bits, los bits más significativos escritos en el UDRn se ignoran. El USART tiene que ser inicializado
antes de la función se puede utilizar. Para el código de montaje, los datos a ser enviados se supone que es almacenado en el registro R16.

Ejemplo de código de montaje ( 1)

USART_Transmit:; Esperar a que buffer de transmisión


vacía
lds r17, UCSRnA
SBR r17, UDREn
rjmp USART_Transmit; Poner datos (R16) en el buffer, envía los datos

STS UDRn, r16

jubilado

Ejemplo de código C ( 1)

vacío USART_Transmit ( unsigned char datos) {/ * Esperar a que


buffer de transmisión vacía * /

mientras ( !( UCSRnA y (1 << UDREn)))


; / * Poner los datos en el búfer, envía los datos * /

UDRn = datos; }

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

La función simplemente espera a que el buffer de transmisión esté vacío marcando la bandera UDREn, antes de cargarlo con nuevos datos a transmitir. Si se
utiliza la interrupción Vaciar registro de datos, la rutina de interrupción escribe los datos en el búfer.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 207


2549Q-AVR-02/2014
22.6.2 El envío de tramas con el bit 9 de Datos

Si se utilizan caracteres de 9 bits (UCSZn = 7), el noveno bit debe ser escrito en el bit TXB8 en UCSRnB antes de que el byte bajo del carácter se escribe en UDRn.
Los siguientes ejemplos de código muestran una función que se encarga de transmitir los caracteres de 9 bits. Para el código de montaje, los datos a ser enviados se
supone que es almacenada en los registros R17: R16.

USART_Transmit:; Esperar a que buffer de transmisión


vacía
sbis UCSRnA, UDREn

rjmp USART_Transmit; Copiar noveno bit de r17 a


TXB8
CBI UCSRnB, TXB8

SBRC r17,0
OSE UCSRnB, TXB8; Poner datos LSB (r16) en búfer, envía los datos

STS UDRn, r16

jubilado

Ejemplo de código C ( 1) (2)

vacío USART_Transmit ( unsigned int datos) {/ * Esperar a que


buffer de transmisión vacía * /

mientras ( !( UCSRnA y (1 << UDREn))))


; / * Copiar novena poco a TXB8 *
/
se ejecuta mientras se establece UDREn (siempre que las interrupciones globales están habilitados). Ejemplo de código de montaje ( 1) (2)
UCSRnB & = ~ (1 << TXB8); si (datos y 0x0100) UCSRnB | = (1 <<
TXB8); / * Poner los datos en el búfer, envía los datos * /

UDRn = datos; }

Notas: 1. Estas funciones están escritos transmiten a ser funciones generales. Ellos pueden optimizarse si el contenido de la UCSRnB
es estática. Por ejemplo, sólo el bit TXB8 del Registro UCSRnB se utiliza después de la inicialización.
2. Ver “Acerca del código de ejemplos” en la página 10.

El noveno bit se puede utilizar para indicar una trama de dirección cuando se utiliza el modo de comunicación procesador multi o para otras manipulaciones como por
ejemplo la sincronización de protocolo.

22.6.3 Banderas del transmisor e interrupciones

El transmisor USART tiene dos banderas que indican su estado: USART Registro de datos vacíos (UDREn) y transmitir completa (TXCn). Ambas banderas se pueden
utilizar para la generación de interrupciones.

El vacío (UDREn) Bandera Registro de datos indica si el buffer de transmisión está listo para recibir nuevos datos. Este bit se establece cuando el buffer de
transmisión está vacía, y se aclaró cuando el buffer de transmisión contenga los datos a ser transmitidos que todavía no se ha movido al registro de
desplazamiento. Para la compatibilidad con dispositivos futuros, siempre escribir este bit a cero al escribir el Registro UCSRnA.

Cuando el vacío del registro de bits de datos de habilitación de interrupción (UDRIEn) en UCSRnB se escribe en uno, el USART Registro de datos vacía de interrupción

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 208


2549Q-AVR-02/2014
UDREn se borra escribiendo UDRn. Cuando se usa de transmisión de datos por interrupciones, la rutina de interrupción Vaciar registro de datos o bien debe escribir
nuevos datos a UDRn con el fin de despejar UDREn o desactivar la alarma de vacío Registro datos, de lo contrario una nueva interrupción se producirá una vez que
acaba la rutina de interrupción.

The Complete (TXCn) poco Bandera de transmisión se establece una cuando toda la trama de transmisión en el registro de desplazamiento se ha desplazado
hacia fuera y no hay nuevos datos actualmente presentes en la memoria intermedia de transmisión. El bit de bandera TXCn se borra automáticamente
cuando se ejecuta una interrupción completa de la transmisión, o se puede borrar escribiendo un uno a su ubicación poco. La bandera TXCn es útil en las
interfaces semidúplex de comunicación (como el RS-485 estándar), en donde una aplicación de transmisión debe entrar en el modo recibir y liberar el bus de
comunicación inmediatamente después de completar la transmisión. Cuando la transmisión Compite habilitación de interrupción (TXCIEn) bits en UCSRnB se
establece, el USART transmisión completa interrupción se ejecutará cuando la bandera TXCn queda establecido (siempre que las interrupciones globales
están habilitados). Cuando se utiliza la interrupción de transmisión completa,

22.6.4 Generador de paridad

El generador de paridad calcula el bit de paridad para los datos de trama de serie. Cuando se activa el bit de paridad (UPMn1 = 1), la lógica de control del transmisor
inserta el bit de paridad entre el último bit de datos y el primer bit de parada de la trama que se envía.

22.6.5 La desactivación del transmisor

La desactivación del transmisor (ajuste de la TXEN a cero) no entrará en vigencia hasta que se completen las transmisiones en curso y pendientes, es decir,
cuando la Transmisión Shift Register y Búfer de transmisión Registro no contienen datos a transmitir. Cuando está desactivado, el transmisor ya no anular el
pasador TxDn.

22.7 Recepción de datos - El receptor USART

El receptor USART está activado escribiendo el bit de recepción permiten (RXENn) en el Registro UCSRnB a uno. Cuando se activa el receptor, el funcionamiento
normal de perno del pasador RxDn es anulado por el USART y dada la función como entrada serie del receptor. La velocidad de transmisión, modo de operación y
formato de trama debe configurarse una vez antes de cualquier recepción de serie se puede hacer. Si se utiliza el funcionamiento síncrono, el reloj de la clavija de
XCKn será utilizado como reloj de transferencia.

22.7.1 Recepción de Marcos con los bits 5 a 8 de Datos

El receptor inicia la recepción de datos cuando se detecta un bit de inicio válida. Cada bit que sigue al bit de inicio se muestrea a la velocidad de transmisión o un reloj
XCKn, y se movió en el Registro Recibe Shift hasta que se recibe el primer bit de parada de un marco. 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 registro de desplazamiento de recepción, el contenido del registro de
desplazamiento se moverán en el búfer de recepción. El búfer de recepción se puede leer mediante la lectura de la ubicación UDRn de E / S.

El ejemplo de código siguiente muestra una USART sencilla función de recepción basado en el sondeo de la bandera de recepción completa (RXCn). Al utilizar
marcos con menos de ocho bits de los bits más significativos de los datos leídos de la UDRn estarán enmascarados a cero. El USART tiene que ser inicializado
antes de la función se puede utilizar.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 209


2549Q-AVR-02/2014
Ejemplo de código de montaje ( 1)

USART_Receive:; Esperar a que se recibirán los


datos
lds r17, UCSRnA
SBR r17, RXCn
rjmp USART_Receive; Obtener y devolver los datos recibidos desde
el buffer
lds r16, UDRn
jubilado

Ejemplo de código C ( 1)

unsigned char USART_Receive ( vacío )


{/ * Esperar a que se recibirán los datos * /

mientras ( !( UCSRnA y (1 << RXCn)))


; / * Obtener y devolver los datos recibidos desde el buffer * /

regreso UDRn; }

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

La función simplemente espera a que los datos estén presentes en el búfer de recepción marcando la bandera RXCn, antes de leer el búfer y devolver el
valor.

22.7.2 Recepción de Marcos con los bits de datos 9

Si se utilizan caracteres de 9 bits (UCSZn = 7) el noveno bit debe ser leído desde el bit RXB8n en UCSRnB antes de lectura de los bits bajos de la UDRn. Esta regla

se aplica a los Indicadores de estado FEN, Dorn Upen también. Leer el estado de UCSRnA, a continuación, los datos de UDRn. La lectura de la ubicación UDRn I / O

va a cambiar el estado de la memoria intermedia de recepción FIFO y, en consecuencia bits de la TXB8n, pantanos y ODRn y Upen, todos los cuales se almacenan

en la FIFO, va a cambiar. El ejemplo de código siguiente muestra una USART sencilla función que maneja tanto nueve caracteres bits y los bits de estado de

recepción.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 210


2549Q-AVR-02/2014
Ejemplo de código de montaje ( 1)

USART_Receive:; Esperar a que se recibirán los


datos
lds r17, UCSRnA
SBR r17, RXCn
rjmp USART_Receive; Obtener el estado y el 9 bits, entonces los datos de
búfer
lds R18, UCSRnA
lds r17, UCSRnB
lds r16, UDRn; Si el error,
devuelve -1
y yo R18, (1 << FEN) | (1 << ODRn) | (1 << Upen)

BREQ USART_ReceiveNoError
LDI r17, HIGH (-1)
LDI r16, LOW (-1) USART_ReceiveNoError:; Se filtra el
noveno bit, y luego volver

LSR r17
y yo r17, 0x01
jubilado

Ejemplo de código C ( 1)

unsigned int USART_Receive ( vacío )


{
unsigned char estado, Resh, RESL; / * Esperar a que se
recibirán los datos * /
mientras ( !( UCSRnA y (1 << RXCn)))
; / * Obtener el estado y el 9 bits, los datos * /

/ * desde el buffer * /
estado = UCSRnA; Resh = UCSRnB;
RESL = UDRn; / * Si el error, devuelve -1 *
/

Si ( y el estado (1 << FEN) | (1 << ODRn) | (1 << Upen))


regreso - 1; / * Se filtra el noveno bit, y luego volver * /

Resh = (Resh >> 1) y 0x01;


regreso (( Resh << 8) | RESL); }

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

El ejemplo lee función de recepción de E / S de registros en el archivo de Registro antes de cualquier cálculo se hace todo el Yo. Esto da una óptima utilización del búfer
de recepción ya que la ubicación búfer de lectura será libre de aceptar nuevos datos tan pronto como sea posible.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 211


2549Q-AVR-02/2014
22.7.3 Recibir Bandera competir y de interrupción

El receptor USART tiene una bandera que indica el estado del receptor.

La recepción completa (RXCn) bandera indica si hay datos leídos presentes en el buffer de recepción. Esta bandera es uno cuando existen datos leídos en el
buffer de recepción, y cero cuando el búfer está vacío (es decir, no contiene ningún dato leído). Si el receptor está desactivado (RXENn = 0), el búfer de
recepción se vaciará y por consiguiente el bit RXCn se convertirá en cero.

Cuando el recibir información completa habilitación de interrupción (RXCIEn) en UCSRnB está establecido, el USART Recibir interrupción completa se ejecuta mientras
se establece el indicador RXCn (siempre que las interrupciones globales están habilitados). Cuando se usa la recepción de datos interruptdriven, al recibir la rutina
completa debe leer los datos recibidos desde UDRn con el fin de borrar la bandera RXCn, de lo contrario se producirá una nueva interrupción una vez que acaba la
rutina de interrupción.

Indicadores de error del receptor 22.7.4

El receptor USART tiene tres indicadores de error: error de trama (FEN), datos rebasamiento (ODRn) y el error de paridad (Upen). Todo se puede acceder mediante la lectura
de UCSRnA. Común para los indicadores de error es que se encuentran en el búfer de entrada junto con el marco para las que indican el estado de error. Debido al
almacenamiento temporal de los indicadores de error, el UCSRnA debe leerse antes de que el búfer de recepción (UDRn), ya que la lectura de la ubicación UDRn E / S
cambia la ubicación de lectura de búfer. Otra igualdad para los indicadores de error es que no pueden ser alterados por el software que hace una escritura a la ubicación de
la bandera. Sin embargo, todas las banderas deben ser puestos a cero cuando el UCSRnA está escrito para la compatibilidad ascendente de futuras implementaciones
USART. Ninguno de los indicadores de error puede generar interrupciones.

El error de trama (FEN) de la bandera indica el estado del primer bit de parada de la trama siguiente lectura almacenada en la memoria intermedia de recepción. El Flag Fen es

cero cuando el bit de parada se ha leído correctamente (como uno), y la bandera FEn será uno cuando el bit de parada era incorrecta (cero). Esta bandera se puede utilizar para

detectar las condiciones de fuera de sincronización, la detección de condiciones de descanso y manejo de protocolo. El Flag Fen no se ve afectado por el ajuste del bit USBSn en

UCSRnC ya que el receptor ignora todo, a excepción de la primera, los bits de parada. Para la compatibilidad con dispositivos futuros, siempre establecer este bit a cero cuando

se escribe a UCSRnA.

El rebasamiento de datos (ODRn) bandera indica la pérdida de datos debido a una condición de búfer lleno receptor. Una rebasamiento de datos se produce cuando el búfer
de recepción está lleno (dos caracteres), es un nuevo personaje esperando en la recepción registro de desplazamiento, y se detecta un nuevo bit de inicio. Si la Dorn Flag se
establece hubo uno o más de serie trama perdida entre el marco de la última lectura de UDRn, y el siguiente cuadro leer de UDRn. Para la compatibilidad con dispositivos
futuros, siempre escribir este bit a cero cuando se escribe a UCSRnA. El Dorn Flag se borra cuando la trama recibida fue trasladado con éxito a partir del registro de
desplazamiento a la memoria intermedia de recepción.

El (Upen) Bandera de paridad de error indica que la siguiente trama en el búfer de recepción tenía un error de paridad cuando se reciben. Si Parity Check no está
activado el bit Upen siempre se leerá cero. Para la compatibilidad con dispositivos futuros, siempre establecer este bit a cero cuando se escribe a UCSRnA. Para
más detalles ver “Bit de paridad de cálculo” en la página 205 y “Paridad ortográfico” .

22.7.5 La paridad del inspector

La paridad Checker es activo cuando se establece el modo de paridad alta USART (UPMn1) bits. Tipo de comprobación de paridad que se realizará (par o impar) se
selecciona por el bit UPMn0. Cuando está activado, el verificador de paridad 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 verificación se almacena en el búfer de recepción junto con los datos recibidos y los bits de parada. El (Upen)
Bandera Error de paridad puede ser leído por el software para comprobar si la trama tenía un error de paridad.

El bit se establece si Upen el próximo carácter que se pueda leer desde el búfer de recepción tenía un Error de paridad recibido y la comprobación de la paridad fue
habilitado en ese punto (= 1 UPMn1). Este bit es válido hasta que se lea el búfer de recepción (UDRn).

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 212


2549Q-AVR-02/2014
22.7.6 Desactivación del Receptor

En contraste con el transmisor, la desactivación del receptor será inmediata. Por lo tanto, se perderá los datos de recepciones en curso. Cuando está
desactivado (es decir, la RXENn se establece en cero) el receptor ya no anulará la función normal del pin del puerto RxDn. El receptor búfer FIFO se vaciará
cuando el receptor se desactiva. se perderán los datos que quedan en la memoria intermedia.

22.7.7 Lavado de la memoria intermedia de recepción

El tampón receptor FIFO se vaciarán cuando el receptor está desactivado, es decir, la memoria intermedia se vacía de su contenido. se perderán los datos leídos. Si la
memoria intermedia tiene que ser vaciados durante el funcionamiento normal, debido a, por ejemplo, una condición de error, leer la ubicación UDRn I / O hasta que la
bandera RXCn se borra. El ejemplo de código siguiente muestra cómo vaciar el búfer de recepción.

Ejemplo de código de montaje ( 1)

USART_Flush:
sbis UCSRnA, RXCn
ret
de r16, UDRn
rjmp USART_Flush

Ejemplo de código C ( 1)

vacío USART_Flush ( vacío )


{
unsigned char tonto;
mientras ( UCSRnA y (1 << RXCn)) maniquí = UDRn; }

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

La recepción de datos asíncrono 22.8

El USART incluye una recuperación de reloj y una unidad de recuperación de datos para el manejo de la recepción de datos asíncrono. La lógica la
recuperación de reloj se utiliza para sincronizar el reloj de velocidad de transmisión generada internamente a los bastidores serie asíncronos entrantes en el
pasador RxDn. La recuperación de datos de muestras de lógica y filtros de paso bajo cada bit entrante, lo que mejora la inmunidad al ruido del receptor. La
gama operativa de recepción asíncrona depende de la precisión del reloj interno velocidad de transmisión, la tasa de las tramas entrantes, y el tamaño del
marco en número de bits.

22.8.1 asíncrono recuperación de reloj

La lógica de la recuperación de reloj sincroniza el reloj interno de los marcos serie entrantes. Figura 22-5 en la página 214 ilustra el proceso de muestreo del bit de inicio de
una trama entrante. La frecuencia de muestreo es de 16 veces la velocidad de transmisión para el modo normal, y ocho veces la velocidad de transmisión para el modo de
doble velocidad. Las flechas horizontales ilustran la variación de sincronización debido al proceso de muestreo. Tenga en cuenta la variación de tiempo superior al utilizar el
modo de velocidad doble (U2Xn = 1) de la operación. Las muestras denotan cero son muestras de hecho cuando la línea RxDn está inactivo (es decir, ninguna actividad de
comunicación).

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 213


2549Q-AVR-02/2014
La Figura 22-5. Iniciar el muestreo de bits

RxD OCIOSO COMIENZO El bit 0

Muestra
(U2X = 0) 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dieciséis 1 2 3

Muestra
(U2X = 1) 0 1 2 3 4 5 6 7 8 1 2

Cuando la lógica de recuperación de reloj detecta una elevada (de reposo) a la baja de transición (iniciar) en la línea RxDn, se inicia la secuencia de detección de bit de
inicio. Deje que la muestra 1 denotan el primer cero de muestras como se muestra en la figura. La lógica de recuperación de reloj a continuación, utiliza muestras 8, 9 y 10
para el modo normal, y las muestras 4, 5 y 6 para el modo de velocidad doble (indicada con el número de muestras dentro de las cajas en la figura), para decidir si se
recibe un bit de inicio válida . Si dos o más de estas tres muestras tienen altos niveles lógicos (la mayoría gana), el bit de inicio es rechazada en su pico de ruido y el
receptor empieza a buscar la siguiente mayor a menor a la transición. Sin embargo, si se detecta un bit de inicio válida, la lógica de recuperación de reloj está sincronizado
y la recuperación de datos puede comenzar. El proceso de sincronización se repite para cada bit de inicio.

22.8.2 Recuperación de datos asíncrona

Cuando el reloj del receptor se sincroniza con el bit de inicio, la recuperación de datos puede comenzar. La unidad de recuperación de datos utiliza una máquina de estado que

tiene 16 estados para cada bit en modo normal y ocho estados para cada bit en modo de doble velocidad.

Figura 22-6 muestra el muestreo de los bits de datos y el bit de paridad. Cada una de las muestras se da un número que es igual al estado de la unidad de
recuperación de.

La Figura 22-6. El muestreo de datos y Bit de paridad

RxD BIT n

Muestra
(U2X = 0) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dieciséis 1

Muestra
(U2X = 1) 1 2 3 4 5 6 7 8 1

La decisión del nivel lógico del bit recibido es tomada por hacer una votación por mayoría del valor lógico de las tres muestras en el centro del bit recibido. Las
muestras de centro se hace hincapié sobre la figura por tener el número de muestra dentro de las cajas. El proceso de votación por mayoría se realiza de la siguiente
manera: Si dos o las tres muestras tienen niveles más altos, el bit recibido es registrada como una lógica 1. Si dos o las tres muestras tienen niveles bajos, del bit
recibido es registrada a ser un 0 lógico . Este proceso de votación por mayoría actúa como un filtro de paso bajo para la señal de entrada en el pin RxDn. El proceso
de recuperación se repite entonces hasta que se recibe una trama completa. Incluyendo el primer bit de parada. Tenga en cuenta que el receptor sólo utiliza la
primera bit de parada de un marco.

Figura 22-7 muestra el muestreo del bit de parada y el inicio más temprana posible del bit de inicio de la trama siguiente.

La Figura 22-7. La interrupción de muestreo y de bit siguiente bit de inicio de muestreo

RxD (UNA) (SEGUNDO) (DO)

Muestra
(U2X = 0) 1 2 3 4 5 6 7 8 9 10 0/1 0/1 0/1 PARADA 1

Muestra
(U2X = 1) 1 2 3 4 5 6 0/1

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 214


2549Q-AVR-02/2014
La misma votación por mayoría se hace para el bit de parada como se hizo para los otros bits de la trama. Si el bit de parada está registrado para tener un valor lógico 0, se

establecerá el error de trama (FEN) de la bandera.

Un nuevo mayor a menor transición que indica el bit de inicio de un nuevo marco puede venir a la derecha después de que el último de los bits utilizados para la votación por

mayoría. Para el modo de velocidad normal, la primera muestra de bajo nivel puede ser un punto marcado (A) en Figura 22-7 en la página 214 . Para el modo de velocidad doble del

primer nivel bajo se debe retrasar el (B). (C) marca un bit de parada de longitud completa. La detección temprana bit de inicio influye en el radio de acción del receptor.

Radio de acción 22.8.3 asíncrono

La gama operativa del receptor depende de la falta de correspondencia entre la velocidad de bits recibido y la velocidad de transmisión generada internamente. Si
el transmisor está enviando tramas a velocidades de bits demasiado rápido o demasiado lento, o la velocidad de transmisión generada internamente del receptor
no tiene un similar (véase Tabla 22-2 ) Frecuencia base, el receptor no será capaz de sincronizar las tramas al bit de inicio.

Las siguientes ecuaciones pueden usarse para calcular la relación de la velocidad de datos de entrada y la velocidad en baudios receptor interno.

• re 1+ • S • re 2+ • Dakota
R lento = ------------------------------------------- R rápido = -----------------------------------
S 1- + DS• + S F • del Sur
+ 1 • SS +METRO

re Suma de tamaño de la fuente y el tamaño de la paridad (D = 5 a 10 bits).

S Las muestras por bit. S = 16 para el modo de velocidad normal y S = 8 para el modo de doble velocidad.

SF En primer número de la muestra utilizada para la votación por mayoría. S F = 8 para la velocidad normal y S F = 4 para doble velocidad

modo.

S METRO número de muestra medio utilizado para la votación por mayoría. S M = 9 para la velocidad normal y S M = 5 para el doble
el modo de velocidad.

R lento es la relación de la más lenta velocidad de datos de entrada que puede ser aceptada en relación con los baudios receptor
tarifa. R rápido es la relación de la velocidad de datos de entrada más rápido que pueda ser aceptada en relación con la velocidad de transmisión del receptor.

Tabla 22-2 y Tabla 22-3 en la página 216 enumerar el máximo error de velocidad en baudios receptor que puede ser tolerada. Tenga en cuenta que el modo de velocidad normal tiene un mayor

tolerancia de las variaciones de velocidad de transmisión.

Tabla 22-2. Recomendado error máximo receptor Velocidad de transmisión de modo de velocidad normal (U2Xn = 0)

re máximo recomendado. error


# (Datos + Bit de paridad) R lento (%) R rápido (%) Max. error total (%) receptor (%)

5 93.20 106.67 + 6,67 / -6.8 ± 3.0

6 94.12 105.79 + 5,79 / -5,88 ± 2,5

7 94.81 105.11 + 5,11 / -5,19 ± 2,0

8 95.36 104.58 + 4,58 / -4.54 ± 2,0

9 95,81 104.14 + 4,14 / -4,19 ± 1,5

10 96.17 103.78 + 3,78 / -3.83 ± 1,5

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 215


2549Q-AVR-02/2014
Tabla 22-3. Recomendado error máximo receptor Velocidad de transmisión para el modo de doble velocidad (U2Xn = 1)

re máximo recomendado. receptor


# (Datos + Bit de paridad) R lento (%) R rápido (%) Max. error total (%) error (%)

5 94.12 105.66 + 5,66 / -5,88 ± 2,5

6 94.92 104.92 + 4,92 / -5,08 ± 2,0

7 95.52 104.35 + 4,35 / -4,48 ± 1,5

8 96.00 103.90 + 3.90 / -4.00 ± 1,5

9 96.39 103.53 + 3,53 / -3,61 ± 1,5

10 96.70 103.23 + 3,23 / -3,30 ± 1,0

Las recomendaciones de la máxima velocidad de transmisión de error del receptor se hizo bajo el supuesto de que el receptor y el transmisor divide
igualmente el error total máximo.

Hay dos fuentes posibles para el error receptores velocidad de transmisión. reloj del sistema del receptor (XTAL) siempre tendrán cierta inestabilidad menor sobre
el rango de tensión de alimentación y el rango de temperatura. Cuando se utiliza un cristal para generar el reloj del sistema, esto rara vez es un problema, pero
para un resonador el reloj del sistema puede diferir más de 2%, dependiendo de la tolerancia resonadores. La segunda fuente para el error es más controlable. El
generador de velocidad de transmisión no siempre puede hacer una división exacta de la frecuencia del sistema para obtener la velocidad de transmisión quería.
En este caso un valor UBRR que da un error bajo aceptable se puede usar si es posible.

22.9 Modo de comunicación multi-procesador

Ajuste del bit de modo de comunicación multi-procesador (MPCMn) en UCSRnA permite una función de filtrado de tramas entrantes recibidos por el receptor
USART. Las tramas que no contienen información de la dirección se ignoran y no se ponen en el búfer de recepción. Esto reduce efectivamente el número de
tramas de entrada que tiene que ser manejado por la CPU, en un sistema con múltiples MCUs que se comunican a través del mismo bus serie. El transmisor no
se ve afectado por el ajuste MPCMn, pero tiene que ser utilizado de forma diferente cuando se trata de una parte de un sistema que utiliza el modo de
comunicación multi-procesador.

Si el receptor está configurado para recibir tramas que contienen 5 a 8 bits de datos, entonces la primera bit de parada indica si la trama contiene información de datos

o la dirección. Si el receptor está configurado para marcos con bits de nueve de datos, entonces el noveno bit (RXB8n) se utiliza para la identificación de direcciones y

de datos marcos. Cuando el bit de tipo de trama (la primera parada o el noveno bit) es una, la trama contiene una dirección. Cuando el tipo de trama de bit es cero la

trama es una trama de datos. El modo de comunicación multi-procesador permite a varios microcontroladores esclavos para recibir datos de un MCU principal. Esto se

hace por primera decodificación de una trama de dirección para saber qué MCU se ha abordado. Si un esclavo particular, se ha abordado MCU, recibirá los siguientes

tramas de datos como normal, mientras que el otro esclavo MCUs ignorará las tramas recibidas hasta que se reciba otra trama de dirección.

22.9.1 Usando MPCMn

Para una MCU para actuar como un maestro MCU, se puede utilizar un formato de trama de caracteres 9 bits (UCSZn = 7). El noveno bit (TXB8n) debe ajustarse cuando una

trama de dirección (TXB8n = 1) o borra cuando se transmite una trama de datos (TXB = 0). La MCU esclavo debe en este caso ser configurado para utilizar un formato de trama

de caracteres de 9 bits.

El siguiente procedimiento se debe utilizar para el intercambio de datos en el modo de comunicación multi-procesador:

1. Todo esclavo MCUs son en modo de comunicación multi-procesador (MPCMn en UCSRnA está establecido).

2. El Maestro MCU envía una trama de dirección, y todos los esclavos recibir y leer este marco. En el esclavo MCUs, la Bandera RXCn en UCSRnA se
establece como normal.

3. Cada MCU esclavo lee el Registro UDRn y determina si ha sido seleccionada. Si es así, se borra el bit MPCMn en UCSRnA, de lo contrario,
espera al siguiente byte de dirección y mantiene la configuración MPCMn.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 216


2549Q-AVR-02/2014
4. El dirigida MCU recibirá todas las tramas de datos hasta que se recibe un nuevo bloque de dirección. El otro esclavo MCUs, que todavía tiene el
conjunto de bits MPCMn, ignorará las tramas de datos.

5. Cuando la última trama de datos es recibida por el MCU requerido, el MCU dirigida establece el bit MPCMn y esperará un nuevo bloque de dirección
del maestro. A continuación el proceso se repite desde 2.

Utilizando cualquiera de los 5 bits para formatos de trama de caracteres de 8 bits es posible, pero poco práctico ya que el receptor debe cambiar entre el uso de n y n + 1

formatos de trama de caracteres. Esto hace que el funcionamiento dúplex difícil ya que el transmisor y el receptor utiliza la misma configuración de tamaño de carácter. Si se

utilizan 5 bits para tramas de caracteres de 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 las instrucciones de lectura-modificación-escritura (SBI y CBI) para establecer o borrar el bit MPCMn. Las acciones de bits MPCMn la misma E

/ S ubicación como la bandera TXCn y esto accidentalmente podría eliminarse si mediante las instrucciones de OSE o CBI.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 217


2549Q-AVR-02/2014
22.10 Registro Descripción

En la siguiente sección se describen los registros del USART.

22.10.1 UDRn - USART E / S de datos Registro n

Poco 7 6 5 4 3 2 1 0

RXB [7: 0] UDRn (Leer)

TXB [7: 0] UDRn (escritura)

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

El USART Transmitir datos Buffer Register y USART recibir datos de registros intermedios comparten la misma dirección de E / S se refiere como USART
Registro de datos o UDRn. El búfer de datos Registro de transmisión (TXB) será el destino de los datos escritos en la ubicación UDRn Registro. La lectura de
la ubicación UDRn Registro devolverá el contenido del búfer de recepción de datos Registro (RXB).

Para 5 bits, 6 bits, o de 7 bits caracteres los bits no utilizados superiores serán ignorados por el transmisor y puestos a cero por el receptor.

El buffer de transmisión sólo 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án ignorados por el transmisor USART. Cuando se escriben datos en el búfer de transmisión, y el transmisor está activado, el transmisor cargar los
datos en la transmisión Registro de desplazamiento cuando el registro de desplazamiento está vacía. A continuación, los datos se transmiten en serie en el pasador TxDn.

El buffer de recepción consiste en una FIFO de dos niveles. El FIFO cambiará su estado cada vez que se accede a la memoria intermedia de recepción. Debido a este
comportamiento del búfer de recepción, no utilice las instrucciones de lectura modificación-escritura (OSE y CBI) en esta ubicación. Tenga cuidado al usar instrucciones de
la prueba poco (SBIC y SBIS), ya que estos también cambiarán el estado de la FIFO.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 218


2549Q-AVR-02/2014
22.10.2 UCSRnA - Control y Registro de Estado USART Un

Poco 7 6 5 4 3 2 1 0

RXCn TXCn UDREn Pantano ODRn Upen U2Xn MPCMn UCSRnA

Leer escribir R R/W R R R R R/W R/W

Valor inicial 0 0 1 0 0 0 0 0

• Bit 7 - RXCn: USART recibir información completa

Este bit indicador se establece cuando hay datos leídos en el buffer de recepción y se aclaró cuando el búfer está vacío (es decir, no contiene ningún dato no
leídos). Si el receptor está desactivado, el búfer de recepción se vaciará y por lo tanto el bit RXCn se convertirá en cero. La bandera RXCn se puede utilizar
para generar una interrupción completa de recepción (véase la descripción del bit RXCIEn).

• Bit 6 - TXCn: USART transmisión completa


Este bit indicador se establece cuando todo el marco en el Transmit Shift Register se ha desplazado hacia fuera y no hay nuevos datos actualmente presentes en la memoria

intermedia de transmisión (UDRn). El bit de bandera TXCn se borra automáticamente cuando se ejecuta una interrupción completa de la transmisión, o se puede borrar

escribiendo un uno a su ubicación poco. La bandera TXCn puede generar una interrupción completa de transmisión (véase la descripción de la broca TXCIEn).

• Bit 5 - UDREn: USART Registro de datos vacía


La bandera UDREn indica si el buffer de transmisión (UDRn) está listo para recibir nuevos datos. Si UDREn es uno, el buffer se vacía, y por lo tanto listo para
ser escrito. La bandera UDREn puede generar una interrupción de vacío Registro de datos (véase la descripción del bit UDRIEn).

UDREn se establece después de un reinicio para indicar que el transmisor está listo.

• Bit 4 - Hinchada: error de trama

Este bit se establece si el siguiente carácter en el búfer de recepción tenía un error de trama cuando se recibió, es decir, cuando el primer bit de parada del siguiente
carácter en el búfer de recepción es cero. Este bit es válido hasta que se lea el búfer de recepción (UDRn). El bit FEn es cero cuando el bit de parada de los datos recibidos
es uno. Ajuste siempre este bit a cero cuando se escribe a UCSRnA.

• Bit 3 - DORN datos rebasamiento

Este bit se establece si se detecta una condición de Datos rebasamiento. Un desbordamiento de datos se produce cuando el búfer de recepción está lleno (dos caracteres), es un

nuevo personaje de espera en el registro de desplazamiento de recepción, y se detecta un nuevo bit de inicio. Este bit es válido hasta que se lea el búfer de recepción (UDRn). Ajuste

siempre este bit a cero cuando se escribe a UCSRnA.

• Bit 2 - Upen: Error de paridad USART


Este bit se establece si el siguiente carácter en el búfer de recepción tenía un error de paridad cuando se reciben y la comprobación de la paridad fue habilitado en ese

momento (UPMn1 = 1). Este bit es válido hasta que se lea el búfer de recepción (UDRn). Ajuste siempre este bit a cero cuando se escribe a UCSRnA.

• Bit 1 - U2Xn: doble la velocidad de transmisión USART


Este bit sólo tiene efecto para el funcionamiento asíncrono. Escribir este bit a cero cuando se utiliza el funcionamiento síncrono. Escribiendo este bit a uno reducirá el

divisor del divisor de velocidad de transmisión 16-8 doblando efectivamente la velocidad de transferencia para la comunicación asincrónica.

• Bit 0 - MPCMn: Modo de comunicación multi-procesador


Este bit se activa el modo de comunicación multi-procesador. Cuando el bit MPCMn se escribe en uno, se ignorarán todas las tramas entrantes recibidos por
el receptor USART que no contienen información de dirección. El transmisor no se ve afectado por el ajuste MPCMn. Para obtener información más detallada
ver “Modo de comunicación multi-procesador” en la página 216 .

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 219


2549Q-AVR-02/2014
22.10.3 UCSRnB - Control y USART Registro de Estado n B

Poco 7 6 5 4 3 2 1 0

RXCIEn TXCIEn UDRIEn RXENn TXENn UCSZn2 RXB8n TXB8n UCSRnB

Leer escribir R/W R/W R/W R/W R/W R/W R R/W

Valor inicial 0 0 0 0 0 0 0 0

• Bit 7 - RXCIEn: RX completa habilitación de interrupción n

Escribiendo este bit a uno permite interrumpir en la bandera RXCn. Un USART Recibe interrupción completa se generará sólo si el bit RXCIEn se escribe en
uno, el indicador global de interrupciones en SREG se escribe en uno y se establece el bit RXCn en UCSRnA.

• Bit 6 - TXCIEn: TX completa habilitación de interrupción n

Escribiendo este bit a uno permite interrumpir en la bandera TXCn. Una interrupción completa de transmisión USART se generará sólo si el bit TXCIEn se escribe en
uno, el indicador global de interrupciones en SREG se escribe en uno y se establece el bit TXCn en UCSRnA.

• Bit 5 - UDRIEn: USART registro de datos vacío habilitación de interrupción n

Escribiendo este bit a uno permite interrumpir en la bandera UDREn. Una interrupción Vaciar registro de datos se generará sólo si el bit UDRIEn se escribe en
uno, el indicador global de interrupciones en SREG se escribe en uno y se establece el bit UDREn en UCSRnA.

• Bit 4 - RXENn: Receptor Habilitar n


Escribiendo este bit a uno permite al receptor USART. El receptor anulará la operación del puerto normal para el pasador RxDn cuando está activado. La
desactivación del receptor hará que se vacíe el buffer de recepción invalidar las Banderas pantanos y Dorn, y Upen.

• Bit 3 - TXENn: Transmisor Habilitar n


Escribiendo este bit a uno permite que el transmisor USART. El transmisor se anulará la operación del puerto normal para el pasador TxDn cuando está
activado. La desactivación del transmisor (escritura TXENn a cero) no entrará en vigencia hasta que se completen las transmisiones en curso y pendientes,
es decir, cuando la transmisión de registro en cascada y Búfer de transmisión Registro no contienen datos a transmitir. Cuando está desactivado, el
transmisor ya no anulará el puerto TxDn.

• Bit 2 - UCSZn2: Tamaño de carácter n

Los bits UCSZn2 combinan con la UCSZn1: 0 bit en UCSRnC establece el número de bits de datos (caracteres de tamaño) en un marco del Receptor y
Transmisor uso.

• Bit 1 - RXB8n: Recibe bits de datos 8 n


RXB8n es el noveno bit de datos del carácter recibido cuando se opera con los marcos de serie con nueve bits de datos. Debe leerse antes de leer los bits
bajos de UDRn.

• Bit 0 - TXB8n: transmisión de bits de datos 8 n

TXB8n es el noveno bit de datos en el carácter que se transmite cuando se opera con marcos de serie con nueve bits de datos. Debe ser escrito antes de escribir
los bits de menor a UDRn.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 220


2549Q-AVR-02/2014
22.10.4 UCSRnC - Control y USART Registro de Estado n C

Poco 7 6 5 4 3 2 1 0

UMSELn1 UMSELn0 UPMn1 UPMn0 USBSn UCSZn1 UCSZn0 UCPOLn UCSRnC

Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 1 1 0

• Los bits 7: 6 - UMSELn1: 0 USART Selección de Modo

Estos bits seleccionar el modo de funcionamiento de la USARTn como se muestra en Tabla 22-4 .

Tabla 22-4. UMSELn Bits Ajustes

UMSELn1 UMSELn0 Modo

0 0 USART asíncrono

0 1 USART síncrona

1 0 (Reservado)

1 1 Maestro SPI (MSPIM) ( 1)

Nota: 1. Ver “USART en modo SPI” en la página 227 para una descripción completa del funcionamiento Maestro Modo SPI (MSPIM).

• Los bits 5: 4 - UPMn1: 0: Modo de paridad

Estos bits permiten y establecer el tipo de generación de paridad y de verificación. Si está activado, el transmisor generará automáticamente y enviar la paridad
de los bits de datos transmitidos dentro de cada marco. El receptor generará un valor de paridad para los datos entrantes y compararlo con el valor UPMn. Si
se detecta una discrepancia, se fijará la bandera Upen en UCSRnA.

Tabla 22-5. UPMn Bits Ajustes

UPMn1 UPMn0 Modo de paridad

0 0 Discapacitado

0 1 Reservado

1 0 Habilitado, paridad par

1 1 Habilitado, paridad impar

• Bit 3 - USBSn: bit de parada Seleccione

Este bit selecciona el número de bits de parada que se inserta por el transmisor. El receptor ignora este ajuste.

Tabla 22-6. Ajustes de bits USBS

USBSn Bits de parada)

0 1-bit

1 2 bits

• Bit 2: 1 - UCSZn1: 0: tamaño de los caracteres

El UCSZn1: 0 bits combinados con el bit UCSZn2 en UCSRnB establece el número de bits de datos (caracteres de tamaño) en un marco del Receptor y
Transmisor uso.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 221


2549Q-AVR-02/2014
Tabla 22-7. UCSZn Bits Ajustes

UCSZn2 UCSZn1 UCSZn0 Tamaño de carácter

0 0 0 5-bit

0 0 1 6 bits

0 1 0 7 bits

0 1 1 8 bits

1 0 0 Reservado

1 0 1 Reservado

1 1 0 Reservado

1 1 1 9 bits

• Bit 0 - UCPOLn: Polaridad del Reloj

Este bit se utiliza para el modo síncrono solamente. Escribir este bit a cero cuando se utiliza el modo asíncrono. El bit UCPOLn establece la relación entre el
cambio de salida de datos y de la muestra de entrada de datos, y el reloj síncrono (XCKn).

Tabla 22-8. Ajustes de bits UCPOLn

Los datos transmitidos Cambiado Recibido datos muestreados


UCPOLn (Salida de TxDn Pin) (Entrada en RxDn Pin)

0 El aumento XCKn Edge La caída XCKn Edge

1 La caída XCKn Edge El aumento XCKn Edge

22.10.5 UBRRnL y UBRRnH - USART Baud Rate Registros

Poco 15 14 13 12 11 10 9 8

- - - - UBRR [11: 8] UBRRHn

UBRR [7: 0] UBRRLn

7 6 5 4 3 2 1 0

Leer escribir R R R R R/W R/W R/W R/W

R/W R/W R/W R/W R/W R/W R/W R/W

Valor inicial 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

• Bit 15:12 - Reservados Bits


Estos bits están reservados para uso futuro. Para la compatibilidad con futuros dispositivos, estos bits se debe escribir a cero cuando UBRRH está escrito.

• Bit 11: 0 - UBRR11: 0: Velocidad de transmisión USART Registro

Este es un registro de 12 bits que contiene la velocidad de transmisión USART. El UBRRH contiene los cuatro bits más significativos, y la UBRRL contiene los ocho bits
menos significativos de la velocidad de transmisión USART. transmisiones en curso por el transmisor y el receptor se dañarán si se cambia la velocidad de transmisión.
Escribiendo UBRRL desencadenará una actualización inmediata de la pre-escalador velocidad de transmisión.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 222


2549Q-AVR-02/2014
22.11 Ejemplos de velocidad en baudios Ajuste

Para frecuencias de cristal y el resonador estándar, las velocidades de transmisión más comúnmente utilizados para operación asincrónica se pueden generar mediante el uso

de la configuración UBRR en Tabla 22-9 a Tabla 22-12 en la página 226 . valores UBRR que producen una velocidad de transmisión real que difiere menos de 0,5% de la

velocidad de transmisión de destino, están en negrita en la tabla. calificaciones más altas de error son aceptables, pero el receptor tendrán menos resistencia al ruido cuando

las calificaciones de error son altas, especialmente para grandes marcos de serie (véase “Radio de acción asincrónica” en la página 215 ). Los valores de error se calculan

utilizando la siguiente ecuación:

BaudRate Partido más cercano


Error[%] = • -------------------------------------------------------- - 1 • • 100%
• BaudRate •

Tabla 22-9. Ejemplos de configuración UBRRn de frecuencias del oscilador más utilizadas

F = osc 1.0000MHz F = osc 1.8432MHz F = osc 2.0000MHz


Velocidad
U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1
de

UBRR
transmisión [bps] error UBRR error UBRR error UBRR error UBRR error UBRR error

2400 25 0,2% 51 0,2% 47 0,0% 95 0,0% 51 0,2% 103 0,2%

4800 12 0,2% 25 0,2% 23 0,0% 47 0,0% 25 0,2% 51 0,2%

9600 6 - 7,0% 12 0,2% 11 0,0% 23 0,0% 12 0,2% 25 0,2%

14.4K 3 8,5% 8 - 3,5% 7 0,0% 15 0,0% 8 - 3,5% dieciséis 2,1%

19.2K 2 8,5% 6 - 7,0% 5 0,0% 11 0,0% 6 - 7,0% 12 0,2%

28.8K 1 8,5% 3 8,5% 3 0,0% 7 0,0% 3 8,5% 8 - 3,5%

38.4K 1 - 18,6% 2 8,5% 2 0,0% 5 0,0% 2 8,5% 6 - 7,0%

57.6K 0 8,5% 1 8,5% 1 0,0% 3 0,0% 1 8,5% 3 8,5%

76.8K - - 1 - 18,6% 1 - 25,0% 2 0,0% 1 - 18,6% 2 8,5%

115.2 K - - 0 8,5% 0 0,0% 1 0,0% 0 8,5% 1 8,5%

230.4 K - - - - - - 0 0,0% - - - -

250K - - - - - - - - - - 0 0,0%

Max. ( 1) 62.5Kbps 125 kbps 115.2kbps 230.4Kbps 125 kbps 250Kbps

Nota: 1. UBRR = 0, Error = 0,0%

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 223


2549Q-AVR-02/2014
Tabla 22-10. Ejemplos de configuración UBRRn de frecuencias del oscilador más utilizadas

F = osc 3.6864MHz F = osc 4.0000MHz F = osc 7.3728MHz


Velocidad
U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1
de

UBRR
transmisión [bps] error UBRR error UBRR error UBRR error UBRR error UBRR 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% dieciséis 2,1% 34 - 0,8% 31 0,0% 63 0,0%

19.2K 11 0,0% 23 0,0% 12 0,2% 25 0,2% 23 0,0% 47 0,0%

28.8K 7 0,0% 15 0,0% 8 - 3,5% dieciséis 2,1% 15 0,0% 31 0,0%

38.4K 5 0,0% 11 0,0% 6 - 7,0% 12 0,2% 11 0,0% 23 0,0%

57.6K 3 0,0% 7 0,0% 3 8,5% 8 - 3,5% 7 0,0% 15 0,0%

76.8K 2 0,0% 5 0,0% 2 8,5% 6 - 7,0% 5 0,0% 11 0,0%

115.2 K 1 0,0% 3 0,0% 1 8,5% 3 8,5% 3 0,0% 7 0,0%

230.4 K 0 0,0% 1 0,0% 0 8,5% 1 8,5% 1 0,0% 3 0,0%

250K 0 - 7,8% 1 - 7,8% 0 0,0% 1 0,0% 1 - 7,8% 3 - 7,8%

0,5M - - 0 - 7,8% - - 0 0,0% 0 - 7,8% 1 - 7,8%

1M - - - - - - - - - - 0 - 7,8%

Max. ( 1) 230.4Kbps 460.8Kbps 250Kbps 0.5Mbps 460.8Kbps 921.6Kbps

Nota: 1. UBRR = 0, Error = 0,0%

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 224


2549Q-AVR-02/2014
Tabla 22-11. Ejemplos de configuración UBRRn de frecuencias del oscilador más utilizadas

F = osc 8.0000MHz F = osc 11.0592MHz F = osc 14.7456MHz


Velocidad
U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1
de

UBRR
transmisión [bps] error UBRR error UBRR error UBRR error UBRR error UBRR 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.2K 25 0,2% 51 0,2% 35 0,0% 71 0,0% 47 0,0% 95 0,0%

28.8K dieciséis 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 8 - 3,5% dieciséis 2,1% 11 0,0% 23 0,0% 15 0,0% 31 0,0%

76.8K 6 - 7,0% 12 0,2% 8 0,0% 17 0,0% 11 0,0% 23 0,0%

115.2 K 3 8,5% 8 - 3,5% 5 0,0% 11 0,0% 7 0,0% 15 0,0%

230.4 K 1 8,5% 3 8,5% 2 0,0% 5 0,0% 3 0,0% 7 0,0%

250K 1 0,0% 3 0,0% 2 - 7,8% 5 - 7,8% 3 - 7,8% 6 5,3%

0,5M 0 0,0% 1 0,0% - - 2 - 7,8% 1 - 7,8% 3 - 7,8%

1M - - 0 0,0% - - - - 0 - 7,8% 1 - 7,8%

Max. ( 1) 0.5Mbps 1Mbps 691.2Kbps 1.3824Mbps 921.6Kbps 1.8432Mbps

Nota: 1. UBRR = 0, Error = 0,0%

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 225


2549Q-AVR-02/2014
Tabla 22-12. Ejemplos de configuración UBRRn de frecuencias del oscilador más utilizadas

F = osc 16.0000MHz F = osc 18.4320MHz F = osc 20.0000MHz


Velocidad
U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1
de

UBRR
transmisión [bps] error UBRR error UBRR error UBRR error UBRR error UBRR error

2400 416 - 0,1% 832 0,0% 479 0,0% 959 0,0% 520 0,0% 1,041 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.2K 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 dieciséis 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 K 8 - 3,5% dieciséis 2,1% 9 0,0% 19 0,0% 10 - 1,4% 21 - 1,4%

230.4 K 3 8,5% 8 - 3,5% 4 0,0% 9 0,0% 4 8,5% 10 - 1,4%

250K 3 0,0% 7 0,0% 4 - 7,8% 8 2,4% 4 0,0% 9 0,0%

0,5M 1 0,0% 3 0,0% - - 4 - 7,8% - - 4 0,0%

1M 0 0,0% 1 0,0% - - - - - - - -

Max. ( 1) 1Mbps 2Mbps 1.152Mbps 2.304Mbps 1.25Mbps 2.5Mbps

Nota: 1. UBRR = 0, Error = 0,0%

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 226


2549Q-AVR-02/2014
23. USART en modo SPI

El Synchronous Universal y Receptor serie asíncronos y el transmisor (USART) pueden ajustarse a un modo compatible con SPI maestro de operación. El
modo Maestro SPI (MSPIM) tiene las siguientes características:

• Full Duplex, tres hilos de transferencia de datos síncrona


• Operación maestro
• Soporta todos los cuatro modos SPI de operación (modo 0, 1, 2, y 3)
• En primer lugar LSB o MSB de transferencia de First Data (Datos para configurable)

• Operación en cola (doble buffer)


• Generador de alta resolución velocidad de transmisión

• Operación de alta velocidad (fXCKmax = fck / 2)


• Generación de interrupción flexibles

23.1 Descripción general

Ajuste ambos UMSELn1: 0 bits a uno permite que el USART en la lógica MSPIM. En este modo de operación de la lógica de control maestro SPI tiene control
directo sobre los recursos USART. Estos recursos incluyen el transmisor y el receptor registro de desplazamiento y tampones, y el generador de velocidad en
baudios. El generador de paridad y corrector, la lógica de datos y recuperación de reloj, y el RX y TX lógica de control está desactivado. La lógica USART RX y
control TX se sustituye por una lógica común de control de transferencia SPI. Sin embargo, la lógica de control pin y lógica de generación de interrupción es idéntica
en ambos modos de funcionamiento.

Las ubicaciones de registro de E / S son los mismos en ambos modos. Sin embargo, algunas de las funciones del control de cambios registra cuando se utiliza
MSPIM.

23.2 USART MSPIM vs SPI

El AVR USART en modo MSPIM es totalmente compatible con el SPI AVR en relación con:

• Maestro diagrama modo de intervalo

• La funcionalidad UCPOLn bit es idéntico al bit CPOL SPI

• La funcionalidad UCPHAn bit es idéntico al bit SPI CPHA

• La funcionalidad UDORDn bit es idéntico al bit SPI DORD

Sin embargo, dado que el USART en modo MSPIM vuelve a utilizar los recursos USART, el uso de la USART en modo MSPIM es algo diferente en
comparación con el SPI. Además de las diferencias de los bits del registro de control, y que sólo el funcionamiento maestro está soportado por el USART en
modo MSPIM, las siguientes características difieren entre los dos módulos:

• El USART en modo MSPIM incluye buffering (doble) del transmisor. El SPI no tiene ninguna memoria intermedia

• El USART en receptor de modo MSPIM incluye un nivel tampón adicional

• El (Comentario de colisiones) bits SPI WCOL no está incluido en USART en modo MSPIM

• No se incluye el modo de doble velocidad SPI (SPI2X) bits. Sin embargo, el mismo efecto se logra mediante el establecimiento de UBRRn en consecuencia

• Interrumpir la sincronización no es compatible

• pin de control difiere debido a la maestra única operación de la USART en modo MSPIM Una comparación de la USART en modo

MSPIM y los pines SPI se muestra en la Tabla 23-4 en la página 235 .

23.2.1 Generación del Reloj

La lógica del reloj Generación genera el reloj base para el transmisor y el receptor. Para el modo USART MSPIM de operación sólo de generación de reloj
interno (es decir, funcionamiento maestro) es compatible. Por ello, la Dirección de Registro de Datos para el pasador XCKn (DDR_XCKn) debe ajustarse a
uno (es decir, como de salida) para el USART en MSPIM para operar

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 227


2549Q-AVR-02/2014
correctamente. Preferiblemente, el DDR_XCKn debe ser establecido antes de la USART en MSPIM está activado (es decir, TXENn y RXENn bit puesto a uno).

La generación de reloj interno utilizado en el modo de MSPIM es idéntico al modo maestro síncrono USART. Por consiguiente, el ajuste de velocidad de
transmisión o UBRRn se puede calcular usando las mismas ecuaciones, ver Tabla 23-1 .

Tabla 23-1. Ecuaciones para el cálculo de la velocidad en baudios registro de ajuste

Modo operativo Ecuación para calcular la velocidad en baudios ( 1) Ecuación para calcular UBRRn Valor

Modo maestro síncrono


F OSC F OSC
BAUDIO = --------------------------------------- UBRR norte = -------------------- - 1

2 UBRR norte 1 + • 2 BAUDIO

Nota: 1. La velocidad de transmisión se define para ser la velocidad de transferencia en bits por segundo (bps).

BAUDIO Velocidad de transmisión (en bits por segundo, bps).

F OSC Sistema de oscilador de frecuencia de reloj.

UBRRn Contenido de la UBRRnH y UBRRnL Registros, (0-4095).

SPI 23.3 Modos de datos y temporización

Hay cuatro combinaciones de XCKn fase (SCK) y la polaridad con respecto a los datos de serie, que están determinadas por los bits de control UCPHAn y UCPOLn. La
transferencia de datos diagramas de tiempo se muestran en la Figura 23-1 . Los bits de datos se desplazan hacia fuera y aseguradas en en los bordes opuestos de la
señal XCKn, asegurando tiempo suficiente para que las señales de datos se estabilice. La funcionalidad UCPOLn y se resume en UCPHAn Tabla 23-2 . Tenga en cuenta
que al cambiar la configuración de cualquiera de estos bits corromperá toda la comunicación en curso, tanto para el receptor y el transmisor.

Tabla 23-2. UCPOLn y UCPHAn funcionalidad.

UCPOLn UCPHAn Modo SPI Leading Edge borde posterior

0 0 0 Muestra (Rising) Configuración (Falling)

0 1 1 Configuración (Rising) Muestra (Falling)

1 0 2 Muestra (Falling) Configuración (Rising)

1 1 3 Configuración (Falling) Muestra (Rising)

La Figura 23-1. diagramas de tiempo de transferencia de datos UCPHAn y UCPOLn.

UCPOL = 0 UCPOL = 1
UCPHA = 1

XCK XCK

configuración de datos (TXD) configuración de datos (TXD)

muestra de datos (RXD) muestra de datos (RXD)

XCK XCK
UCPHA = 0

configuración de datos (TXD) configuración de datos (TXD)

muestra de datos (RXD) muestra de datos (RXD)

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 228


2549Q-AVR-02/2014
23.4 formatos de trama

Un marco de serie para el MSPIM se define para ser un carácter de 8 bits de datos. El USART en modo MSPIM tiene dos formatos de trama válidos:

• datos de 8 bits con MSB primeros

• datos de 8 bits con LSB primero

Una trama comienza con el bit de datos más significativo o menos. A continuación, los siguientes bits de datos, hasta un total de ocho, están teniendo éxito, terminando con el bit

más o menos significativo en consecuencia. Cuando se transmite una trama completa, una nueva trama puede seguir directamente, o la línea de comunicación se puede

establecer a un estado de reposo (alto).

El bit UDORDn en UCSRnC establece el formato de trama utilizado por el USART en modo MSPIM. El receptor y el transmisor utilizan la misma configuración.
Tenga en cuenta que al cambiar la configuración de cualquiera de estos bits corromperá toda la comunicación en curso, tanto para el receptor y el transmisor.

la transferencia de datos de 16 bits se puede lograr escribiendo dos bytes de datos a UDRn. Un UART interrupción de transmisión completa a continuación, la señal de que el valor de 16

bits se ha desplazado hacia fuera.

23.4.1 USART MSPIM inicialización

El USART en modo MSPIM tiene que ser inicializado antes de cualquier comunicación puede tener lugar. El proceso de inicialización normalmente consiste en establecer la

velocidad de transmisión, modo de ajuste maestro de funcionamiento (mediante el establecimiento de DDR_XCKn a uno), el establecimiento de formato de trama y permitiendo

que el transmisor y el receptor. Sólo el transmisor puede funcionar de forma independiente. Para interrupción impulsado operación USART, el indicador global de interrupción debe

ser limpiado (y por lo tanto las interrupciones deshabilitadas a nivel mundial) al hacer la inicialización. Nota:

Para asegurar una inicialización inmediata de la salida XCKn el registro de tasa de baudios (UBRRn) debe ser cero en el momento de activar el transmisor. Contrariamente
a la operación normal, el modo de USART UBRRn debe entonces ser escrita en el valor deseado después de que el transmisor está activado, pero antes de que se inicie
la primera transmisión. Configuración UBRRn a cero antes de activar el transmisor no es necesaria si la inicialización se realiza inmediatamente después de un reinicio
desde UBRRn se pone a cero.

Antes de hacer una re-inicialización con la tasa de cambio de transmisión, modo de datos o formato de cuadro, asegurarse de que no hay transmisiones en curso
durante el período se cambian los registros. La bandera TXCn se puede utilizar para verificar que el transmisor ha completado todas las transferencias, y la bandera
RXCn se puede utilizar para comprobar que no hay datos leídos en el buffer de recepción. Tenga en cuenta que la bandera TXCn debe ser limpiado antes de cada
transmisión (antes UDRn está escrito) si se utiliza para este propósito.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 229


2549Q-AVR-02/2014
Los siguientes ejemplos de código sencillo de inicialización USART muestran un montaje y una función C que son iguales en funcionalidad. Los ejemplos asumen sondeo (no
hay interrupciones habilitadas). La velocidad de transmisión se da como un parámetro de función. Para el código de montaje, se supone que el parámetro de velocidad de
transmisión para ser almacenado en la r17: R16 registros.

Ejemplo de código de montaje ( 1)

USART_Init:
CLR r18
afuera UBRRnH, r18

afuera UBRRnL, r18

; Ajuste del pin del puerto XCKn como salida, activa el modo maestro.
OSE XCKn_DDR, XCKn

; Establecer el modo de operación y MSPI de datos SPI modo 0.


LDI R18, (1 << UMSELn1) | (1 << UMSELn0) | (0 << UCPHAn) | (0 << UCPOLn)

afuera UCSRnC, r18

; Habilitar receptor y el transmisor.


LDI R18, (1 << RXENn) | (1 << TXENn)
afuera UCSRnB, r18; Establecer la

velocidad de transmisión.

; IMPORTANTE: La velocidad en baudios se debe establecer después de que el transmisor está activado!

afuera UBRRnH, r17

afuera UBRRnL, r18 ret

Ejemplo de código C ( 1)

vacío USART_Init ( unsigned int baudios) {

UBRRn = 0;
/ * Ajuste del pin del puerto XCKn como salida, activa el modo maestro. * / XCKn_DDR | = (1 << XCKn);

/ * Ajuste el modo de MSPI de modo de datos de operación y SPI 0. * / UCSRnC = (1 << UMSELn1) | (1

<< UMSELn0) | (0 << UCPHAn) | (0 << UCPOLn); / * Activar receptor y el transmisor. * / UCSRnB = (1

<< RXENn) | (1 << TXENn); / * Definición de la velocidad de transmisión. * /

/ * IMPORTANTE: La velocidad en baudios se debe establecer después de que el transmisor está activado * / UBRRn
= baudios; }

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 230


2549Q-AVR-02/2014
Transferencia de datos 23.5

Utilizando el USART en modo MSPI requiere que el transmisor esté habilitado, es decir, el bit TXENn en el Registro UCSRnB se pone a uno. Cuando se
activa el transmisor, el funcionamiento normal de puerto del pasador TxDn se anula y se le dio la función como salida de serie del transmisor. Habilitación del
receptor es opcional y se hace estableciendo el bit RXENn en el Registro UCSRnB a uno. Cuando se habilita el receptor, el funcionamiento normal de perno
del pasador RxDn se anula y se le dio la función como entrada serie del receptor. El XCKn será en ambos casos se utiliza como el reloj de transferencia.

Después de la inicialización del USART está listo para hacer la transferencia de datos. Una transferencia de datos se inicia escribiendo a la ubicación UDRn de E / S. Este es el caso

tanto para enviar y recibir datos desde el transmisor controla el reloj de transferencia. Los datos escritos en UDRn se mueve de la memoria intermedia de transmisión al registro de

desplazamiento cuando el registro de desplazamiento está listo para enviar una nueva trama. Nota:

Para mantener la memoria intermedia de entrada en sincronía con el número de bytes transmitidos de datos, el registro UDRn debe leerse una vez por cada byte transmitido. La
operación de memoria intermedia de entrada es idéntica al modo USART normal, es decir, si se produce un desbordamiento se perderá el último carácter recibido, no los primeros
datos en el búfer. Esto significa que si cuatro bytes son transferidos, byte 1 primero, a continuación, byte 2, 3, y 4, y el UDRn se no leen antes de que se completaron todas las
transferencias, entonces el byte 3 para ser recibidas se perderá, y no byte 1.

Los siguientes ejemplos de código muestran una USART simple en la función de transferencia del modo MSPIM basado en el sondeo de la bandera vacía Registro de
Datos (UDREn) y la bandera de recepción completa (RXCn). El USART tiene que ser inicializado antes de la función se puede utilizar. Para el código de montaje, los
datos a ser enviados se supone que es almacenado en el registro R16 y los datos recibidos estarán disponibles en el mismo registro (R16) después de la función
devuelve.

La función simplemente espera a que el buffer de transmisión esté vacío marcando la bandera UDREn, antes de cargarlo con nuevos datos a transmitir. La función
de espera entonces que los datos estén presentes en el búfer de recepción mediante la comprobación de la Bandera RXCn, antes de leer el tampón y devolver el
valor.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 231


2549Q-AVR-02/2014
Ejemplo de código de montaje ( 1)

USART_MSPIM_Transfer:
; Esperar a que buffer de transmisión vacía
sbis UCSRnA, UDREn
rjmp USART_MSPIM_Transfer
; Poner datos (R16) en el buffer, envía los datos
afuera UDRn, r16

; Esperar a que los datos sean recibidos


USART_MSPIM_Wait_RXCn:
sbis UCSRnA, RXCn
rjmp USART_MSPIM_Wait_RXCn
; Obtener y devolver los datos recibidos desde el buffer
en r16, UDRn ret

Ejemplo de código C ( 1)

unsigned char USART_Receive ( vacío )


{
/ * Espere buffer de transmisión vacío * /
mientras ( !( UCSRnA y (1 << UDREn))); / * Poner los datos en el
búfer, envía los datos * / UDRn = datos;

/ * Espere a que los datos que se recibirá * /


mientras ( !( UCSRnA y (1 << RXCn)));
/ * Obtener y devolver los datos recibidos desde el búfer * /
regreso UDRn; }

Nota: 1. Ver “Acerca del código de ejemplos” en la página 10.

23.5.1 Transmisor y el receptor Banderas e interrupciones

Las banderas RXCn, TXCn, y UDREn y las interrupciones correspondientes en USART en modo MSPIM son idénticas en su función a la operación normal USART.
Sin embargo, los indicadores de estado de error del receptor (Fe, DOR, y PE) no están en uso y siempre se lee como cero.

23.5.2 Deshabilitar el transmisor o receptor

La desactivación del transmisor o receptor en USART en modo MSPIM es idéntica en función a la operación normal USART.

23.6 USART MSPIM Registro Descripción

La siguiente sección describe los registros utilizados para la operación SPI usando el USART.

23.6.1 UDRn - USART MSPIM de E / S de datos de Registro

La función y el bit descripción del registro de datos USART (UDRn) en el modo MSPI es idéntica a la operación normal USART. Consulte “UDRn - USART E /
S de datos Registro n” en la página 218.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 232


2549Q-AVR-02/2014
23.6.2 UCSRnA - Control MSPIM USART y Registro de Estado n Un

Poco 7 6 5 4 3 2 1 0

RXCn TXCn UDREn - - - - - UCSRnA

Leer escribir R/W R/W R/W R R R R R

Valor inicial 0 0 0 0 0 1 1 0

• Bit 7 - RXCn: USART recibir información completa

Este bit indicador se establece cuando hay datos leídos en el buffer de recepción y se aclaró cuando el búfer está vacío (es decir, no contiene ningún dato no
leídos). Si el receptor está desactivado, el búfer de recepción se vaciará y por lo tanto el bit RXCn se convertirá en cero. La bandera RXCn se puede utilizar
para generar una interrupción completa de recepción (véase la descripción del bit RXCIEn).

• Bit 6 - TXCn: USART transmisión completa


Este bit indicador se establece cuando todo el marco en el Transmit Shift Register se ha desplazado hacia fuera y no hay nuevos datos actualmente presentes en la memoria

intermedia de transmisión (UDRn). El bit de bandera TXCn se borra automáticamente cuando se ejecuta una interrupción completa de la transmisión, o se puede borrar

escribiendo un uno a su ubicación poco. La bandera TXCn puede generar una interrupción completa de transmisión (véase la descripción de la broca TXCIEn).

• Bit 5 - UDREn: USART Registro de datos vacía


La bandera UDREn indica si el buffer de transmisión (UDRn) está listo para recibir nuevos datos. Si UDREn es uno, el buffer se vacía, y por lo tanto listo para ser
escrito. La bandera UDREn puede generar una interrupción de vacío Registro de datos (véase la descripción del bit UDRIE). UDREn se establece después de un
reinicio para indicar que el transmisor está listo.

• Bit 4: 0 - Reservados Bits en el modo MSPI

Cuando está en modo MSPI, estos bits están reservados para uso futuro. Para la compatibilidad con futuros dispositivos, estos bits deben ser escritos a cero cuando
UCSRnA está escrito.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 233


2549Q-AVR-02/2014
23.6.3 UCSRnB - Control MSPIM USART y Registro de Estado n B

Poco 7 6 5 4 3 2 1 0

RXCIEn TXCIEn UDRIE RXENn TXENn - - - UCSRnB

Leer escribir R/W R/W R/W R/W R/W R R R

Valor inicial 0 0 0 0 0 1 1 0

• Bit 7 - RXCIEn: RX completa habilitación de interrupción

Escribiendo este bit a uno permite interrumpir en la bandera RXCn. Un USART Recibe interrupción completa se generará sólo si el bit RXCIEn se escribe en
uno, el indicador global de interrupciones en SREG se escribe en uno y se establece el bit RXCn en UCSRnA.

• Bit 6 - TXCIEn: TX completa habilitación de interrupción

Escribiendo este bit a uno permite interrumpir en la bandera TXCn. Una interrupción completa de transmisión USART se generará sólo si el bit TXCIEn se escribe en
uno, el indicador global de interrupciones en SREG se escribe en uno y se establece el bit TXCn en UCSRnA.

• Bit 5 - UDRIE: USART registro de datos vacío habilitación de interrupción

Escribiendo este bit a uno permite interrumpir en la bandera UDREn. Una interrupción Vaciar registro de datos se generará sólo si el bit UDRIE se escribe en uno, el
indicador global de interrupciones en SREG se escribe en uno y se establece el bit UDREn en UCSRnA.

• Bit 4 - RXENn: Receptor Habilitar


Escribiendo este bit a uno permite que el receptor USART en modo MSPIM. El receptor anulará la operación del puerto normal para el pasador RxDn cuando está
activado. La desactivación del receptor hará que se vacíe el búfer de entrada. Sólo permitiendo que el receptor en el modo de 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 sólo se admite modo maestro.

• Bit 3 - TXENn: Transmisor Habilitar


Escribiendo este bit a uno permite que el transmisor USART. El transmisor se anulará la operación del puerto normal para el pasador TxDn cuando está
activado. La desactivación del transmisor (escritura TXENn a cero) no entrará en vigencia hasta que se completen las transmisiones en curso y pendientes,
es decir, cuando la transmisión de registro en cascada y Búfer de transmisión Registro no contienen datos a transmitir. Cuando está desactivado, el
transmisor ya no anulará el puerto TxDn.

• Bit 2: 0 - Reservados Bits en el modo MSPI

Cuando está en modo MSPI, estos bits están reservados para uso futuro. Para la compatibilidad con futuros dispositivos, estos bits deben ser escritos a cero cuando
UCSRnB está escrito.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 234


2549Q-AVR-02/2014
23.6.4 UCSRnC - Control MSPIM USART y Registro de Estado n C

Poco 7 6 5 4 3 2 1 0

UMSELn1 UMSELn0 - - - UDORDn UCPHAn UCPOLn UCSRnC

Leer escribir R/W R/W R R R R/W R/W R/W

Valor inicial 0 0 0 0 0 1 1 0

• Bit 7: 6 - UMSELn1: 0: Selección de modo USART

Estos bits seleccionar el modo de funcionamiento de la USART como se muestra en Tabla 23-3 . Ver “UCSRnC - Control y USART Registro de Estado n C” en la
página 221 para una descripción completa del funcionamiento normal USART. El MSPIM se activa cuando ambos bits UMSELn se fijan a uno. El UDORDn,
UCPHAn y UCPOLn se pueden establecer en la misma operación de escritura en la que se permitió a la MSPIM.

Tabla 23-3. UMSELn Bits Ajustes

UMSELn1 UMSELn0 Modo

0 0 USART asíncrono

0 1 USART síncrona

1 0 (Reservado)

1 1 Maestro SPI (MSPIM)

• Bit 5: 3 - Reservados Bits en el modo MSPI

Cuando está en modo MSPI, estos bits están reservados para uso futuro. Para la compatibilidad con futuros dispositivos, estos bits deben ser escritos a cero cuando
UCSRnC está escrito.

• Bit 2 - UDORDn: Orden de Datos

Cuando se establece en uno el LSB de la palabra de datos se transmite en primer lugar. Cuando se establece en cero el MSB de la palabra de datos se transmite en primer lugar. Referirse a “Modos

de datos SPI y sincronización” en la página 228 para detalles.

• Bit 1 - UCPHAn: Fase de reloj


El bit UCPHAn establecimiento de determinar si los datos son muestreados en el borde de arrendamiento (primera) o tizón (última) borde de XCKn. Referirse a “Modos de datos SPI y

sincronización” en la página 228 para detalles.

• Bit 0 - UCPOLn: Polaridad del Reloj

El bit UCPOLn establece la polaridad del reloj XCKn. La combinación de los ajustes UCPOLn y UCPHAn bits determinar la temporización de la transferencia de
datos. Referirse a “Modos de datos SPI y sincronización” en la página 228 para detalles.

23.6.5 UBRRnL y UBRRnH - USART MSPIM Baud Rate Registros

La función y el bit descripción de los registros de velocidad de transmisión en el modo MSPI es idéntica a la operación normal USART.
Consulte “UBRRnL y UBRRnH - USART Baud Rate registros” en la página 222.

Tabla 23-4. Comparación de USART en modo MSPIM y los pasadores de SPI.

USART_MSPIM SPI Comentario

TxDn MOSI Master Out única

RxDn MISO En maestra única

XCKn SCK (Funcionalmente idéntico)

(N / A) SS No es compatible con USART en MSPIM

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 235


2549Q-AVR-02/2014
Interfaz en serie 24. 2 hilos

24.1 Características

• Interfaz de comunicación pero potente y flexible simple, sólo dos líneas de autobuses necesaria
• Tanto el maestro como esclavo Operación compatibles

• Dispositivo puede funcionar como transmisor o receptor


• Espacio de direcciones de 7 bits Permite hasta 128 diferentes direcciones de esclavo

• Soporte multi-master Arbitraje


• Hasta 400kHz Velocidad de transferencia de datos

• -Velocidad de respuesta de salida limitada Drivers

• Supresión de ruido Circuitos Rechaza Spikes sobre líneas de autobuses

• Dirección auxiliar completamente programable con la ayuda de llamada general

• Reconocimiento abordar las causas de despertador Cuando AVR está en modo de suspensión

24.2 2-alambre de serie de definición de interfaz Bus

El interfaz en serie de 2 hilos (TWI) es ideal para aplicaciones típicas de microcontroladores. El protocolo TWI permite que el diseñador de sistemas para
interconectar hasta 128 dispositivos diferentes utilizando sólo dos líneas de bus bidireccional, uno para el reloj (SCL) y una para los datos (SDA). El único hardware
externo necesario para implementar el bus es una única resistencia de actuación para cada una de las líneas de bus TWI. Todos los dispositivos conectados al bus
tienen direcciones individuales, y mecanismos para resolver la contención de bus son inherentes en el protocolo TWI.

La Figura 24-1. Interconexión TWI autobús

V CC

El dispositivo 1 dispositivo 2 dispositivo 3 ........ dispositivo n R1 R2

SDA

SCL

24.2.1 TWI Terminología

Las siguientes definiciones se encuentran con frecuencia en esta sección.

Tabla 24-1. TWI Terminología

Término Descripción

Dominar El dispositivo que inicia y termina una transmisión. El Maestro también genera el reloj SCL

Esclavo El dispositivo dirigida por un Maestro

Transmisor El dispositivo de colocación de datos en el bus

Receptor Los datos de lectura del dispositivo en el bus

El bit de Reducción de Potencia TWI, poco PRTWI en “PRR0 - Reducción de potencia 0 Registro” en la página 55 debe ser escrito a cero para habilitar la interfaz de
serie de 2 hilos.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 236


2549Q-AVR-02/2014
24.2.2 La interconexión eléctrica

Como se representa en Figura 24-1 en la página 236 , Ambas líneas de bus están conectados a la tensión de alimentación positiva a través de resistencias pull-up. Los conductores de

autobús de todos los dispositivos TWI compatibles son de drenaje abierto o de colector abierto. Esto implementa una función wiredAND que es esencial para la operación de la interfaz. se

genera cuando uno o más dispositivos de salida TWI un cero Un nivel bajo en una línea de bus TWI. Un nivel alto de salida es cuando todos los dispositivos TWI ajuste por el estado de

sus salidas, permitiendo que las resistencias pull-up para tirar de la línea de alta. Tenga en cuenta que todos los dispositivos AVR conectados al bus TWI deben ser alimentados con el fin

de permitir que cualquier operación de autobuses.

El número de dispositivos que se pueden conectar al bus solamente está limitado por el límite de capacitancia del bus de 400pF y el espacio de dirección del esclavo 7 bits.
Una especificación detallada de las características eléctricas de la TWI se da en “Características de temporización SPI” en la página 363 . Dos conjuntos diferentes de
especificaciones se presentan allí, uno correspondiente a la velocidad del bus por debajo de 100 kHz, y uno válido para el autobús velocidades de hasta 400 kHz.

Transferencia de datos y 24.3 Formato de trama

24.3.1 Transferencia de Bits

Cada bit de datos transferidos en el bus TWI se acompaña de un pulso en la línea del reloj. El nivel de la línea de datos debe ser estable cuando la línea de
reloj es alta. La única excepción a esta regla es para la generación de condiciones de arranque y parada.

La Figura 24-2. Validez de datos

SDA

SCL

Estable de datos Estable de datos

Cambio de datos

24.3.2 Iniciar y detener Condiciones

El maestro inicia y termina una transmisión de datos. La transmisión se inicia cuando el maestro emite una condición de inicio en el autobús, y se termina
cuando el maestro emite un estado de STOP. Entre un inicio y una condición de parada, el autobús se considera ocupado, y ningún otro maestro debe tratar
de tomar el control del bus. Un caso especial se produce cuando una nueva condición START se emite entre un comienzo y el estado STOP. Esto se conoce
como condición START repetida, y se utiliza cuando el maestro desea iniciar una nueva transferencia sin renunciar al control del bus. Después de un
comienzo repetido, el autobús se considera ocupado hasta la siguiente parada. Esto es idéntico al comportamiento START, y por lo tanto START se utiliza
para describir ambos START y START repite para el resto de esta Hoja de datos, a menos que se indique lo contrario. Como se representa a continuación,

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 237


2549Q-AVR-02/2014
La Figura 24-3. START, START y STOP condiciones REPETIDO

SDA

SCL

COMIENZO STOP START ARRANQUE REPETIDO DETENER

24.3.3 Formato de la dirección de paquetes

Todos los paquetes de dirección de transmisión en el bus TWI son 9 bits de longitud, que consiste en 7 bits de dirección, uno LEER / bit de control de
escritura y un bit de acuse. Si se establece el bit READ / WRITE, una operación de lectura se va a realizar, de lo contrario una operación de escritura se debe
realizar. Cuando un esclavo reconoce que se está tratando, se debe reconocer tirando bajo SDA en el ciclo novena SCL (ACK). Si el esclavo direccionado
está ocupado, o por alguna otra razón no puede dar servicio a petición del Maestro, la línea SDA debe dejarse alta en el ciclo de reloj ACK. El Maestro
entonces puede transmitir una condición de parada, o un estado START repetida a iniciar una nueva transmisión. Un paquete de dirección que consiste en
una dirección del esclavo y una lectura o un poco WRITE se llama SLA + R o SLA + W, respectivamente. El MSB del byte de dirección se transmite primero.

Cuando se emite una llamada general, todos los esclavos deben responder tirando de la línea SDA baja en el ciclo de ACK. Un llamado general se utiliza cuando un maestro

desea transmitir el mismo mensaje a varios esclavos en el sistema. Cuando la dirección de llamada general seguido por un poco de escritura se transmite en el bus, todos los

esclavos configurados para reconocer la llamada general se tire de la línea SDA baja en el ciclo de acuse de recibo. Los siguientes paquetes de datos serán entonces

recibidos por todos los esclavos que reconocieron la convocatoria general. Tenga en cuenta que la transmisión de la dirección de llamada general seguido por un bit de

lectura no tiene sentido, ya que esto causaría la contención si varios esclavos comenzaron a transmitir datos diferentes. Todas las direcciones de la XXX formato de 1111

deben ser reservados para usos futuros.

La Figura 24-4. Formato de la dirección de paquetes

addr MSB Addr LSB R / W ACK

SDA

SCL

1 2 7 8 9

COMIENZO

Formato 24.3.4 Paquetes de Datos

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 condiciones de parada, mientras que el receptor es responsable de reconocer la recepción. Un
acuse de recibo (ACK) se señaliza por el receptor tirando de la baja línea SDA durante el ciclo de SCL novena. Si el receptor sale de la línea de alta SDA, un
NACK es señalado. Cuando el receptor ha recibido el último byte, o por alguna razón no puede recibir más bytes, debe informar al transmisor mediante el
envío de un NACK después de que el último byte. El MSB del byte de datos se transmite primero.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 238


2549Q-AVR-02/2014
La Figura 24-5. Formato de paquete de datos

MSB de datos Los datos LSB ACK

Agregar
SDA

SDA del
transmisor

SDA del
Receptor

SCL del
Maestro
1 2 7 8 9
PARADA, que se repite
SLA + R / W Byte de datos START o Siguiente
Byte de datos

24.3.5 La combinación de direcciones y los paquetes de datos en una transmisión

Una transmisión consiste básicamente en una condición START, un SLA + R / W, uno o más paquetes de datos y una condición de STOP. Un mensaje de vacío, que
consiste en un START seguida de una condición de parada, es ilegal. Tenga en cuenta que la WiredANDing de la línea SCL puede ser usado para implementar el
apretón de manos entre el maestro y el esclavo. El esclavo puede extender el período de baja SCL tirando de la línea de baja SCL. Esto es útil si la velocidad de reloj
creado por el Maestro es demasiado rápido para el esclavo, o el esclavo necesita tiempo adicional para el procesamiento entre las transmisiones de datos. El esclavo
se extiende el período de baja SCL no afectará el período de alto SCL, que se determina por el Maestro. Como consecuencia de ello, el esclavo puede reducir la
velocidad de transferencia de datos TWI prolongando el ciclo de trabajo SCL.

Figura 24-6 muestra una transmisión de datos típico. Tenga en cuenta que varios bytes de datos pueden ser transmitidos entre el SLA + R / W y la condición
de parada, dependiendo del protocolo de software ejecutado por el software de aplicación.

La Figura 24-6. Típica de Transmisión de Datos

addr MSB Addr LSB R / W ACK MSB de datos Los datos LSB ACK

SDA

SCL

1 2 7 8 9 1 2 7 8 9

COMIENZO SLA + R / W Byte de datos DETENER

24,4 Multi-master Sistemas de bus, el arbitraje, y Sincronización

El protocolo TWI permite a los sistemas de bus con varios maestros. preocupaciones especiales se han adoptado con el fin de garantizar que las transmisiones se
procederá de manera normal, incluso si dos o más maestros inician una transmisión al mismo tiempo. Se plantean dos problemas en los sistemas multi-master:

• Un algoritmo debe implementarse permitiendo que sólo uno de los maestros para completar la transmisión. Todos los otros maestros cese de la
transmisión cuando descubren que han perdido el proceso de selección. Este proceso de selección se llama arbitraje. Cuando un maestro contendiendo
descubre que ha perdido el proceso de arbitraje, debe cambiar inmediatamente a modo esclavo para comprobar si está siendo dirigida por el maestro
ganar. El hecho de que varios maestros han iniciado la transmisión al mismo tiempo no debe ser detectable a los esclavos, es decir, que los datos sean
transferidos en el bus no deben estar dañadas.

• Diferentes maestros pueden utilizar diferentes frecuencias SCL. Un esquema debe ser diseñado para sincronizar los relojes de serie de todos los
maestros, a fin de permitir la transmisión proceder de un modo unísono. Esto facilitará el proceso de arbitraje.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 239


2549Q-AVR-02/2014
El cable-AND de las líneas de bus se utiliza para resolver ambos problemas. Los relojes de serie de todos los maestros estarán conectados-unidos mediante AND,
produciendo un reloj combinado con un alto período igual a la del Maestro con el alto período más corto. La baja periodo del reloj combinada es igual al período de baja
del Maestro con el período más largo bajo. Tenga en cuenta que todos los maestros escuchan a la línea SCL, comenzando con eficacia para contar sus períodos de
alta y baja de tiempo de espera cuando la línea SCL SCL combinada pasa a nivel alto o bajo, respectivamente.

La Figura 24-7. SCL sincronización entre múltiples Masters

ejército de reserva bajo ejército de reserva alto

SCL de
Master A

SCL de
Master B

SCL autobús

Línea

tuberculosis bajo tuberculosis alto

Masters empezar a contar Masters empezar a contar


período de baja de alta Periodo

El arbitraje se llevará a cabo por todos los maestros de monitoreo continuo de la línea SDA después de la salida de datos. Si el valor leído de la línea SDA no
coincide con el valor que el Maestro tenía salida, que ha perdido el arbitraje. Tenga en cuenta que un maestro sólo puede perder el arbitraje cuando muestra un
alto valor de SDA mientras que otro maestro da salida a un valor bajo. El Maestro perdedora debe ir inmediatamente al modo Slave, comprobar si está siendo
dirigida por el Maestro ganar. La línea SDA debe dejarse alta, pero que pierden maestros están autorizados para generar una señal de reloj hasta el final del
paquete de datos o la dirección actual. Arbitraje continuará hasta que sólo un maestro sigue siendo, y esto puede tomar muchos bits. Si varios maestros están
tratando de resolver el mismo esclavo, el arbitraje continuará en el paquete de datos.

ATmega640 / V-1280 / V-1281 / V-2560 / V-2561 / V [folleto] 240


2549Q-AVR-02/2014

Potrebbero piacerti anche