Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Poco 7 6 5 4 3 2 1 0
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
Poco 7 6 5 4 3 2 1 0
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
Poco 7 6 5 4 3 2 1 0
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
Poco 7 6 5 4 3 2 1 0
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
Poco 7 6 5 4 3 2 1 0
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.
Poco 7 6 5 4 3 2 1 0
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
Poco 7 6 5 4 3 2 1 0
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
Poco 7 6 5 4 3 2 1 0
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
Poco 7 6 5 4 3 2 1 0
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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.
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.
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.
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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.
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.
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.
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.
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.
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.
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.
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
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.
Tn_sync
Tennesse DQ DQ DQ
(Para Reloj
Seleccione Logic)
LE
CLK I / O
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.
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.
CLK I / O
Claro
PSR10
Tn
sincronización
Tn
sincronización La
CSn0 CSn0
Csn1 Csn1
Csn2 Csn2
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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.
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.
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 .
Pin OC1C /
OC0A / PB7
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.
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.
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).
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.
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:
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
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.
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
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
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.
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
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 .
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.
tovn
(Int.Req.)
BUS DE DATOS
TOSC1
control
T/C
claro CLK Tennesse
TCNTn recuento lógica de prescaler Oscilador
inferior
TOSC2
CLK Tennesse Temporizador / contador de reloj, se hace referencia como CLK T2 en el siguiente.
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
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 .
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.
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.
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.
Flag Set
indicador de interrupción
TCNTn
OCnx (COMnx1: 0 = 2)
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
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).
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.
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
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.
actualización
TCNTn
OCnx (COMnx1: 0 = 2)
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.
• 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.
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 ).
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.
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) .
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 /
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
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.
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
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.
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.
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.
tovn I / O
CLK Tennesse
(CLK I / O / 1)
CLK
Figura 20-9 muestra los mismos datos de tiempo, pero con el prescaler habilitado.
CLK I / O
CLK Tennesse
(CLK I / O / 8)
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)
OCFnx
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)
TCNTn
PARTE SUPERIOR
OCRnx
OCFnx
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:
• 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:
2. Esperar hasta que la correspondiente bandera de ocupado Actualización en ASSR vuelve a cero.
• 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:
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.
CLK I / O
CLK T2S
10-BIT T / C pre-escalador
Claro
TOSC1
CLK T2S / 8
CLK T2S / 64
AS2
PSRASY
0
CS20
CS21
CS22
CLK T2
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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
Tabla 20-3 muestra el COM2A1: la funcionalidad de bit 0 cuando los WGM21: 0 bits se establecen en modo PWM rápido.
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.
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.
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
Tabla 20-6 muestra el COM2B1: la funcionalidad de bit 0 cuando los WGM22: 0 bits se establecen en modo PWM rápido.
0 1 Reservado
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.
0 1 Reservado
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.
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 ).
4 1 0 0 Reservado - - -
6 1 1 0 Reservado - - -
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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
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
Los tres bits de selección de reloj seleccionar la fuente de reloj para ser utilizado por el temporizador / contador, ver Tabla 20-9 .
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.
Poco 7 6 5 4 3 2 1 0
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.
Poco 7 6 5 4 3 2 1 0
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.
Poco 7 6 5 4 3 2 1 0
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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.
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.
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.
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.
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.
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
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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 /
• 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 /
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
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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.
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.
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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.
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:
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.
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.
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.
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:
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.
SPI_MasterInit:
; Establecer MOSI y SCK salida, toda la entrada de los demás
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)
SPI_SlaveInit:
; Ponga la salida MISO, todos los demás de entrada
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)
{
/ * Espera para la recepción completa * /
mientras(!( SPSR y (1 << SPIF)));
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.
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
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 .
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
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
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
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.
Cuando el bit DORD se escribe en uno, el LSB de la palabra de datos se transmite en primer lugar. Cuando el bit DORD
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.
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 .
0 Muestra Preparar
1 Preparar Muestra
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 .
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
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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).
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.
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.
Poco 7 6 5 4 3 2 1 0
Leer escribir R/W R/W R/W R/W R/W R/W R/W R/W
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.
22.1 Características
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
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.
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
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.
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.
UBRR
U2X
fosc
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:
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.
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.
Modo operativo Ecuación para calcular la velocidad en baudios ( 1) Ecuación para calcular UBRR Valor
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).
Algunos ejemplos de valores UBRRn para algunas frecuencias de reloj del sistema se encuentran en Tabla 22-9 en la página 223 .
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.
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
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).
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
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
• 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.
CUADRO
(OCIOSO) St 0 1 2 3 4 [5] [6] [7] [8] [PAG] Sp1 [Sp2] (St / IDLE)
OCIOSO No hay transferencias en la línea de comunicación (RxDn o TxDn). Una línea libre debe ser alta.
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.
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:
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.
velocidad de transmisión
1stop
jubilado
Ejemplo de código C ( 1)
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);
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
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.
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.
jubilado
Ejemplo de código C ( 1)
UDRn = datos; }
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.
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.
SBRC r17,0
OSE UCSRnB, TXB8; Poner datos LSB (r16) en búfer, envía los datos
jubilado
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.
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
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,
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.
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.
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.
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.
Ejemplo de código C ( 1)
regreso UDRn; }
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.
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.
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)
/ * desde el buffer * /
estado = UCSRnA; Resh = UCSRnB;
RESL = UDRn; / * Si el error, devuelve -1 *
/
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.
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.
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” .
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).
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.
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.
USART_Flush:
sbis UCSRnA, RXCn
ret
de r16, UDRn
rjmp USART_Flush
Ejemplo de código C ( 1)
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.
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).
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.
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.
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.
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
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.
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
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
Tabla 22-2. Recomendado error máximo receptor Velocidad de transmisión de modo de velocidad normal (U2Xn = 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.
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.
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.
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.
Poco 7 6 5 4 3 2 1 0
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 1 0 0 0 0 0
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).
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).
UDREn se establece después de un reinicio para indicar que el transmisor está listo.
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.
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
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.
divisor del divisor de velocidad de transmisión 16-8 doblando efectivamente la velocidad de transferencia para la comunicación asincrónica.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
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.
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.
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.
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.
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.
Poco 7 6 5 4 3 2 1 0
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
Estos bits seleccionar el modo de funcionamiento de la USARTn como se muestra en Tabla 22-4 .
0 0 USART asíncrono
0 1 USART síncrona
1 0 (Reservado)
Nota: 1. Ver “USART en modo SPI” en la página 227 para una descripción completa del funcionamiento Maestro Modo SPI (MSPIM).
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.
0 0 Discapacitado
0 1 Reservado
Este bit selecciona el número de bits de parada que se inserta por el transmisor. El receptor ignora este ajuste.
0 1-bit
1 2 bits
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.
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
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).
Poco 15 14 13 12 11 10 9 8
7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
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.
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
Tabla 22-9. Ejemplos de configuración UBRRn de frecuencias del oscilador más utilizadas
UBRR
transmisión [bps] error UBRR error UBRR error UBRR error UBRR error UBRR error
230.4 K - - - - - - 0 0,0% - - - -
250K - - - - - - - - - - 0 0,0%
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%
1M - - - - - - - - - - 0 - 7,8%
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%
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%
1M 0 0,0% 1 0,0% - - - - - - - -
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:
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.
El AVR USART en modo MSPIM es totalmente compatible con el SPI AVR en relación con:
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 (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
• 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
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
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 .
Modo operativo Ecuación para calcular la velocidad en baudios ( 1) Ecuación para calcular UBRRn Valor
Nota: 1. La velocidad de transmisión se define para ser la velocidad de transferencia en bits por segundo (bps).
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.
UCPOL = 0 UCPOL = 1
UCPHA = 1
XCK XCK
XCK XCK
UCPHA = 0
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:
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
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
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.
USART_Init:
CLR r18
afuera UBRRnH, r18
; Ajuste del pin del puerto XCKn como salida, activa el modo maestro.
OSE XCKn_DDR, XCKn
velocidad de transmisión.
; IMPORTANTE: La velocidad en baudios se debe establecer después de que el transmisor está activado!
Ejemplo de código C ( 1)
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
/ * IMPORTANTE: La velocidad en baudios se debe establecer después de que el transmisor está activado * / UBRRn
= baudios; }
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.
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
Ejemplo de código C ( 1)
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.
La desactivación del transmisor o receptor en USART en modo MSPIM es idéntica en función a la operación normal USART.
La siguiente sección describe los registros utilizados para la operación SPI usando el USART.
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 1 1 0
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).
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).
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 1 1 0
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.
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.
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.
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.
Poco 7 6 5 4 3 2 1 0
Valor inicial 0 0 0 0 0 1 1 0
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.
0 0 USART asíncrono
0 1 USART síncrona
1 0 (Reservado)
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.
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
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.
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.
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
• Reconocimiento abordar las causas de despertador Cuando AVR está en modo de suspensión
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.
V CC
SDA
SCL
Término Descripción
Dominar El dispositivo que inicia y termina una transmisión. El Maestro también genera el reloj SCL
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.
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
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.
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.
SDA
SCL
Cambio de datos
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,
SDA
SCL
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
SDA
SCL
1 2 7 8 9
COMIENZO
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.
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
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.
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
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.
SCL de
Master A
SCL de
Master B
SCL autobús
Línea
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.