Вы находитесь на странице: 1из 82

PIC16F / LF1825 / 1829

25,0 MAESTRO SÍNCRONO PORT serie del


módulo (MSSP1 Y MSSP2)

25.1 Maestro de la FSSPX (MSSPx) Descripción del módulo

El módulo maestro síncrono de puerto serie (MSSPx) es una interfaz serie útil
para la comunicación con otros dispositivos periféricos o microcontrolador.
Estos dispositivos periféricos pueden ser EEPROMs de serie, registros de
desplazamiento, controladores juegan dis-, convertidores A / D, etc. El módulo
MSSPx puede operar en uno de dos modos:

• Serial Peripheral Interface (SPI)


• Inter-Integrated Circuit (I 2 C ™)

La interfaz SPI es compatible con los siguientes modos y características:

• modo maestro
• modo esclavo
• La paridad del reloj

• Seleccione esclavo de sincronización (sólo en modo esclavo)

• La conexión en cadena de dispositivos esclavos

Figura 25-1 es un diagrama de bloques del módulo de interfaz SPI.

FIGURA 25-1: MSSPX DIAGRAMA DE BLOQUES (SPI MODO)

Bus de datos

Leer Escribir

SSPxBUF reg

S DI X

SSPxSR reg

S HACER X
Shift
Reloj

SS X
SSxControl 2 (CKP, CKE)
Habilitar Selección de reloj

Edge

Select

SSPxM <3: 0> bit 0

4
( salida TMR2
2
)
S CK X
prescaler T OSC
Seleccione
el filo 4, 16, 64

Generador
velocidad en baudios

poco TRIS (SSPxADD)

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 245


PIC16F / LF1825 / 1829

el I 2 interfaz de C soporta los siguientes modos y características: El PIC16F1829 tiene dos módulos MSSP, MSSP1 y MSSP2, cada
módulo operativo independientemente de la otra.

• modo maestro
• modo esclavo
• Byte NACKing (modo esclavo) Nota 1: En los dispositivos con más de un MSSP
• Multi-master apoyo limitado módulo, es muy importante prestar mucha atención a los

• 7 bits y 10-bit de direccionamiento nombres de los registros SSPxCONx. SSP1CON1 y


SSP1CON2 registros de control diferentes aspectos
• Iniciar y detener las interrupciones
operativos del mismo módulo, mientras que SSP1CON1 y
• enmascaramiento de interrupciones
SSP2CON1 controlan las mismas características para
• reloj de estiramiento
dos módulos diferentes.
• detección de colisión de bus

• Llamada general dirección coincidente


2: A lo largo de esta sección, refe- genérica
• enmascaramiento de direcciones cias a un módulo MSSP en cualquiera de sus modos de
• Modos de retención de datos de direcciones y Retención funcionamiento pueden interpretarse como siendo

• tiempos de espera sdaX seleccionables


igualmente aplicable a MSSP1 o MSSP2. registrar
nombres, módulo de E / S SIG-nales, y los nombres de bits
Figura 25-2 es un diagrama de bloques de la I 2 interfaz C ule mo- en modo
puede utilizar el designador genérico de 'x' para indicar el
maestro. Figura 25-3 es un diagrama de la I 2 módulo de interfaz de C en modo
uso de un número de distinguir un módulo en particular
esclavo.
cuando se requiera.

FIGURA 25-2: MSSPX DIAGRAMA DE BLOQUES (I 2 C ™ MODO MASTER)

bus de datos
interno
[SSPxM 3: 0]

Leer Escribir

SSPxBUF Velocidad de transmisión

Generador
(SSPxADD)

S DA X
sdaX Reloj
SSPxSR

MSb LSb
reloj Cntl

Reloj arbitrar / BCOL detectar

(Mantenga fuera fuente de reloj)

Bit de inicio, bits de parada,


Recibe Enable (RCEN)

Reconocer Generar
(SSPxCON2)

S CL X

Bit de inicio detectar,

Bit de parada detectar la colisión

SCLx en de escritura detectar Set / RESET: S, P, SSPxSTAT, WCOL, Shift SSPxOV


Estado contra el arbitraje Restablecer SEN, PEN (SSPxCON2)

Colisión de bus en de reloj para finales de Establecer SSPxIF, BCLxIF

XMIT / VN
Dirección detectar Partido

DS41440A páginas 246 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

FIGURA 25-3: MSSPX DIAGRAMA DE BLOQUES (I 2 C ™ modo esclavo)

Bus de datos
interno

Leer Escribir

SSPxBUF reg
CAROLINA DEL SUR lx

Shift
Reloj

SSPxSR reg

sdaX MSb LSb

SSPxMSK reg

Detectar coincidir addr Partido

SSPxADD reg

Iniciar y detener Set, Reset

bits Detectar S, P bits


(SSPxSTAT Reg)

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 247


PIC16F / LF1825 / 1829

25.2 Modo SPI general Durante cada ciclo de reloj SPI, una transmisión completa de datos dúplex se
produce. Esto significa que, si bien el dispositivo maestro está enviando el MSB de
El Serial Peripheral Interfaz de bus (SPI) es una su registro de desplazamiento (en su pasador SDOx) y el dispositivo esclavo está
sincrónica serie bus de comunicación de datos que funciona en modo leyendo este bit y guardarlo como el LSB de su registro de desplazamiento, que el
dúplex completo. Los dispositivos se comunican en un entorno de maestro / dispositivo esclavo también está enviando a cabo la MSB su registro de
esclavo en el que el dispositivo maestro inicia la comunicación. Un desplazamiento (en su pasador SDOx) y el dispositivo maestro está leyendo este
dispositivo esclavo es controlado a través de una selección de chip bit y guardarlo como el LSB de su registro de desplazamiento.
conocido como Slave Select.

El bus SPI especifica cuatro conexiones de señal: Después de 8 bits se han desplazado hacia fuera, el maestro y el esclavo
• Reloj serie (SCKx) han intercambiado valores de registro. Si hay más datos para el intercambio,
• Serie de datos de salida (SDOx) los registros de desplazamiento se cargan con nuevos datos y el proceso se

• Los datos en serie en (DAKOTA DEL SUR ix) repite. Si los datos son significativos o no (datos ficticios), depende del

• Slave Select (SSx) software de aplicación. Esto lleva a tres escenarios para la transmisión de
datos:
Figura 25-1 muestra el diagrama de bloques del módulo MSSPx cuando se
opera en el modo de SPI.

El bus SPI opera con un único dispositivo maestro y uno o más • Maestro envía datos útiles y esclavo envía datos ficticios.
dispositivos esclavos. Cuando se utilizan varios dispositivos esclavos, se
requiere un esclavo Seleccionar nection con- independiente del • Maestro envía datos útiles y esclavo envía datos útiles.
dispositivo maestro a cada dispositivo esclavo.
• Maestro envía datos ficticios y esclavo envía datos útiles.
Figura 25-4 muestra una conexión típica entre un dispositivo maestro y
múltiples dispositivos esclavos. El maestro selecciona sólo un esclavo a la vez. Las transmisiones pueden implicar cualquier número de ciclos de
La mayoría de los dispositivos esclavos tienen salidas de tres estados por lo reloj. Cuando no hay más datos a transmitir, el maestro deja de
que su señal de salida aparece desconectado del bus cuando no se enviar la señal de reloj y dese- lectos el esclavo.
seleccionan.

Cada dispositivo esclavo conectado al bus que no ha sido seleccionado a

Transmisiones implican dos registros de desplazamiento, ocho bits de través de su esclavo línea de selección debe disre- gard las señales de reloj y

tamaño, uno en el maestro y uno en el esclavo. Con el maestro o el de transmisión y no debe transmitir a cabo todos los datos de su propio.

dispositivo esclavo, los datos siempre se desplaza hacia fuera de un bit a la


vez, con el bit más significativo (MSB) cambió a cabo primero. Al mismo
tiempo, un nuevo bit menos significativo (LSB) se desplaza en el mismo
registro.

Figura 25-5 muestra una conexión típica entre dos procesadores configurados
como dispositivos maestros y esclavos. Los datos se desplazan fuera de los dos
registros de desplazamiento en el flanco de reloj programarse y asegurada en el
extremo opuesto del reloj.

El dispositivo maestro transmite información hacia fuera en su pin de salida


SDOx que está conectado a, y recibida por, pin de entrada SDIX del
esclavo. El dispositivo esclavo trans- mite información hacia fuera en su pin
de salida SDOx, que está conectado a, y recibida por, pin de entrada SDIX
del maestro.

Para iniciar la comunicación, el dispositivo maestro envía primero la señal


de reloj. Tanto el maestro y los dispositivos esclavos deben ser
configurados para el mismo reloj dad polarizan.

El dispositivo maestro inicia una transmisión enviando el MSB de su registro


de desplazamiento. El dispositivo esclavo lee este bit de esa misma línea y lo
guarda en el LSB posición de su registro de desplazamiento.

DS41440A páginas 248 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

FIGURA 25-4: MAESTRO ESCLAVO SPI Y CONEXIÓN MÚLTIPLE

SCKx SCKx
SPI Maestro
SDOx SDIX SDIX SPI esclavo
general de E / Dakota #1

S general I O del Sur buey SSx

general / E / S

SCKx

SDIX SPI esclavo

Dakota #2

del Sur buey SSx

SCKx

SDIX SPI esclavo

Dakota #3

del Sur buey SSx

25.2.1 REGISTRO DE MODO SPI

El módulo MSSPx tiene cinco registros encontrados para la operación en modo SPI.
Estos son:

• MSSPx registro STATUS (SSPxSTAT)


• MSSPx Registro de Control 1 (SSPxCON1)
• MSSPx Registro de Control 3 (SSPxCON3)
• MSSPx registro de datos de búfer (SSPxBUF)
• MSSPx dirección de registro (SSPxADD)
• MSSPx registro de desplazamiento (SSPxSR) (No

directamente accesible)

SSPxCON1 y SSPxSTAT son los registros de control y de estado en la


operación en modo SPI. El registro SSPxCON1 puede leerse y escribirse.
Los 6 bits inferiores de la SSPxSTAT son de sólo lectura. Los dos bits
superiores del SSPxSTAT son de lectura / escritura. En un modo maestro
SPI, SSPxADD puede ser cargado con un valor utilizado en la Tasa de
Generador de baudios. Más información sobre la tasa de baudios del
generador está disponible en

Sección 25.7 “Tasa generador de baudios” .

SSPxSR es el registro de desplazamiento utilizado para el desplazamiento de los


datos de entrada y salida. SSPxBUF proporciona acceso indirecto al registro SSPxSR.
SSPxBUF es el registro de memoria intermedia a la que se escriben los bytes de
datos, y de la que se leen los bytes de datos.

En las operaciones de recepción, SSPxSR y SSPxBUF juntos crean


un receptor tamponada. Cuando SSPxSR recibe un byte completo, se
transfiere a SSPxBUF y la interrupción SSPxIF se establece.

Durante la transmisión, el SSPxBUF no se amortigua. Una escritura a


SSPxBUF escribirá a ambos SSPxBUF y SSPxSR.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 249


PIC16F / LF1825 / 1829

25.2.2 SPI MODO DE FUNCIONAMIENTO Cualquier función de puerto serie que no se desea se puede anular
mediante la programación de la dirección de datos correspondiente (TRIS)
Al inicializar el SPI, varias opciones deben ser especificadas. Esto se realiza
registro para el valor opuesto. El MSSPx consta de a / recibir registro de
mediante la programación de los bits de control apropiados (SSPxCON1 <5:
transmisión de cambio (SSPxSR) y un registro tampón (SSPxBUF). El
0> y SSPxSTAT <7: 6>). Estos bits de control permiten que el siguiente a ser
SSPxSR desplaza los datos dentro y fuera del dispositivo, MSB. El
especificado:
SSPxBUF contiene los datos que se escriben en el SSPxSR hasta que los
• Modo maestro (SCKx es la salida del reloj) datos recibidos son listos. Una vez que se hayan recibido los 8 bits de datos,
• Modo esclavo (SCKx es la entrada de reloj) que byte se trasladó al registro SSPxBUF. A continuación, el Buffer Full

• La polaridad del reloj (estado de reposo del SCKx) Detect poco, BF de la SSPxSTAT registro, y el bit indicador de interrupción,
SSPxIF, se establecen. Esta doble tampón de los datos recibidos
• Fase de entrada de datos de la muestra (medio o al final del tiempo de salida de

datos)
(SSPxBUF) permite que el siguiente byte para iniciar la recepción antes de
leer los datos que se acaba de recibir. cualquier escritura
• Reloj EDGE (datos de salida en flanco ascendente / descendente de SCKx)

• Velocidad de reloj (sólo en el modo Maestro)


a la SSPxBUF registro durante
• Seleccione el modo esclavo (modo esclavo solamente)
la transmisión / recepción de datos será ignorada y la colisión de
Para habilitar el puerto serie, FSSPX bit de habilitación, SSPxEN del registro escritura detectar bits WCOL de los SSPxCON1 registrarse, se
SSPxCON1, se debe establecer. Para restablecer o el modo SPI figura establecerá. software de usuario debe borrar el bit WCOL para
reconstrucción, desactive la SSPxEN poco, vuelva a inicializar los registros permitir la escritura siguiente (s) a los SSPxBUF registro para
SSPxCONx y luego configurar el SSP xE bit N. Esto configura los pines SDIX, completar con éxito. Cuando el software de aplicación está a la
SDOx, SCKx y SSX como pines del puerto serie. Para los pasadores se comporten espera de recibir datos válidos, la SSPxBUF debe leerse antes de
como la función de puerto serie, algunos deben tener sus bits de dirección de datos que el siguiente byte de datos a transferir se escribe en el
(en el registro TRIS) apropiadamente programadas como si- mínimos: SSPxBUF. El tampón de bits completa, BF del registro SSPxSTAT,
indica cuando SSPxBUF se ha cargado con los datos recibidos
(transmisión está completa). Cuando se lee el SSPxBUF, se borra
• SDIX debe haber establecido el bit correspondiente tris el bit BF. Estos datos puede ser irrelevante si el SPI es solamente
un transmisor. Generalmente, la interrupción MSSPx se utiliza para
• SDOx debe tener la correspondiente TRIS poco se aclaró
determinar cuando la transmisión / recepción ha completado. Si el
• SCKx (modo Master) debe tener la correspondiente TRIS poco se
método de interrupción no va a ser utilizado,
aclaró

• SCKx (modo esclavo) debe tener correspondiente


TRI bit S
• SSx debe haber establecido el bit correspondiente tris

FIGURA 25-5: SPI MAESTRO / ESCLAVO DE CONEXIÓN

SPI Maestro SSPxM <3: 0> = 00xx SPI Slave SSPxM <3: 0> = 010x
= 1010
SDOx SDIX

Buffer de entrada serie Buffer de entrada serie


(BUF) (SSPxBUF)

SDIX SDOx
Registro de Registro de
desplazamiento (SSPxSR)
desplazamiento

(SSPxSR) MSb LSb MSb LSb


Reloj de serie
SCKx SCKx

S l AV mi SE Le Connecticut
E / S generales SSx
(Opcional) procesador 2
procesador 1

DS41440A páginas 250 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

25.2.3 SPI MODO MAESTRO La polaridad del reloj se selecciona programando adecuadamente el bit
CKP de los SSPxCON1 registro y el bit de CKE del registro SSPxSTAT.
El maestro puede iniciar la transferencia de datos en cualquier momento,
Esto entonces, daría formas de onda para la comunicación SPI como se
ya que controla la línea SCKx. El maestro determina cuando el esclavo
muestra en Figura 25-6 , Figura 25-8 y Figura 25-9 , Donde el MSB se
(procesador 2, Figura 25-5 ) Es para transmitir datos por el protocolo de
transmite primero. En el modo maestro, la velocidad de reloj SPI
software. En el modo maestro, los datos son transmitidos / recibidos tan
(velocidad de bits) es programable por el usuario para ser uno de los
pronto como el registro se escribe en SSPxBUF. Si el SPI sólo se va a
siguientes:
recibir, la salida SDOx podría ser dis- personas con capacidades
(programada como una entrada). El registro SSPxSR seguirá
desplazándose en la señal presente en el pin SDIX a la velocidad de reloj • F OSC / 4 (o T CY)

programado. Como se recibe cada byte, se carga en el registro SSPxBUF • F OSC / 16 (o 4 * T CY)
como si un byte recibido normal (interrupciones y bits de estado valor • F OSC / 64 (o 16 * T CY)
apropiado). • Salida de Timer2 / 2

• F OSC / ( 4 * (SSPxADD + 1))

Figura 25-6 muestra las formas de onda para el modo maestro. Cuando se
establece el bit CKE, los datos SDOx es válida antes de que haya un flanco de
reloj en SCKx. El cambio de la muestra de entrada se muestra basado en el
estado del bit de SMP. Se muestra el momento en que el SSPxBUF se carga
con los datos recibidos.

FIGURA 25-6: SPI MODO DE ONDA (MODO MASTER)

Escribir en
SSPxBUF

SCKx (CKP =
0
CKE = 0)

SCKx (CKP =
1
CKE = 0)
4 modos
de reloj
SCKx (CKP =
0
CKE = 1)

SCKx (CKP =
1
CKE = 1)

SDOx 7 bits 6 bits 5 bits 4 bits 3 bits bit 2 bit 1 bit 0


(CKE = 0)

SDOx 7 bits 6 bits 5 bits 4 bits 3 bits bit 2 bit 1 bit 0


(CKE = 1)

(SMP = 0)
7 bits bit 0

entrada de

muestras

(SMP
de = 0)
muestras

SSPxBUF
SDIX
(SMP = 1)
7 bits bit 0

SDIX Entrada

= 1)

SSPxIF (SMP

SSPxSR a

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 251


PIC16F / LF1825 / 1829

25.2.4 MODO SPI ESCLAVO 25.2.5 SLAVE SELECT sincronización La Slave Select

En el modo esclavo, los datos se transmiten y se reciben en forma de pulsos de reloj también se puede utilizar para sincronizar comuni- cación. Seleccione

externas aparecen en SCKx. Cuando está cerrada la última parte, se establece el bit
la línea esclavo se mantiene alta hasta que el dispositivo maestro está

indicador de interrupción SSPxIF. Antes de activar el módulo en modo SPI esclavo, la


listo para comunicarse. Cuando la línea Esclavo Select está a nivel

línea de reloj debe coincidir con el estado de reposo adecuado. La línea de reloj se
bajo, el esclavo sabe que una nueva transmisión se está iniciando. Si

puede observar mediante la lectura de la clavija SCKx. El estado de reposo se


el esclavo no recibe la comunicación correctamente, se pone a cero al

determina por el bit CKP del registro SSPxCON1. Mientras que en modo esclavo, el
final de la transmisión, cuando la línea Esclavo Seleccionar vuelve a
un estado alto. El esclavo está listo para recibir una nueva transmisión
reloj externo es suministrado por la fuente de reloj externa sobre el pasador SCKx.
cuando la línea Slave Select está a nivel bajo de nuevo. Si no se
Este reloj exter- nos debe cumplir con los tiempos mínimos de alta y baja según se
utiliza la línea Esclavo Select, existe el riesgo de que el esclavo
especifica en las especificaciones eléctricas. Mientras que en el modo de suspensión,
Eventualmente no estar sincronizado con el maestro. Si el esclavo
el esclavo puede transmitir / recibir datos. El registro de desplazamiento tiene una
pierde un poco, siempre será un bit apagado en el futuro las
velocidad de la entrada de pin SCKx y cuando se recibe un byte, el dispositivo
transmisiones. El uso de la línea de esclavos Select permite el esclavo
generaciones eRate una interrupción. Si está habilitado, el dispositivo despertar de su
y el amo de alinearse al comienzo de cada transmisión. lav Modo de
sueño.
correo. El SPI debe estar en modo esclavo con control de pin SSx
habilitada (SSPxCON1 <3: 0> = 0100).

25.2.4.1 Configuración de conexión en cadena

El bus SPI a veces se puede conectar en una configuración de cadena de


margarita. La primera salida esclavo está conectada a la segunda entrada
de esclavo, la segunda salida esclavo está conectada a la tercera entrada Cuando el pasador SSx es baja, transmisión y recepción están habilitados y
de esclavo, y así sucesivamente. La salida esclavo final se conecta a la el pasador SDOx es impulsado. Cuando el pasador SSx pasa a nivel alto, el
entrada principal. Cada esclavo envía, durante un segundo grupo de pulsos pasador SDOx ya no es impulsado, aunque en medio de un byte transmitido y
de reloj, una copia exacta de lo que fue recibido en el primer grupo de se convierte en una salida flotante. resistencias pull-up / pull-down externos
pulsos de reloj. toda la cadena actúa como una pueden ser deseables dependiendo de la apli- cación.

gran desplazamiento de comunicación registro. los


característica de cadena de margarita sólo requiere un único Slave Select línea desde el

dispositivo maestro. Nota 1: Cuando el SPI es en modo esclavo con SSx


pin de control activada (SSPxCON1 <3: 0 > =
Figura 25-7 muestra el diagrama de bloques de una típica conexión de conexión
0100), el módulo SPI se restablecerá si el pin SSx se establece
en cadena cuando se opera en el modo de SPI. En una configuración de
en V DD.
cadena de margarita, sólo el más reciente byte en el bus se requiere por el
2: Cuando el SPI se utiliza en Slave mo Delaware con
esclavo. El establecimiento del bit del registro BOEN SSPxCON3 permitirá
conjunto CKE; el usuario debe activar el control de pin SSx.
escribe a los SSPxBUF registrar, incluso si el byte anterior no se ha leído. Esto
permite que el software para ignorar los datos que no se pueden aplicar a la
misma. 3: Mientras que opere en modo de SPI Slave la
SMP bit del registro SSPxSTAT debe quedar claro.

Cuando se restablece el módulo SPI, la counte bits r es forzado a ' 0 '. Esto se
puede hacer por cualquiera de forzar el pasador SSx a un alto nivel o borrar
el bit SSPxEN.

DS41440A páginas 252 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

FIGURA 25-7: SPI conectar en cadena CONEXIÓN

SCK SCK
SPI Maestro
SDOx SDIX SDIX SPI esclavo
general de Dakota #1

E/S del Sur buey SSx

SCK

SDIX SPI esclavo

Dakota #2

del Sur buey SSx

SCK

SDIX SPI esclavo

Dakota #3

del Sur buey SSx

FIGURA 25-8: FORMA DE ONDA ESCLAVO SELECT SÍNCRONOS

SCKx (CKP =
0
= 0)

SCKx (CKP =
1
CKE = 0)

Escribir en
SSPxBUF
Registro de desplazamiento SSPxSR y
recuento de bits se restablecen
SSPxBUF a
SSPxSR

SSPxBUF SSx
Interrupt CKE

SDOx 7 bits 6 bits 7 bits 6 bits bit 0

bit 0

de muestras 7 bits 7 bits

SDIX Entrada

SSPxIF

Bandera

SSPxSR a

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 253


PIC16F / LF1825 / 1829

FIGURA 25-9: SPI MODO DE ONDA (modo esclavo CON CKE = 0)

opcional

SCKx (CKP =
0
= 0)

SCKx (CKP =
1
CKE = 0)

Escribir en
SSPxBUF

SSPxBUF SSx
SDOx 7 bits 6 bits 5 bits 4 bits 3 bits bit 2 bit 1 bit 0
Interrupt CKE

de muestras 7 bits bit 0

SDIX Entrada

escritura colisión Válido

SSPxIF

bandera

SSPxSR a

detección activa de

Figura 25-10: SPI MODO DE ONDA (modo esclavo CON CKE = 1)

no es opcional

SCKx (CKP =
0
= 1)

SCKx (CKP =
1
CKE = 1)

Escribir en
SSPxBUF
Válido

SSPxBUF
SDOx SSx 7 bits 6 bits 5 bits 4 bits 3 bits bit 2 bit 1 bit 0
Interrupt CKE

de muestras 7 bits bit 0

SDIX Entrada

SSPxIF

Bandera

SSPxSR a

Escribe detección de

colisiones activo

DS41440A páginas 254 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

25.2.6 SPI funcionamiento en modo SLEEP en modo maestro SPI, relojes de En el modo Maestro SPI, cuando se selecciona el modo de reposo, todos los

módulo puede estar funcionando a una velocidad diferente que cuando está en relojes del módulo se detuvieron y la transmi- sión / recepción permanecerá en ese
estado hasta que el dispositivo se activa. Después de que el aparato vuelve al
modo de máxima potencia; en el caso del modo de suspensión, todos los relojes
modo de marcha, la ULE mo- reanudará la transmisión y recepción de datos. En el
se detienen. Especial cuidado debe ser tomado por el usuario cuando el reloj
modo SPI esclavo, el SPI Transmitir / Recibir registro de desplazamiento funciona
MSSPx es mucho más rápido que el reloj del sistema. En el modo esclavo, cuando
de forma asíncrona al dispositivo. Esto permite que el dispositivo que se coloca en
se habilitan las interrupciones MSSPx, después de que el maestro se completa el
el modo de suspensión y los datos que se desplaza hacia el / Recibir registro de
envío de datos, una interrupción MSSPx despertará el controlador del sueño. Si no desplazamiento de transmisión SPI. Cuando se han recibido todos los 8 bits, el bit
se desea una salida del modo de suspensión, Rupts MSSPx inter deben ser indicador de interrupción MSSPx se establecerá y si está activado, se activará el

desactivados. dispositivo.

TABLA 25-1: RESUMEN DE registros asociados CON SPI FUNCIONAMIENTO

inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página

Ansela - - - ANSA4 - ANSA2 ANSA1 ANSA0 129

ANSELB ( 1) ANSB7 ANSB6 ANSB5 ANSB4 - - - - 136

ANSELC ANSC7 ( 1) ANSC6 ( 1) - - ANSC3 ANSC2 ANSC1 ANSC0 141

APFCON0 RXDTSEL SDOSEL ( 2) SSSEL ( 2) - T1GSEL TXCKSEL - - 125

APFCON1 - - SDO2SEL ( 1) SS2SEL ( 1) P1DSEL P1CSEL P2BSEL CCP2SEL 126

INLVLA - - INLVLA5 ( 1) INLVLA4 ( 1) INLVLA3 INLVLA2 INLVLA1 INLVLA0 131

INLVLB ( 1) INLVLB7 INLVLB6 INLVLB5 INLVLB4 - - - - 136

INLVLC INLVLC7 ( 1) INLVLC6 ( 1) INLVLC5 INLVLC4 INLVLC3 INLVLC2 INLVLC1 ( 1) INLVLC0 ( 1) 142

INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 93

PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94

PIR1 TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF 98

SSP1BUF Puerto serie síncrono búfer de recepción / transmisión Registro 249 *

SSP1CON1 WCOL SSPOV SSPEN CKP SSPM <3: 0> 294

SSP1CON3 ACKTIM PCIE SCIE BOEN SDAHT SBCDE UNA GALLINA DHEN 296

SSP1STAT SMP CKE D/A PAG S R/W UA BF 293

TRISA - - TRISA5 ( 1) TRISA4 ( 1) TRISA3 TRISA2 TRISA1 TRISA0 129

TRISB ( 1) TRISB7 TRISB6 TRISB5 TRISB4 - - - - 135

TRISC TRISC7 ( 1) TRISC6 ( 1) TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 ( 1) TRISC0 ( 1) 140

Leyenda: - = Unimplemented ubicación, leído como ' 0 '. Las celdas sombreadas no son utilizados por el MSSP1 en modo SPI.
* Página proporciona información de registro.
Nota 1: PIC16F / LF1829 solamente.
2: PIC16F / LF1825 solamente.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 255


PIC16F / LF1825 / 1829

25.3 yo 2 C DESCRIPCIÓN GENERAL DE MODO Figura 25-11: yo 2 C MAESTRO / CONEXIÓN


SLAVE
El autobús Circuito Inter-Integrated (I²C) es un bus de comunicación de datos en
serie de varios maestros. Los dispositivos se comunican en un entorno de
V re re
maestro / esclavo, donde los dispositivos maestros iniciar la comunicación. Un
dispositivo esclavo es controlado a través de direccionamiento. el I 2 C bus
especifica dos conexiones de señal: SCLx SCLx

V re re
• Reloj serie (SCLx) Dominar Esclavo
• Los datos de serie (sdaX)
sdaX sdaX
Figura 25-11 muestra el diagrama de bloques del módulo MSSPx cuando
se opera en I 2 el modo C.

Tanto las conexiones SCLx y sdaX son líneas de drenaje abierto


bidireccionales, cada uno resistencias pull-up que requieren para la tensión de El bit de acuse de recibo (ACK) es una señal activa baja, que mantiene la
alimentación. Tirando de la línea a tierra se considera un cero lógico y dejar que línea sdaX bajo para indicar al mitter trans- que el dispositivo esclavo ha
el flotador línea se considera un uno lógico.
recibido los datos ted transmi- y está listo para recibir más. La transición de
un bit de datos siempre se realiza mientras la línea SCLx se mantiene baja.
Figura 25-11 muestra una conexión típica entre dos procesadores Las transiciones que se producen mientras la línea SCLx se mantiene alta se
configurados como dispositivos maestros y esclavos. el I 2 C bus puede utilizan para indicar los bits de inicio y parada.

operar con uno o más dispositivos maestros y uno o más dispositivos


esclavos. Hay cuatro modos posibles de operación para un dispositivo
dado: Si el maestro tiene la intención de escribir en el esclavo, entonces manera repetida
envía un byte de d ATA, con el esclavo de responder después de cada byte con un
bit ACK. En este ejemplo, el dispositivo maestro está en el modo de transmisión
• Transmitir modo maestro
maestro y el esclavo es esclavo en modo de recepción. Si el maestro tiene la
(Maestro está transmitiendo datos a un esclavo)
intención de leer desde el esclavo, entonces recibe repetidamente un byte de dat un
• Maestro modo de recepción
lado a otro m el esclavo, y responde después de cada byte con un bit de ACK. En
(Maestro está recibiendo datos de un esclavo)
este ejem- plo, el dispositivo maestro está en modo de recepción principal y el
• Transmitir modo esclavo
esclavo es el modo de transmisión esclavo. En el último byte de los datos
(Esclavo está transmitiendo datos a un maestro)
comunicados, el dispositivo maestro puede terminar la transmisión mediante el
• Recibir el modo esclavo
envío de un bit de parada. Si el dispositivo maestro está en R ECEI ve modo, se
(Esclavo está recibiendo datos desde el maestro) Para iniciar la
envía el bit de parada en el lugar del último bit ACK. Un bit de parada se indi- cado
comunicación, un dispositivo maestro comienza en el modo Maestro de
por un bajo-a-alto transición de la línea sdaX mientras que la línea SCLx se
transmisión. El dispositivo maestro envía un bit de inicio seguido por el byte de
mantiene alta.
dirección del esclavo tiene la intención de comunicar. Esto es seguido por un
GLE bit de lectura / escritura pecado, que determina si el ter Mas- tiene la
intención de transmitir o recibir datos desde el dispositivo esclavo.

En algunos casos, el maestro puede querer mantener trol con- del autobús y
volver a iniciar otra transmisión. Si es así, el dispositivo maestro MA Y Se nd
Si existe el esclavo solicitado en el autobús, se res pon d con un bit de
otro bit de inicio en lugar del bit de parada o el último bit de ACK, cuando
reconocimiento, conocido de otra manera como un ACK. El maestro continúa
está en modo de recepción. el I 2 C bus especifica tres protocolos de
entonces, ya sea en modo de transmisión o modo de recepción y el esclavo
mensajes;
continúa en el com- plemento, ya sea en modo de recepción o el modo de
transmisión, respectivamente.
• Un solo mensaje, donde un maestro escribe datos en un esclavo.

Un bit de inicio está indicado por una transición de alto a bajo de la línea de sdaX
mientras que la línea SCLx se mantiene alta. Dirección y datos de bytes se envían, el • Un solo mensaje, donde un maestro lee datos de un esclavo.
bit más significativo (MSB) en primer lugar. El Leer bits / escritura se envía como un
uno lógico cuando el maestro tiene la intención de leer datos desde el esclavo, y se • mensaje donde un maestro inicia un mínimo de dos escrituras, o
envía como un cero lógico cuando se tiene la intención de escribir datos en el esclavo. dos lecturas, o una combinación de escrituras y lecturas, a uno o
más esclavos combinado.

DS41440A páginas 256 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

Cuando un dispositivo está transmitiendo un uno lógico, o dejar que el flotador 25.3.2 ARBITRAJE Cada dispositivo maestro debe controlar el bus para
línea, y un segundo dispositivo está transmitiendo un cero lógico, o que los bits de inicio y parada. Si el dispositivo detecta que el bus está ocupado, no
sostiene la línea de baja, el primer dispositivo puede detectar que la línea no puede comenzar un nuevo mensaje hasta que el autobús regresa a un estado
es un uno lógico. Esta detección, cuando se utiliza en la línea de SCLx, se
inactivo.
denomina reloj de estiramiento. Reloj de estiramiento da dispositivos esclavos
un mecanismo para controlar el flujo de datos. Cuando se utiliza esta detección
en la línea sdaX, se llama arbitraje. Arbitraje asegura que sólo hay cando un Sin embargo, dos dispositivos maestros pueden tratar de iniciar una
dispositivo maestro comuni- en cualquier momento único. trans- misión en o alrededor del mismo tiempo. Cuando esto ocurre, el
proceso de arbitraje comienza. Cada transmisor comprueba el nivel de
la línea de datos sdaX y lo compara con el nivel que se espera
encontrar. El primer transmisor de observar que los dos niveles no
25.3.1 ESTIRA RELOJ coinciden, pierde arbitra- ción, y debe dejar de transmitir en la línea

Cuando un dispositivo esclavo no se ha completado el procesamiento de datos,


sdaX. Por ejemplo, si un transmisor mantiene la línea sdaX a un uno

se puede retrasar la transferencia de más datos a través del proceso de reloj de


lógico (deja que flote) y un segundo transmisor mantiene a un cero

estiramiento. Un dispositivo esclavo direccionado puede ser la baja línea de reloj


lógico (tira de él bajo), el resultado es que la línea sdaX será bajo. El

SCLx después de recibir o enviar un poco, lo que indica que aún no está listo
primer transmisor entonces observa que el nivel de la línea es diferente

para con- tinue. El maestro que se comunica con el esclavo intentará elevar la
de lo esperado y concluye que otro transmisor está comunicando.

línea SCLx con el fin de transferir el siguiente bit, pero detectará que la línea de
reloj aún no ha sido puesto en libertad. Debido a la conexión SCLx es de drenaje
abierto, el esclavo tiene la capacidad de mantener que el bajo de línea hasta que
está listo para continuar la comunicación. Reloj de estiramiento permite que los El primer transmisor a notar esta diferencia es la que pierde el arbitraje y
receptores que no pueden mantenerse al día con un transmisor para controlar el debe dejar de conducir la línea sdaX. Si este transmisor es también un
flujo de datos de entrada. dispositivo maestro, sino que también debe dejar de conducir la línea
SCLx. A continuación, puede monitorear las líneas para una condición de
parada antes de intentar volver a emitir su transmisión. Mientras tanto, el
otro dispositivo que no ha notado ninguna diferencia entre los niveles
esperados y reales en la línea sdaX continúa con su transmisión original.
Puede hacerlo sin las complicaciones, ya que hasta ahora, la transmisión
aparece exactamente como se esperaba con ningún otro transmisor de
perturbar el mensaje.

Modo esclavo de transmisión también puede ser arbitrado, cuando un maestro se


dirige varios esclavos, pero esto es menos com- mon.

Si dos dispositivos maestros están enviando un mensaje a dos dispositivos


esclavos dife- rentes en la etapa de la dirección, el envío de la dirección del
esclavo menor maestro siempre gana ción arbitra-. Cuando dos dispositivos
maestros envían mensajes a la misma dirección de esclavo, y direcciones a
veces puede referirse a varios esclavos, el proceso de arbitraje debe continuar
en la etapa de los datos. Arbitraje por lo general se produce muy raramente,
pero es un proceso preciso proceder para el buen soporte multi-maestro.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 257


PIC16F / LF1825 / 1829

25.4 yo 2 C MODO DE FUNCIONAMIENTO TABLA 25-2: yo 2 TÉRMINOS BUS C

TÉRMINO Descripción
Todo lo MSSPx 2 Comunicación C es el byte orientado y desplazado a
cabo MSB. Seis registros SFR y 2 banderas de interrupción Transmisor El dispositivo que desplaza los datos a cabo en

interaccionan con el módulo con el PIC ® Troller microcon- y software de el bus.


usuario. Dos pasadores, sdaX y SCLx, son ejercidas por el módulo para Receptor El dispositivo que desplaza los datos desde
comunicarse con otro externo 2 dispositivos c. el bus.

Dominar El dispositivo que inicia una transferencia, genera


señales de reloj y terminología nates una
25.4.1 BYTE FORMATO Toda la comunicación en la Primera 2 C se realiza en
transferencia.
segmentos de 9 bits. Un byte es enviado desde un maestro a un esclavo o
Esclavo El dispositivo direccionado por el ter Mas-.
viceversa, seguida por un bit de reconocimiento enviado de vuelta. Después de
la caída de borde 8 de la línea SCLx, el dispositivo de salida de datos en la
Multi-master Un autobús con más de un dispositivo que puede
sdaX cambia que el pasador a una entrada y lee en un valor de acuse de recibo
iniciar la transferencia de datos.
en el siguiente pulso de reloj.
Arbitraje Procedimiento para garantizar que sólo un
maestro a la vez controla el bus. Ganar el
arbitraje asegura que el mensaje no está
La señal de reloj, SCLx, es proporcionada por el maestro. Los datos son válidos dañado.
para cambiar mientras que la señal SCLx es baja, y se tomaron muestras en el
Procedimiento de sincronización para sincronizar el
flanco ascendente del reloj. Los cambios en la línea sdaX mientras que la línea
relojes de dos o más dispositivos en el bus.
SCLx es alta definen condiciones especiales en el autobús, se explican a
continuación.
Ocioso Sin principal es controlar el bus, y las dos
25.4.2 DEFINICIÓN DE I 2 C Terminología Hay lenguaje y la líneas sdaX y SCLx son altos.
terminología en la descripción de lo 2 C comunicación que tienen
definiciones específicas para I 2 C. Que uso de la palabra se define a Activo Cualquier uno o más dispositivos maestros de

continuación y se puede utilizar en el resto de este documento sin tiempo son el control del bus.

explicación. Esta tabla se adaptó de la Phillips I 2 especificación C. esclavo El dispositivo esclavo que ha recibido una
direccionado dirección coincidente y activa está siendo
registrado por un maestro.

coincidencia de byte de dirección que se registró en un esclavo que


25.4.3 SDAX Y SCLX Selección PINS de cualquier I 2 Modo C con el conjunto Dirección coincide con el valor almacenado en SSPxADD.
de bits SSPxEN, obliga a los pasadores SCLx y sdaX ser de drenaje abierto.

Estos pasadores deben ser fijados por el usuario a las entradas por SEt- ting de petición de escritura Esclavo recibe una dirección coincidente con R /

los bits TRIS apropiados. W poco clara, y está listo para reloj en los datos.

Leer Solicitud Maste r envía un byte de dirección con


Nota: Los datos se ata a la salida de cero cuando un I 2 do
el conjunto / W R ​bits, lo que indica que no desea que
modo está activado.
los datos del reloj del esclavo. Estos datos son los
siguientes y todos los siguientes bytes hasta un reinicio
25.4.4 SDAX TIEMPO DE ESPERA
o Detener.

El tiempo de retención del pasador sdaX se selecciona por el bit del registro SDAHT
SSPxCON3. tiempo de espera es el tiempo sdaX se mantiene válida después del El estiramiento del reloj Cuando un dispositivo en la bodega del autobús
flanco de bajada de SCLx. El establecimiento del bit SDAHT selecciona una más SCLx bajo para detener la comunicación.
larga 300 ns mini-tiempo de retención madre y puede ayudar en los autobuses con
colisión de bus En cualquier momento en la línea sdaX es muestreada
gran capacitancia.
por el módulo bajo, si bien es OUT- putting y estado de
alta esperado.

DS41440A páginas 258 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

25.4.5 La condición de arranque I 2 especificación de C define una 25.4.7 REINICIO CONDICIÓN el reinicio es válida cualquier momento que un

condición de arranque como una transición de sdaX de un alto a un parada sería válida. Un maestro puede emitir un reinicio si desea mantener el

estado bajo mientras que la línea SCLx es alta. A condición de arranque autobús después de terminar el paso de la corriente. Un reinicio tiene el mismo

está siempre gene- ated por el maestro y significa la transición del bus de efecto sobre el esclavo que un comienzo sería, restableciendo toda la lógica de

un inactivo a un estado activo. Figura 25-10 esclavos y el acondicionamiento para el reloj en una dirección. El maestro
puede querer abordar el mismo u otro esclavo.

muestra formas de onda para las condiciones de inicio y parada. Una colisión de

bus puede ocurrir en una condición de inicio si las muestras del módulo de la línea

de baja sdaX antes de afirmar que baja. Esto no se ajusta a la I 2 C Especificación En el modo esclavo de direccionamiento de 10 bits es necesario reiniciar para el
que indica ninguna colisión de bus puede ocurrir en un inicio. maestro a los datos del reloj del esclavo direccionado. Una vez que un esclavo se
ha abordado plenamente, Match- ing dos bytes alto y bajo de dirección, el
maestro puede ISS u ea Reiniciar y la alta dirección de byte con el bit R / W. La
25.4.6 CONDICIÓN DE PARADA
lógica esclavo a continuación, mantenga el reloj y se preparan para datos de reloj

Una condición de parada es una transición de la línea sdaX de bajo a estado a cabo. Después de un partido lleno con R / W claro en el modo de 10 bits, una

alto mientras que la línea SCLx es alta. bandera partido antes se establece y mainta yo Ned. Hasta que un estado STOP,
una dirección de altura con fósforo clara, o de alta dirección de R / W falla.
Nota: Al menos un tiempo de baja SCLx debe aparecer
antes de una parada es válida, por lo tanto, si la línea sdaX pasa a nivel

bajo a continuación, una vez más alta, mientras que la línea SCLx se

mantiene alta, sólo se detecta la condición de inicio.

MASKING 25.4.8 START / STOP condición de interrupción

Los bits SCIE y PCIE del registro SSPxCON3 pueden permitir la generación
de una interrupción en los modos de esclavos que normalmente no
soportan esta función. Modos de esclavos, donde interrumpen el inicio y
parada del detectan ya están habilitados, estos bits no tendrán ningún
efecto.

Figura 25-12: yo 2 C iniciar y detener CONDICIONES

sdaX

SCLx
S PAG

Cambio de los Cambio de los

datos permitió datos permitió


Condición Condición de

de inicio parada

Figura 25-13: yo 2 C REINICIO CONDICIÓN

sr

Cambio de los
Cambio de los
datos permitió
datos permitió
Reiniciar

Condición

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 259


PIC16F / LF1825 / 1829

25.4.9 ACUSE DE SECUENCIA El noveno pulso SCLx para cualquier 25.5 yo 2 C Esclavo MODO
byte transferido en I 2 C está dedicado como un acuse de recibo. Permite
dispositivos de recepción para responder de vuelta al transmisor tirando El modo MSSPx Slave opera en uno de cuatro modos seleccionados en los bits

de la línea de baja sdaX. El transmisor debe liberar trol con- de la línea de SSPxM de ister SSPxCON1 REG. Los modos se pueden dividir en modo de
direccionamiento de 7 bits y 10 bits. Modos de direccionamiento de 10 bits
durante Thi s tiempo para cambiar en la respuesta. El Reconocimiento
funcionan de la misma como 7 bits con un poco de sobrecarga adicional para el
(ACK) es una señal activa baja, por tracción ing la línea baja sdaX
manejo de las direcciones más grandes. Modos con Inicio y las interrupciones
indica al transmisor de que el dispositivo ha recibido los datos
bit de parada operado el mismo que los otros modos con SSPxIF
transmitidos y está listo para recibir más.
adicionalmente conseguir crear después de la detección de un Start, Restart o
detener condición.

El resultado de un ACK se coloca en el bit del registro ACKSTAT


SSPxCON2. software de esclavo, cuando el AH ES y se establecen los
bits Dhen, permiten al usuario ajustar el valor de ACK enviado de vuelta 25.5.1 modo esclavo aborda el registro SSPxADD ( Registro 25-6 )

al transmisor. El bit ACKDT del ister REG SSPxCON2 se establece / Contiene la dirección de modo esclavo. El primer byte recibido

despejado para determinar la respuesta. hardware esclavo va a generar después de un arranque o condición de reinicio se compara con el

una respuesta ACK si los bits Ahen y Dhen del registro SSPxCON3 son valor almacenado en este registro. Si coincide con el byte, el valor se

claras. carga en el registro los SSPxBUF y se genera una interrupción. Si el


valor no coincide, el módulo pasa inactivo y no se da ninguna
indicación al soft- ware que le ocurría algo. El registro de máscara
FSSPX ( Registro 25-5 ) Afecta el proceso de correspondencia de
Hay ciertas condiciones en las que un ACK no será enviado por el
direcciones. Ver Sección 25.5.9 “FSSPX registro de máscara” para
esclavo. Si se establece el bit BF del registro SSPxSTAT o el bit del
más información.
registro SSPxOV SSPxCON1 cuando se recibe un byte.

Cuando se aborda el módulo, después de la caída de borde 8 de


SCLx en el autobús, se establece el bit del registro ACKTIM 25.5.1.1 I 2 C Esclavo de 7 bits Modo de direccionamiento En el modo de direccionamiento
SSPxCON3. El bit ACKTIM indica el tiempo de reconocer del bus de 7 bits, el bit menos significativo del byte de datos recibidos se tiene en cuenta al

activo. El bit de estado ACKTIM sólo se activa cuando se activa el determinar si existe una coincidencia de dirección.

bit o bit Ahen DHEN.

25.5.1.2 I 2 C Slave 10-bit de modo de direccionamiento En el modo de


direccionamiento de 10 bits, el primer byte recibido se compara con el valor
binario de 1 1 1 1 0 A9 A8 0 '. A9 y A8 son los dos MSB del la dirección de 10
bits y se almacenan en los bits 2 y 1 del registro SSPxADD. Después de que
el acuse de recibo del byte alto el bit UA se establece y SCLx se mantiene
baja hasta que las actualizaciones de usuario con la dirección de SSPxADD
baja. El byte de dirección bajo es sincronizado en y todos los 8 bits se
comparan con el valor de dirección baja en SSPxADD. Incluso si no hay una
coincidencia de dirección; SSPxIF y UA se establecen, y SCLx se lleva a cabo
bajo hasta SSPxADD se actualiza para recibir un byte alto de nuevo. Cuando
se actualiza SSPxADD el bit UA se borra. Esto asegura que el módulo está
listo para recibir el byte de dirección en lo alto de la próxima comunicación. Un
partido de alto y bajo dirección como una petición de escritura se requiere en
el inicio de los 10-bit de direccionamiento comuni- cación. Una transmisión
puede ser iniciado por la emisión de un reinicio una vez que el esclavo es ad re ressed,
y en la hora en la alta dirección con el bit R / W. El hard- ware esclavo
entonces reconocer la petición de lectura y pre- parar a los datos de reloj a
cabo. Esto sólo es válido para un esclavo después de que haya recibido una
coincidencia completa de alta y baja byte de dirección.

DS41440A páginas 260 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

25.5.2 RECEPCIÓN SLAVE Cuando el R / W b eso de un byte de 25.5.2.2 Recepción de 7 bits con recepción dispositivo Ahen y DHEN
dirección coincidente recibido es clara, el bit R / W del registro Esclavo con Ahen y DHEN operación ajustado el mismo que sin estas

SSPxSTAT se borra. La dirección recibida se carga en el registro opciones con interrupciones adicionales y reloj de estiramiento añadido

SSPxBUF y reconocido. después del flanco de otoño-ing 8 de SCLx. Estos interrumpe un adicional llo
w el software esclavo que decidir si quiere ACK o la dirección de byte de
datos de recepción, en lugar del Hardware. Esta funcionalidad añade
Cuando existe la condición de desbordamiento para una dirección
soporte para PMBus ™ que no estaba presente en las versiones
recibida, entonces no se reconoce es dado. Una condición de
anteriores de este módulo. Esta lista describe los pasos que deben ser
desbordamiento se define como se establece ya sea bit BF bit del
tomadas por el software esclavo de utilizar estas opciones para que 2 C
registro SSPxSTAT, o se establece bit SSPxOV bit del registro
catión commun-. Figura 25-15 muestra un módulo usando tanto la dirección
SSPxCON1. El bit BOEN del registro SSPxCON3 modifica esta
operación. Para más información, ver Registro 25-4 . y la retención de datos. Figura 25-16 incluye la operación con el bit SEN de
los SSPxCON2 conjunto de registros.

Una interrupción MSSPx se genera para cada byte de datos transferido.


bit indicador, SSPxIF, debe ser limpiado por el software.

1. S poco de SSPxSTAT se establece; SSPxIF se establece si rupt inter en Inicio


Cuando se establece el bit del registro SEN SSPxCON2, SCLx se llevará a
detectar es ena licenciado en Derecho ed.
cabo bajo (estiramiento del reloj) después de cada byte recibido. El reloj
debe ser puesto en libertad al establecer el bit CKP del registro 2. dirección coincidente con / W bit R claro está sincronizado en. SSPxIF se

SSPxCON1, excepto algunas veces en el modo de 10 bits. Ver Sección establece y CKP se aclaró después de la caída de borde 8 de SCLx.

25.2.3 “Modo maestro SPI” para más detalles.


3. Esclavo despeja el SSPxIF.
4. Esclavo puede mirar en el bit ACKTIM de los SSPxCON3 registro
25.5.2.1 7 bits de direccionamiento de recepción
para desalentar la mina si el SSPxIF fue después o antes del
En esta sección se describe una secuencia estándar de eventos para el módulo ACK.
MSSPx configurado como un I 2 C esclavo en el modo de direccionamiento de 7 5. esclavo lee el valor de la dirección de SSPxBUF, despejando el BF bandera.
bits. Todas las decisiones tomadas por las mercancías o software hardware y su
efecto en la recepción.
6. Slave establece el valor ACK velocidad de reloj a cabo al maestro mediante el
Figura 25-13 y Figura 25-14 se utiliza como una referencia visual para establecimiento de ACKDT.
esta descripción.
7. Esclavo libera la CLOC kb CKP y configuración.
Este es un proceso paso a paso de lo que normalmente se debe hacer 8. SSPxIF se establece después de un ACK, no después de un NACK.
para lograr que 2 comunicación C.
9. Si SEN = 1 el eslavo e hardware se estirará el reloj después de la
ACK.
1. Bit de arranque detectado.

2. S poco de SSPxSTAT se establece; SSPxIF se establece si rupt inter en Inicio 10. esclavo borra SSPxIF.
detectar es ena segundo LED.
Nota: SSPxIF todavía se establece después del flanco de bajada de la novena
3. dirección coincidente con / i borrar el bit W R s rec eived. SCLx incluso si no hay reloj de estiramiento y BF se ha
4. El esclavo tira sdaX enviar un ACK al maestro baja, y borrado. Sólo si NACK se envía al maestro se SSPxIF no
establece SSPxIF bits. establecido
5. El software borra el bit SSPxIF. 11. SSPxIF ajustarse y CKP aclarado después del 8 de flanco de bajada de SCLx
6. El software lee dirección recibida de para un byte de datos recibido.
SSPxBUF borrar el indicador BF. 12. Slave mira ACKTIM poco de SSPxCON3 para determinar la
7. Si SEN = 1; el software esclavo ajusta CKP poco para soltar la fuente de la interrupción.
línea SCLx. 13. esclavo lee los datos recibidos desde SSPxBUF BF claro.
8. Los relojes principales fuera un byte de datos.

9. Esclavo impulsa sdaX enviar un ACK al maestro baja, y 14. Pasos 7-14 son los mismos para cada uno recibió byte de datos.
establece SSPxIF bits.
10. Software borra SSPxIF. 15. Communicat ion está terminado por cualquiera de los esclavos

11. Software lee el byte recibido de SSPxBUF BF claro. el envío de un ACK = 1, o el maestro envía una condición de
parada. Si una parada y de alarma se envía sobre el Stop Detect

12. Pasos 8-12 se repiten para todos los bytes procedentes del está desactivada, el esclavo sólo sabrá sondeando el bit P del

maestro. registro SSTSTAT.

13. Maestro envía condición de parada, el ajuste p poco de SSPxSTAT,


y el autobús va inactivo.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 261


Figura 25-14:

DS41440A páginas 262


De esclavo a maestro

Recepción de Dirección Recibiendo información Recibiendo información ACK = 1


sdaX
A7 A6 A5 A4 A3 A2 A1 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D5 D4 D3 D2 D1 D0 STOP C o ndition
PIC16F / LF1825 / 1829

SCLx
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
S P Bus Master envía

Preliminar
SSPxIF

SSPxIF estableció el 9 de
Aprobado por el software Aprobado por el software flanco de bajada de SCLx

BF

En primer byte de
SSPxBUF se lee datos está disponible
en SSPxBUF

SSPxOV
yo 2 C SLAVE, DIRECCIÓN 7-BIT, recepción (SEN = 0, Ahen = 0, DHEN = 0)

SSPxOV porque


SSP xBUF todavía está lleno.

ACK no se envía. conjunto

2010 Microchip Technology Inc.



Figura 25-15:

Bus Master envía


condición de parada

2010 Microchip Technology Inc.


recibir dirección Recibir datos Recibir datos
ACK
R/W=0 ACK
sdaX A7 A6 A5 A4 A3 A2 A1 ACK D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0

SCLx S 1 2 3 4 5 6 7 8 9 SEN 1 2 3 4 5 6 7 8 9 SEN 1 2 3 4 5 6 7 8 9 PAG

establece en " 1 '

SSPxIF

SSPxIF estableció el 9 de
Aprobado por el software Aprobado por el software descendente de SCLx

Preliminar
BF
En primer byte de
datos está disponible
Reloj SSPxBUF se lee se mantiene baja hasta CKP se en SSPxBUF

SSPxOV

conjunto SSPxOV porque


SSP xBUF todavía está lleno.

ACK no se envía.
yo 2 C SLAVE, DIRECCIÓN 7-BIT, recepción (SEN = 1, Ahen = 0, DHEN = 0)

CKP

SCLx no se lleva a cabo


CKP se escribe ' 1 'En el software, CKP se escribe 1 en el software,
bajo porque el flanco
liberando SCLx liberando SCLx
ACK = 1
PIC16F / LF1825 / 1829

DS41440A páginas 263


Maestro envía
Figura 25-16:

Relea maestro ses SdaX a esclavo para la


secuencia de ACK condición de parada

DS41440A páginas 264


Recepción de Dirección Recibiendo información Los datos recibidos
sdaX ACK C.A. K = 1

A7 A6 A5 A4 A3 A2 A1 ACK D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0

SCLx

S 12345678 912345678 912345678 9 PAG

SSPxIF

Si Ahen = 1: SSPxIF se encuentra en ed


SSPxIF se establece
caer noveno ge de SCLx, Aprobado por el software sin interru pt
PIC16F / LF1825 / 1829

después de ACK después de no ACK


BF del Esclavo

Dirección se
lee de SSBUF Los datos se leen desde SSPxBUF
ACKDT

esclavo de software
CLEA rs ACKDT a ACK el esclavo de software

byte recibido establece una CK DT de

Preliminar
no ACK
CKP

Cuando DHEN = 1:
CKP es despejado por hardware y SCLx CKP establecido por el software,
CKP es despejado por hardware en el
se estira se libera SCLx
octavo flanco de bajada de SCLx
flanco de bajada de SCLx Cuando Ahen = 1:
ACKTIM

ACKTIM establecido por hardware en el octavo ACKTIM despejado por el


ACKTIM establecido por el hardware
hardware en el flanco en octavo flanco de bajada de SCLx
yo 2 C SLAVE, DIRECCIÓN 7-BIT, recepción (SEN = 0, Ahen = 1, DHEN = 1)

ascendente 9 de SCLx


S

PAG

2010 Microchip Technology Inc.



Figura 25-17:

comunicados de maestros
R/W=0
SdaX a esclavo para la secuencia de ACK

2010 Microchip Technology Inc.


R ECE yo vin gramo Anuncio re re ss R ECE yo cinco re a un R ECE yo cinco re a un
ACK
sdaX
ACK ACK
A7 A6 A5 A4 A3 A2 A1 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 condición de parada

SCLx
12345678 9 12345678 9 12345678 P maestro envía
9
S

SSPxIF
No en terru pt después si
Aprobado por el software
no ACK del Esclavo

BF
Recibido
dirección se carga en SSPxBUF Los datos recibidos se encuentra SSPxBUF puede ser
disponible en SSPxBUF
byte es cargado
ACKDT

Preliminar
softw esclavo son despeja
eslavo ES No
ACKDT a ACK cualquier momento antes del próximo
termina ACK
el byte recibido
CKP
Cuando Ahen = 1; i CKP N ° s t borra si no
Cuando DHEN = 1;
en el octavo flanco de bajada de Establecido por software, lea ACK
en el octavo flanco de bajada de SCLx
SCLx de un byte de dirección, de un byte de datos recibidos, CKP se liberación SCLx
CKP se borra borra
yo 2 C SLAVE, DIRECCIÓN 7-BIT, recepción (SEN = 1, Ahen = 1, DHEN = 1)

ACKTIM

ACKTIM es fijado por hardware en el octavo ACKTIM se borra por el hardware


flanco de bajada de SCLx en el flanco ascendente 9 de SCLx

PAG
PIC16F / LF1825 / 1829

DS41440A páginas 265


PIC16F / LF1825 / 1829

25.5.3 TRANSMISIÓN ESCLAVO Cuando el R / W bits de la 25.5.3.2 7 bits Transmisión


entrada addre ss byte activada y una coincidencia de dirección se produce,
Un dispositivo maestro puede transmitir una petición de lectura a un esclavo, y
se establece el bit R / W del registro SSPxSTAT. el recibidos anuncio vestido luego los datos de reloj de la esclava. La siguiente lista describe lo que tendrá
se carga en el registro SSPxBUF, y un pulso ACK es enviado por el que hacer el software para un esclavo
esclavo en el noveno bit. para lograr un estándar transmisión.
Figura 25-17 se puede utilizar como una referencia a esta lista.

Tras el ACK, hardware esclavo borra el bit CKP y el pasador SCLx se 1. Maestro envía una condición de inicio en sdaX y SCLx.
mantiene baja (ver Sección 25.5.6 “Reloj de estiramiento” para más
detalles). Al estirar el reloj, el maestro será incapaz de hacer valer otro 2. S poco de SSPxSTAT se establece; SSPxIF se establece si rupt inter en Inicio
pulso de reloj hasta que se haga el esclavo la preparación de los datos de detectar es ena segundo LED.
transmisión.
3. dirección coincidente con el bit R / W es recibida por el ajuste
SSPxIF poco esclavo.
Los datos de transmisión ha de ser cargado en el SSPxBUF registro que 4. Esclavo de hardware genera un ACK y establece SSPxIF.
también carga el registro SSPxSR. A continuación, el pasador SCLx debe ser
puesto en libertad al establecer el bit CKP del registro SSPxCON1. Los ocho
5. SSPxIF poco se borra por el usuario.
bits de datos son desplazados hacia fuera en el borde descendente de la
6. El software lee la dirección recibida de SS PAG xBUF,
entrada SCLx. Esto asegura que la señal sdaX es válida durante la hora de
despejando BF.
SCLx.
7. R / W es s et s o CKP se borra automáticamente
después de que el ACK.
El pulso ACK desde el maestro-receptor es pestillos d de
8. El software esclavo carga los datos de transmisión en SSPxBUF.
el flanco ascendente de la novena pulso de entrada SCLx. Este valor ACK se
copia en el ACKSTAT b lo de el registro SSPxCON2. Si se establece ACKSTAT (no
9. bit CKP se establece la liberación de SCLx, permitiendo que el ter Mas- con el reloj
ACK), entonces º ed transferencia de ATA se ha completado. En este caso, cuando
de los datos fuera de l e esclavo.
el ACK no está cerrada por el esclavo, el esclavo va inactivo y espera a que anoth O
er ccurrence del bit de inicio. Si la línea sdaX fue baja (ACK), los datos de 10. SSPxIF se establece después de la respuesta ACK desde el maestro
transmisión siguiente deben ser cargados en el registro SSPxBUF. Una vez más, se carga en el registro ACKSTAT.
el pasador SCLx debe ser liberado mediante el establecimiento de CKP bits. 11. bits SSPxIF se borra.
12. El software esclavo comprueba el bit ACKSTAT para ver si el
maestro quiere marcar salida más datos.
Una interrupción MSSPx se genera para cada byte de transferencia de datos. Nota 1: Si el maestro ACK el reloj será
El bit SSPxIF debe ser despejado por el software y el registro SSPxSTAT se estirado.
utiliza para determinar el estado del byte. El bit SSPxIF se encuentra en el
2: ACKSTAT es el único bit de información actualizada sobre la
flanco de bajada del impulso de reloj novena.
flanco ascendente de SCLx (9º) en lugar de la caída.

25.5.3.1 Modo esclavo del bus de colisión Un esclavo recibe una petición de 13. Pasos 9-13 se repiten para cada byte transmitido.
lectura y comienza el cambio de datos en la línea sdaX. Si se detecta una
colisión de autobús y se establece el bit del registro SBCDE SSPxCON3, se 14. Si el maestro envía un ACK no; el reloj no se lleva a cabo, pero SSPxIF sigue
establece el bit del registro BCLxIF Pirx. Una vez que se detecta una colisión estando ajustado.
de bus, el esclavo va inactivo y espera ser tratado de nuevo. software de 15. El maestro envía una condición de reinicio o una parada.
usuario puede utilizar el BCLxIF bits para manejar una colisión de bus
16. El esclavo ya no va dirigida.
esclavo.

DS41440A páginas 266 Preliminar • 2010 Microchip Technology Inc.



Figura 25-18:

parada

Recepción de Dirección Automático transmisión de datos de Automático transmisión de datos de ACK


R/W=1

sdaX A7 A6 A5 A4 A3 A2 A1 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D5 D4 D3 D2 D1 D0 envía condición de

2010 Microchip Technology Inc.


SCLx
123456789 123456789 12345678 9
S P maestro

SSPxIF

elimina al software

BF
BF se borra automáticamente
dirección recibida Datos a transmitir se carga en después octavo flanco de bajada de
SSPxBUF SSPxBUF SCLx

CKP

Cuando se establece R / W CKP no es h vejez

SCLx siempre se mantiene baja después del por no ACK


noveno flanco de bajada SCLx Establecido por el software

Preliminar
ACKSTAT

Maestros no ACK se
yo 2 C SLAVE, DIRECCIÓN 7-BIT, TRANSMISION (Ahen = 0)

copia en ACKSTAT

R/W

R / W se copia de la
byte de dirección coincidente

D/A

Indica una dirección se lee de


ha sido recibido

PAG
PIC16F / LF1825 / 1829

DS41440A páginas 267


PIC16F / LF1825 / 1829

25.5.3.3 7 bits de transmisión con Retención Dirección


Activado

El establecimiento del bit del registro Ahen SSPxCON3 permite reloj adicional
de estiramiento y de interrupción gene- ración después del flanco descendente
octavo de una dirección que iguala las recibidas. Una vez que una dirección
coincidente se ha registrado en, CKP se borra y la interrupción SSPxIF se
establece.

Figura 25-18 muestra una forma de onda estándar de un 7 bits dirección del
esclavo Transmisión con Ahen habilitado.

1. Bus comienza inactivo.

2. Maestro envía condición de arranque; el bit S de SSPxSTAT se establece;


SSPxIF se establece si interrumpir el inicio está activada la detección.

3. maestro envía a juego con la dirección de bit R / W. Después de


la caída de borde 8 de la SCLx la línea de la bit CKP se borra
y se genera SSPxIF interrupción.

4. Software esclavo borra SSPxIF.


5. Esclavo de software re un ds ackt yo M bits de SSPxCON3
registran, y R / W y D / A de la SSPxSTAT registran para
determinar la fuente de la interrupción.
6. Esclavo lee el valor de la dirección del registro SSPxBUF
despejar el bit BF.
7. Esclavo suave mercancía decidir s vaivén M Esta información si
desea o no ACK ACK y establece el bit ACKDT de los
SSPxCON2 registro en consecuencia.
8. Slave establece el CKP b se re arrendamiento SCLx.

9. Maestro relojes en el valor ACK desde el esclavo.


10. automatica de hardware Esclavo cl lly oídos el do poco KP
y establece SSPxIF después del ACK si se establece el bit R / W.

11. Esclavo de software borra SSPxIF.

12. Slave valor cargas para transmitir al maestro en SSPxBUF


establecer el bit BF.

Nota: SSP xBUF no se puede cargar hasta después de la


ACK.

13. esclavo ajusta CKP poco soltar el reloj.


clo 14. Maestro CKS los datos del esclavo y
envía un ACK en el valor noveno pulso SCLx.
15. copias de hardware Esclavo del valor de ACK en el bit del
registro ACKSTAT SSPxCON2.
16. Pasos 10-15 se repiten para cada byte transmi- ted al
maestro del esclavo.
17. Si el maestro envía un ACK no libera al esclavo del bus que
permite al maestro para enviar una parada y terminar la
comunicación.

Nota: Maestro debe enviar un ACK no en el último byte


para asegurar que el esclavo libera la línea SCLx para recibir
una parada.

DS41440A páginas 268 Preliminar • 2010 Microchip Technology Inc.



Figura 25-19:

relea maestro ses sdaX a esclavo para la

secuencia de ACK

Recepción de Dirección R/W=1 Automático transmisión de datos de Automático transmisión de datos de


C.A. K

2010 Microchip Technology Inc.


sdaX ACK ACK condición de parada
A7 A6 A5 A4 A3 A2 A1 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0

SCLx
12345678 9 123456789 123456789
S
P maestro envía

SSPxIF
software

SSPxBUF Se elimina al
BF
BF se borra automáticamente
dirección recibida se lee de Datos a transmitir se carga en después octavo flanco de bajada de
SSPxBUF SCLx

ACKDT

Esclavo borra ACKDT


a la dirección ACK

Preliminar
ACKSTAT
respuesta ACK de
maestría se copia en
SSPxSTAT
yo 2 C SLAVE, DIRECCIÓN 7-BIT, TRANSMISION (Ahen = 1)

CKP
Cuando Ahen = 1; CKP no c Lear ed después
CKP se borra por el hardware después Cuando R / W = 1; Establecido por el de no ACK
de recibir dirección de juego. CKP siempre se borra software, libera SCLx
después de ACK

ACKTIM
ACKTIM se establece el 8 de caída ACKTIM se despeja en el flanco
borde de SCLx ascendente 9 de SCLx

R/W

D/A
PIC16F / LF1825 / 1829

DS41440A páginas 269


PIC16F / LF1825 / 1829

25.5.4 modo esclavo 10-bit de dirección RECEPCIÓN 25.5.5 10-bit de direccionamiento al DIRECCIÓN O DATA HOLD

En esta sección se describe una secuencia estándar de eventos para el módulo Recepción usando 10-bit de direccionamiento al Ahen o conjunto DHEN es el
MSSPx configurado como un I 2 C esclavo en el modo de direccionamiento de 10 mismo que con los modos de 7 bits. La única diferencia es la necesidad de
bits. actualizar el registro SSPxADD utilizando el bit UA. Toda la funcionalidad,
específicamente cuando el bit CKP se borra y la línea SCLx se mantiene baja
Figura 25-19 se utiliza como una referencia visual para esta descripción.
son los mismos. Figura 25-20 se puede utilizar como una referencia de un esclavo
en 10-bit de direccionamiento al conjunto Ahen.
Este es un proceso paso a paso de lo que debe ser hecho por el software de
esclavos para llevar a cabo I 2 comunicación C.
Figura 25-21 muestra una forma de onda estándar para un transmisor esclavo en el modo
1. Bus comienza inactivo.
de direccionamiento de 10 bits.
2. Maestro envía condición de arranque; S poco de SSPxSTAT se establece; SSPxIF

se establece si interrumpir el inicio está activada la detección.

3. Ma s ter envía búsqueda de alta dirección con el


/ W bit R claro; UA bit del registro SSPxSTAT se establece.

4. esclavo envía ACK y SSPxIF se establece.


5. El software borra el bit SSPxIF.
6. El software lee dirección recibida de
SSPxBUF borrar el indicador BF.
7. cargas esclavo bajo dirección en SSPxADD, liberando SCLx.

8. maestro envía a juego bajo byte de dirección al esclavo; se establece


UA bits.

Nota: Las actualizaciones de la FSSPX AÑADIR registro no están

permitido hasta después de la secuencia de ACK.

9. esclavo envía ACK y SSPxIF se establece.

Nota: Si la dirección baja no coincide, SSPxIF


y UA todavía están situados de manera que las mercancías esclavo

blandas puede establecer SSPxADD de nuevo a la alta dirección. BF no

se establece porque no hay ninguna coincidencia. CKP no se ve

afectada.

10. esclavo borra SSPxIF.


11. esclavo lee la dirección de búsqueda recibida desde
SSPxBUF BF claro.
12. cargas Slave alta dirección en SSPxADD.
13. Maestro Relojes de un dato byte al esclavo y
relojes fuera los esclavos ACK en el pulso SCLx noveno; SSPxIF se
establece.

14. Si SEN poco de SSPxCON2 se establece, CKP se borra por el


hardware y el reloj se estira.
15. Slave despeja SSPxIF.
16. esclavo lee el byte recibido de SSPxBUF BF claro.

17. Si se establece la SEN esclavo ajusta CKP para liberar el SCLx.

18. Pasos 13-17 repita para cada byte recibido.


19. Maestro envía Detener para finalizar la transmisión.

DS41440A páginas 270 Preliminar • 2010 Microchip Technology Inc.



Figura 25-20:

parada

2010 Microchip Technology Inc.


Recibe segundo byte Dirección Recibir datos Recibir datos
Recibe primer byte Dirección
sdaX envía condición de
ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK
1 1 1 1 0 A9 A8

SCLx
123456789 123456789 123456789 123456789 P maestro
S
SCLx se mantiene baja
mientras que CKP = 0

SSPxIF
Establecido por hardware en el Aprobado por el software
flanco de bajada noveno

Preliminar
BF
Recibir dirección es Los datos se leen
Si corresponden con las direcciones
leer desde SSPxBUF de SSPxBUF
SSPxADD se carga en SSPxBUF

UA
Cuando UA = 1; Las actualizaciones de software SSPxADD

SCLx se mantiene baja


y libera SCLx
yo 2 C SLAVE, DIRECCIÓN 10-BIT, recepción (SEN = 1, Ahen = 0, DHEN = 0)

CKP

Cuando SEN = 1; Establecido por el software,

CKP se borra después de noveno flanco de bajada liberando SCLx


del byte recibido
PIC16F / LF1825 / 1829

DS41440A páginas 271


Figura 25-21:

Recibe primer byte Dirección Re do eive S CE en Un d re dres s Byte R ECE iv D e ATA Re do eive re a un

DS41440A páginas 272


R/W=0

sdaX 1 1 1 1 0 A9 A8 ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK D7 D6 D5 D4 D3 D2 D1 D0 C.A. K D7 D6 D5

SCLx 1 2 3 4 5 6 7 8 9 UA 1 2 3 4 5 6 7 8 9 UA 1 2 3 4 5 6 7 8 9 1 2
S

SSPxIF
PIC16F / LF1825 / 1829

Establecido por hardware en el Aprobado por el software


Aprobado por el software
flanco de bajada noveno

BF

SSPxBUF se puede leer en cualquier


momento antes de la siguiente byte
los datos recibidos
recibido
SSPxBUF se lee de

Preliminar
ACKDT

softw esclavo son despeja


ACKDT ACK a la byte recibido

UA

a SSPxADD es
permitió hasta el 9 de actualización
actualización de SSPxADD,
flanco de bajada de SCLx no
SCLx borra UA y libera
yo 2 C SLAVE, DIRECCIÓN 10-BIT, recepción (SEN = 0, Ahen = 1, DHEN = 0)


CKP Si cuando Ahen = 1;
en el octavo flanco de bajada de
Establecer CKP con el software
SCLx de un byte de dirección, libera SCLx
CKP se borra
ACKTIM

ACKTIM es fijado por hardware en el octavo


flanco de bajada de SCLx

2010 Microchip Technology Inc.



Figura 25-22:

2010 Microchip Technology Inc.


Maestro envía Resto Arkansas DICIÓN
t evento
Maestro no envía
ACK

Re do eiving addr ES s R/W=0 Re do ei vi ng S mi do en re UN dd re s s Byte R mi CEI v mi F rimero Añadir re ss Byte T real academia de bellas artes ns metro eso estaño gramo
ACK = re1 un ejército de reserva segundo yt mi

ACK envía parada co norte


sdaX 1 1 1 1 0 A9 A8 ACK A7 A6 A 5 A4 A3 A2 A1 A0 ACK 1 1 1 1 0 A9 A8 D7 D6 D5 D 4 D3 D2 D 1 D0

SCLx 123456789 123456789 123456789 123456789


S P maestro
sr

SSPxIF

Establecido por el hardware Establecido por el hardware


Aprobado por el software

BF

Preliminar
recibida es Transferencia de datos está

cargado en SSPxBUF

UA
cargado con dirección recibida
Alta dirección se carga dirección
UA indica SSPxADD SSPxBUF Después SSPxADD se actualiza, de nuevo en SSPxADD
debe actualizarse UA se borra y se libera SCLx bajada 9 de SCLx lee desde SSPxBUF
CKP

Cuando R / W = 1; Establecido por el software

ACKSTAT CKP se despeja en flanco de libera SCLx

Maestros no se copia
yo 2 C SLAVE, DIRECCIÓN 10-BIT, TRANSMISION (SEN = 0, Ahen = 0, DHEN = 0)

ACK

R/W

R / W se copia de la
byte de dirección coincidente
D/A

Indica una dirección


PIC16F / LF1825 / 1829

ha sido recibido

DS41440A páginas 273


PIC16F / LF1825 / 1829

25.5.6 ESTIRA RELOJ 25.5.6.2 10-bit de modo de direccionamiento En 10-bit de modo de

direccionamiento, cuando se establece el bit UA, el reloj está siempre en


Reloj de estiramiento se produce cuando un dispositivo en el bus tiene el bajo
tensión. Esta es la única vez que el SCLx se estira sin CKP que es despejado.
de línea SCLx pausa real comunica- ción. El esclavo puede estirar el reloj
para permitir más tiempo para manejar datos o preparar una respuesta para SCLx se libera inmediatamente después de una escritura en SSPxADD.

el dispositivo Mas- ter. Un dispositivo maestro no se ocupa de estiramiento


como en cualquier momento que es activa en el bus y no la transferencia de
Nota: Las versiones anteriores del módulo no lo hicieron
datos que se está estirando. Cualquier estiramiento hecho por un esclavo es
estirar el reloj si el segundo byte de dirección no
invisible para el software principal y manipulan de forma por el hardware que
coincide.
genera SCLx. El bit CKP del registro SSPxCON1 se utiliza para con- trol de
estiramiento en el software. En cualquier momento se borra el bit CKP, el 25.5.6.3 Byte NACKing
módulo esperará a que la línea SCLx para ir bajo y luego mantenerlo. CKP
Configuración lanzará SCLx y permitir una mayor comunicación. Cuando se establece Ahen poco de SSPxCON3; CKP se borra por el
hardware después de la caída de borde 8 de SCLx para un byte de dirección
coincidente recibido. Cuando se establece DHEN poco de SSPxCON3; CKP
se borra después de que el flanco de bajada 8 de SCLx de los datos recibidos.
El estiramiento después del flanco de bajada 8 de SCLx permite al esclavo
25.5.6.1 reloj estiramiento normal para mirar en la dirección o datos recibidos y decidir si quiere ACK los datos
recibidos.
Después de un ACK si se establece el bit R / W de SSPxSTAT, una solicitud de
lectura, el hardware esclavo borrará CKP. Esto permite que el tiempo de esclavos
para actualizar SSPxBUF con los datos a transferir al maestro. Si el bit de SEN
25.5.7 sincronización de reloj y el bit CKP
SSPxCON2 está establecido, el eslavo e hardware siempre se estirará el reloj
después de la secuencia ACK. Una vez que el esclavo está listo; CKP es fijado
por hojas de vida del software y de la comunicación. En cualquier momento se borra el bit CKP, el módulo esperará a que la
línea SCLx para ir bajo y luego mantenerlo. Sin embargo, despejando el
bit CKP no hará valer la salida baja SCLx hasta que la salida SCLx ya
Nota 1: El bit BF tiene ningún efecto sobre si el reloj se
se muestrea baja. Por lo tanto, el bit CKP no va a valer la línea SCLx
ser estirado o no. Esto es diferente a las versiones
hasta un I externa 2 C dispositivo maestro ya ha afirmado la línea SCLx.
anteriores del módulo que no se extendería el reloj,
La salida SCLx permanecerá bajo hasta que se establece el bit CKP y
claro CKP, si SSPxBUF fue leída antes del borde 9
todos los demás dispositivos de la I 2 C bus SCLx han dado a conocer.
de la caída de SCLx.
Esto asegura que una escritura en el bit CKP no violará el requisito
mínimo tiempo de que SCLx (véase Figura 25-22 ).
2: Las versiones anteriores del módulo no lo hicieron
estirar el reloj para una transmisión si SSPxBUF se cargó
antes del borde ing otoño-noveno de SCLx. En la
actualidad se borra siempre para peticiones de lectura.

Figura 25-23: RELOJ sincronización de tiempo

T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4

sdaX DX DX, - 1

SCLx

dispositivo maestro
afirma reloj

Reloj maestro
dispositivo libera

WR
SSPxCON1 CKP

DS41440A páginas 274 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

25.5.8 LLAMADA GENERAL DIRECCIÓN apoyar el proceso de En el modo de direcciones de 10 bits, el bit UA no se establecerá en la recepción

direccionamiento para el I 2 C bus es tal que el primer byte después de la de la dirección de llamada general. El esclavo se preparará para recibir el

condición de inicio minas generalmente determinantes el dispositivo que va a ser segundo byte como datos, tal como lo haría en el modo de 7 bits.

el esclavo direccionado por el dispositivo maestro. La excepción es la dirección


llamada general que puede hacer frente a todos los dispositivos. Cuando se Si el bit del registro Ahen SSPxCON3 se establece, al igual que con cualquier
utiliza esta dirección, todos los dispositivos deben, en teoría, responderá con un otra dirección de recepción, artículos de hardware del esclavo se estirará el

acuse de recibo. reloj después del borde 8 de la caída de SCLx. El esclavo debe entonces
establecer su valor ACKDT y suelte el reloj con la comunicación progresando
como lo haría normalmente.
La dirección de llamada general es una dirección reservada en el I 2 Protocolo
C, que se define como la dirección 0x00. Cuando el bit GCEN del SSPxCON 2
re Gister está establecido, el módulo esclavo ACK automáticamente la
recepción de esta dirección, independientemente del valor almacenado en
SSPxADD. después de t h e relojes esclavos en una dirección de todos los
ceros con el / W R ​poco clara, se genera una interrupción y el software de
esclavos pueden leer y responder SSPxBUF.

Figura 25-23 muestra un general llamada recepción


secuencia.

Figura 25-24: Modo esclavo llamado general secuencia de direcciones

addre i ss s en comparación con Dirección General de llamada

interrupción

R/W=0 Recibiendo información ACK


Call Dirección General de
sdaX ACK D7 D6 D5 D4 D3 D2 D1 D0 después de ACK, ajuste de

SCLx
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
S

SSPxIF

BF (SSPxSTAT <0>)

Se elimina al SSPxBUF

software se lee
GCEN (SSPxCON2 <7>)

'1'

25.5.9 MÁSCARA FSSPX registrar una máscara FSSPX registro


(SSPxMSK) ( Registro 25-5 ) Está disponible en I 2 el modo C Slave como una
máscara para el valor contenido en el registro SSPxSR durante una
operación de comparación de direcciones. Un cero (' 0 ') Bit en el registro
SSPxMSK tiene el efecto de hacer que el bit correspondiente de la dirección
recibido un ‘no me importa’. Este registro se restablece en toda

' 1 'S sobre cualquier reinicio


condiciones y, por lo tanto, no tiene ningún efecto sobre el funcionamiento FSSPX

estándar hasta escrito con un valor de máscara. El registro de máscara FSSPX está

activo durante:

• Modo de dirección de 7 bits: Dirección comparación de A <7: 1>.

• Modo de dirección de 10 bits: Dirección comparación de A <7: 0> solamente.


La máscara FSSPX no tiene ningún efecto durante la recepción de la primera
(alto) byte de la dirección.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 275


PIC16F / LF1825 / 1829

25.6 I 2 C MODO MAESTRO 25.6.1 I 2 C MODO DE FUNCIONAMIENTO MAESTRO El dispositivo maestro

genera todos los impulsos de reloj en serie y las condiciones de inicio y parada.
el modo maestro está habilitado de poner y quitar los bits SSPxM Una transferencia se terminó con una condición de parada o con una condición
apropiadas en el registro SSPxCON1 y activando el bit SSPxEN. En el
de inicio repetida. Puesto que la condición de inicio repetida es también el
modo maestro, las líneas SCLx y sdaX se configuran como entradas y
comienzo de la próxima transferencia en serie, el I 2 bus C no se dará a conocer.
son manipulados por el hardware MSSPx.

Modo maestro de funcionamiento se apoya en la generación de


interrupciones en la detección de las con- diciones de inicio y parada. El tope En el modo maestro transmisor, datos en serie se emite a través sdaX,

(P) y los bits de inicio (S) se borran de un Reset o cuando el módulo MSSPx mientras SCLx emite el reloj en serie. El primer byte transmitido contiene el

está desactivado. trol de la con- I 2 C bus puede ser tomada cuando se esclavo añadir reso o f el dispositivo de recepción (7 bi ts) y la lectura / escritura

establece el bit P, o el bus está inactivo. (R / W) bits. En este caso, el bit R / W será lógica " 0 '. datos en serie se
transmite 8 bits a la vez. Después de cada byte es Transmitir- ted, se recibe
un bit de reconocimiento. De inicio y de parada son las condiciones de salida
En el modo Maestro firmware controlada, código de usuario lleva a cabo todo lo 2 operaciones
para indicar el principio y el final de una transferencia en serie.
de autobuses C sobre la base de inicio y parada del bit de detección del estado. De

inicio y detección de la condición de parada es el único circuito activo en este modo.

Todas las demás comunicaciones se realiza mediante el software del usuario


En Maestro modo de recepción, el primer byte transmitido con- tiene un
manipular directamente las líneas sdaX y SCLx. Los siguientes eventos hará que el
esclavo re vestido de la transmisión TI dispositivo ng (7 bits) y el bit R / W. En
bit FSSPX indicador de interrupción, SSPxIF, que debe ajustarse (FSSPX de
este caso, el bit R / W será lógica " 1 '. Por lo tanto, el primer byte transmitido
interrupción, si está activado): es una dirección de esclavo de 7 bits seguido por un ' 1 'Para indicar la
recepción de bits. datos en serie se recibe a través sdaX, mientras SCLx

• Condición de arranque detecta emite el reloj en serie. datos en serie se recibe 8 bits a la vez. Después de
que se recibe cada byte, se transmite un bit de reconocimiento. Comienzan y
• Detener condición detectada
Condiciones de parada indican el comienzo y el final de la transmisión. Un
• La transferencia de datos byte transmitido / recibido
generador Tasa de baudios se utiliza para establecer la salida cuencia del
• Reconocer transmitidos / recibidos
reloj cuencia en SCLx. Ver Sección 25.7 “Tasa generador de baudios” para
• Inicio repetido genera más detalles.

Nota 1: El módulo MSSPx, cuando se configura en


yo 2 Modo maestro C, no permite queue- ción de los
acontecimientos. Por ejemplo, no se permite que el
usuario inicie una condición de inicio e inmediatamente
escribir las SSPxBUF registrarse para iniciar la
transmisión antes de que la condición de arranque se ha
completado. En este caso, el SSPxBUF no se escribirá y
se establece el bit WCOL, lo que indica que una escritura
en el SSPxBUF no se produjo

2: Cuando está en modo maestro, inicio / detención detec-

ción está enmascarado y una interrupción es gene- ado


cuando se borra el bit SEN / PEN y la generación es
completa.

DS41440A páginas 276 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

ARBITRAJE 25.6.2 RELOJ

Reloj de arbitraje se produce cuando el maestro, durante cualquier recibir,


transmitir o repetida condición de arranque / parada, libera el pasador SCLx
(SCLx permitió flotar alto). Cuando se permite que el pasador SCLx flotar
alta, la tasa de baudios Generador (BRG) está suspendido de contar hasta
que el pasador SCLx es en realidad muestrea alta. Cuando el pasador
SCLx se muestrea alta, la tasa de baudios del generador se vuelve a cargar
con el contenido de SSPxADD <7: 0> y comienza el conteo. Esto asegura
que la hora de SCLx siempre será al menos un recuento de vuelco BRG en
el caso de que el reloj se mantiene baja por un dispositivo externo ( Figura
25-25 ).

Figura 25-25: TIEMPO VELOCIDAD GENERADOR DE RELOJ CON ARBITRAJE

sdaX DX DX, - 1

SCLx deasserted pero mantiene esclavo SCLx permitió hacer la transición de alto

SCLx baja (arbitraje reloj)

SCLx

BRG disminuye en ciclos Q2


y Q4

03h 02h 01h 00h (mantenga apagado) 03h 02h

SCLx se muestrea alta, recarga tiene lugar y BRG


BRG Valor
comienza su recuento
BRG
Recargar

25.6.3 WCOL indicador de estado

Si el usuario escribe el SSPxBUF cuando una secuencia Start, Restart,


Parada, recibir o transmitir está en curso, el bit se establece WCOL y el
contenido de la memoria intermedia no se han modificado (la escritura no se
produce). Cada vez que el bit se establece WCOL indica que una acción
sobre SSPxBUF se intentó mientras que el módulo no estaba ocioso.

Nota: Debido a que no se permite la puesta en cola de eventos,


escribiendo a los menores de 5 bits SSPxCON2 está
desactivado hasta que la condición de inicio se ha
completado.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 277


PIC16F / LF1825 / 1829

25.6.4 I2 C START MODO MAESTRO por el hardware; la tasa de baudios del generador está suspendido, dejando la
CONDICIÓN DE DISTRIBUCIÓN línea sdaX mantiene baja y la condición de inicio se ha completado.

Para iniciar una condición de inicio, el usuario establece el bit de habilitación


de inicio, SEN bit del registro SSPxCON2. Si los pasadores sdaX y SCLx se Nota 1: Si al comienzo de la condición de inicio,
muestrean alta, la tasa de baudios Generador los pasadores sdaX y SCLx ya se muestrean baja, o si
se vuelve a cargar con el contenido de durante la condición de inicio, la línea SCLx se toman
SSPxADD <7: 0> e inicia su conteo. Si SCLx y sdaX se tomaron muestras muestras bajo antes de la línea sdaX es impulsada baja, se
tanto de alta cuando los tiempos Velocidad de transmisión del generador fuera produce una colisión de bus, el indicador de interrupción Bus
(T BRG), el pasador sdaX es conducido bajo. La acción del sdaX siendo colisión, BCLxIF, se establece, el condición de arranque se
conducido bajo, mientras que SCLx es alta es la condición de inicio y hace que abandona y el yo 2 el módulo C se restablece a su estado
el bit S de los SSPxSTAT1 registro que desea ajustar. Después de esto, la inactivo.
tasa de baudios del generador se vuelve a cargar con el contenido de
SSPxADD <7: 0>, quedando a la cuenta. Cuando los tiempos Velocidad de 2: El Philips I 2 C Especificación establece que una
transmisión del generador fuera (T BRG), el bit del registro SEN SSPxCON2 se colisión de bus no puede ocurrir en un inicio.
borrará automáticamente

Figura 25-26: PRIMER TIEMPO bit de inicio

Escribir a poco SEN se produce aquí Set S bit (SSPxSTAT <3>)

A la finalización de bits de inicio,


sdaX = 1,
hardware borra poco SEN
SCLx = 1
y conjuntos SSPxIF bits

T BRG T BRG
Escribir en SSPxBUF se produce aquí

sdaX primera bits segundo bit

T BRG

SCLx
S
T BRG

DS41440A páginas 278 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

25.6.5 I2 C MODO MAESTRO REPETIDO SSPxCON2 registro se borrará automáticamente y la Tasa generador de
START condición de temporización Una condición de inicio repetida baudios no se volverá a cargar, dejando el pasador sdaX celebrada bajo. Tan
se produce cuando el bit del registro RSEN SSPxCON2 está programado alta y pronto como se detecta una condición de inicio en los pines sdaX y SCLx, se
la máquina de estado Maestro ya no está activa. Cuando se establece el bit establece el bit S del registro SSPxSTAT. El bit SSPxIF no se establecerá

RSEN, el pasador SCLx está confirmada baja. Cuando el pasador SCLx se hasta que el generador Velocidad de transmisión ha agotado el tiempo.

muestrea baja, la tasa de baudios del generador se carga y comienza el conteo.


El pasador se libera sdaX (traído alta) para un cargo Velocidad de transmisión
Nota 1: Si RSEN está programado, mientras que cualquier otro
del generador (T BRG). Cuando los tiempos Velocidad de transmisión del
evento está en curso, no tendrá efecto.
generador a cabo, si se realiza un muestreo de alta sdaX, el pasador SCLx será
2: Una colisión de bus durante el inicio repetida
deasserted (traído alta). Cuando se muestrea SCLx alta, la tasa de baudios del
condición se produce si:
generador se vuelve a cargar y comienza el conteo. SdaX y SCLx se deben
tomar muestras de alta para una camiseta BRG. Esta acción es seguida entonces • SdaX se muestrea baja cuando SCLx va
por la afirmación de la clavija de sdaX (sdaX = 0) por una camiseta BRG mientras de bajo a alto.
SCLx es alta. SCLx está confirmada baja. Después de esto, el bit de la RSEN • SCLx pasa a nivel bajo antes de sdaX está
confirmada baja. Esto puede indicar que otro
maestro está intentando transmitir un dato ' 1 '.

Figura 25-27: Inicio de la repetición CONDICIÓN DE ONDA

S conjunto de bits por hardware

Escribir en SSPxCON2
ocurre aquí
sdaX = 1,
sdaX = 1, poco RSEN
SCLx (sin cambios) SCLx = 1
y establece SSPxIF

T BRG T BRG T BRG

finalización de bits de inicio, hardware borra


primera bits
sdaX

Escribir a SSPxBUF se produce aquí en la

T BRG

SCLx
sr
T BRG

Inicio repetida

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 279


PIC16F / LF1825 / 1829

25.6.6 I 2 C MODO MAESTRO DE TRANSMISIÓN La transmisión de un byte de 25.6.6.3 ACKSTAT indicador de estado En el modo de transmisión, el bit
datos, una dirección de 7 bits o la otra mitad de una dirección de 10 bits se ACKSTAT de The Register SSPxCON2 r es c leared cuando el esclavo ha
logra simplemente escribiendo un valor al registro SSPxBUF. Esta acción se enviado una RECONOCE (ACK = 0 ) un d se establece cuando el esclavo
establecerá el bit de bandera completa Buffer, BF y permitir que el tipo no reconoce (ACK = 1). Un esclavo envía un RECONOCE cuando se ha
generador de baudios para comenzar el conteo y empezar la siguiente trans- reconocido su dirección (incluyendo una llamada general), o cuando el
misión. Cada bit de dirección / datos se desplazará a cabo en el pasador sdaX esclavo ha recibido correctamente sus datos.
después del flanco de bajada de SCLx se afirma. SCLx se mantiene baja para
un cargo tor vuelco Velocidad de transmisión de Gene- (T BRG). Los datos deben
ser válidos antes de la liberación de alta SCLx. Cuando el pasador se libera
SCLx alta, se llevó a cabo de esa manera para T BRG. Los datos sobre el 25.6.6.4 secuencia de transmisión típico:
pasador sdaX deben permanecer estables para que la duración y un poco de
1. El usuario genera una condición de inicio activando el bit SEN
tiempo de espera después de la siguiente flanco descendente de SCLx.
del registro SSPxCON2.
Después de la octava se desplaza un bit (el flanco de bajada del octavo reloj),
2. SSPxIF se establece por el hardware al finalizar el inicio.
la bandera BF se borra y el maestro libera sdaX. Esto permite que el SLA Dispositivo
ve que se dirige a responder con un bit ACK durante el tiempo de bit noveno si
una coincidencia de dirección occ Urre d, o si se recibió prop- erly datos. El
3. SSPxIF se borra por el software.
estado de ACK se escribe en el bit ACKSTAT en el flanco ascendente de la 4. El módulo MSSPx esperará el tiempo de inicio requerido antes de
novena reloj. Si el maestro recibe un acuse de recibo, el bit de estado cualquier otra operación se lleva a cabo.

Reconocer, ACKSTAT, se borra. Si no es así, se establece el bit. Después de 5. El usuario carga el SSPxBUF con la dirección del esclavo para
la novena reloj, el bit SSPxIF se establece y el reloj maestro (Baud Rate transmitir.
Generator) se suspende hasta que el siguiente byte de datos se carga en el 6. Dirección se desplaza el pasador sdaX hasta los 8 bits se transmiten.
SSPxBUF, dejando SCLx baja y sdaX sin cambios ( Figura 25-27 ). Transmisión comienza tan pronto como se escribe en SSPxBUF.

7. Los cambios de módulo MSSPx en el bit ACK del dispositivo


esclavo y escribe su valor en el bit del registro ACKSTAT
SSPxCON2.
8. El módulo de MSSPx genera una interrupción al final del ciclo
Después de la escritura a la SSPxBUF, cada bit de la dirección se desplazará de reloj noveno estableciendo el bit SSPxIF.
hacia fuera en el cayendo gramo borde de SCLx hasta que todos los siete bits de
dirección y el bit R / W se han completado. En el flanco descendente de la octava 9. El usuario carga el SSPxBUF con ocho bits de datos.
reloj, el maestro dará a conocer el pasador sdaX, lo que permite que el esclavo
responde con un acuse de recibo. En el flanco descendente de la novena reloj, el
10. Los datos se desplaza el pasador sdaX hasta los 8 bits se
maestro se muestra el pasador sdaX para ver si el
transmiten.
11. El módulo MSSPx cambios en el bit ACK del dispositivo
addr ess fue reconocido por un esclavo. El estado del bit ACK se carga en
esclavo y escribe su valor en el bit del registro ACKSTAT
el bit de estado del registro ACKSTAT SSPxCON2. Tras el flanco
SSPxCON2.
descendente de la transmisión de reloj novena parte de la dirección, la
SSPxIF se establece, el indicador de BF se borra y la tasa de baudios del 12. Pasos 8-11 se repiten para todos los bytes de datos transmitidos.

generador se apaga hasta que otra escritura en el SSPxBUF se lleva a


cabo, sosteniendo SCLx baja y permitiendo sdaX a flote. 13. El usuario genera un detener o reiniciar la condición mediante el
establecimiento de los bits de PEN o RSEN del registro SSPxCON2. La
interrupción se genera una vez la condición de parada / reinicio se ha
25.6.6.1 Bandera BF Estado completado.

En el modo de transmisión, el bit BF del registro SSPxSTAT se establece


cuando la CPU escribe a SSPxBUF y se borra cuando los 8 bits se desplazan
hacia fuera.

25.6.6.2 WCOL indicador de estado

Si el usuario escribe el SSPxBUF cuando una transmisión ya en curso es (es


decir, SSPxSR se sigue desplazando a cabo un byte de datos), el bit se
establece WCOL y el contenido de la memoria intermedia no se han modificado
(la escritura no se produce). WCOL debe ser limpiado por software antes de la
siguiente transmisión.

DS41440A páginas 280 Preliminar • 2010 Microchip Technology Inc.



Figura 25-28:

2010 Microchip Technology Inc.


Escribe SSPxCON2 <0> = SEN 1 ACKSTAT en

Comienza condición comienza SSPxCON2 = 1


De esclavo, claro ACKSTAT mordió SSPxCON2 <6>
SEN = 0
Transmisión de datos o la segunda mitad
Transmitir Dirección de Esclavo R/W=0 ACK
de 10 bits de direcciones

sdaX A7 A6 A5 A4 A3 A2 A1 ACK = 0 D7 D6 D5 D4 D3 D2 D1 D0

SSPxBUF escrita con la dirección de 7 bits y R / W de transmisión


inicio

SCLx 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
PAG
SCLx mantiene baja,

mientras que la CPU


responde a SSPxI F

SSPxIF

Aprobado por la rutina de servicio de software

Aprobado por el software interrupción FSSPX


Aprobado por el software

Preliminar
BF (SSP xStat <0>)

SSPxBUF escrita SSPxBUF está escrito por el software de

SEN

Después de las condiciones de arranque, se aclaró SEN por el hardware S

BOLÍGRAFO
I2C MODO MAESTRO forma de onda (TRANSMISIÓN, 7 o 10-bit de dirección)

R/W
PIC16F / LF1825 / 1829

DS41440A páginas 281


PIC16F / LF1825 / 1829

25.6.7 yo 2 C MODO MAESTRO recepción modo Master se 25.6.7.4 típica secuencia de recepción:
activa programando el bit Habilitar Recibir, RCEN bit del registro
1. El usuario genera una condición de inicio activando el bit SEN
SSPxCON2. del registro SSPxCON2.
2. SSPxIF se establece por el hardware al finalizar el inicio.
Nota: El módulo MSSPx debe estar en un estado de inactividad
antes de la broca RCEN se establece o se tuvo en cuenta el 3. SSPxIF se borra por el software.
poco RCEN. 4. El usuario escribe SSPxB T F, con la dirección del esclavo a
transmitir y el conjunto de bits R / W.
La tasa de baudios generador comienza a contar y en cada renovación,
el estado de los cambios pin SCLx 5. Dirección se desplaza el pasador sdaX hasta los 8 bits se transmiten.
(Alto-a-bajo / bajo-a-alto) y los datos se desplaza en el SSPxSR. Después de que el Transmisión comienza tan pronto como se escribe en SSPxBUF.
flanco de bajada del octavo reloj, la reciben habilitar el indicador se borra
automáticamente, las tiendas de campaña del con- SSPxSR se cargan en el 6. Los cambios de módulo MSSPx en el bit ACK del dispositivo
SSPxBUF, el bit de bandera de BF se establece, el bit indicador SSPxIF está fijado esclavo y escribe su valor en el bit del registro ACKSTAT
y la tasa de baudios del generador está suspendido de contar, sosteniendo SCLx SSPxCON2.
baja. El MSSPx se encuentra ahora en estado de reposo a la espera de la próxima 7. El módulo de MSSPx genera una interrupción al final del ciclo
orden. Cuando la memoria es leído por la CPU, el bit de bandera de BF se borra de reloj noveno estableciendo el bit SSPxIF.
automáticamente. El usuario puede entonces enviar un bit de reconocimiento al final
de la recepción mediante el establecimiento de la Secuencia de Reconocimiento
8. usuario activa el bit de la RCEN del registro en SSPxCON2 y el maestro
Habilitar, ACKEN bit del registro SSPxCON2.
de los relojes en un byte desde el esclavo.

9. Después de que el borde de caída 8 de SCLx, SSPxIF y BF están ajustadas.

25.6.7.1 Bandera BF Estado 10. maestra borra SSPxIF y lee el byte recibido de SS px UF,
borra BF.
En operación de recepción, el bit BF se establece cuando un byte de
11. Maestro establece el valor ACK enviado al esclavo en ACKDT
dirección o de datos se carga en SSPxBUF de SSPxSR. Se borra cuando
poco o f los SSPxCON2 registro e inicia el ACK por s b ie g el
se lee el registro SSPxBUF.
bit ACKEN.
25.6.7.2 SSPxOV indicador de estado 12. Masters ACK es sincronizado a cabo al esclavo y SSPxIF se
establece.
En operación de recepción, el bit se establece cuando SSPxOV 8 bits se
reciben en el SSPxSR y el bit de bandera BF ya está establecido de una 13. usuario borra SSPxIF.
recepción anterior. 14. Pasos 8-13 se repiten para cada byte recibido desde el
esclavo.
25.6.7.3 WCOL indicador de estado
15. Maestro envía un ACK o no Detener para finalizar la
Si el usuario escribe el SSPxBUF cuando un reciben ya en curso es (es decir, comunicación.
SSPxSR se sigue desplazando en un byte de datos), se establece el bit WCOL
y el contenido de la memoria intermedia no se han modificado (la escritura no se
produce).

DS41440A páginas 282 Preliminar • 2010 Microchip Technology Inc.



Figura 25-29:

Escribir a SSPxCON2 <4> para iniciar Reconocer


secuencia sdaX = ACKDT (SSPxCON2 <5>) = 0

Escribir en SSPxCON2 <0> (NEE = 1),


comenzar a condición de inicio Establecer ACKEN, iniciar Reconocer la secuencia
ACK del Maestro
Maestro configurado como un receptor mediante la programación
SdaX = ACKDT = 0 = ACKDT 1
SSPxCON2 <3> (= RCEN 1)

2010 Microchip Technology Inc.


PEN bit = 1
Escribir en SSPxBUF ocurre aquí, ACK del Esclavo RCEN borra RCEN = 1, Iniciar RCEN borra
escrito aquí
automáticamente siguiente recibirá automáticamente

Transmitir Dirección de Esclavo Recibiendo datos del esclavo Recibiendo datos del esclavo

sdaX A7 A6 A5 A4 A3 A2 A1 R/W ACK D6 D7 D5 D4 D1 D2 D3 D0 ACK D7 D6 D5 D1 D2 D3 D4 D0


ACK

maestro de bus
ACK no se envía termina
software XMIT SEN = 0 transferencia

123456 789 9 1234 765 8 9


SCLx 12345678
S PAG

Los datos se movió en el flanco de bajada de CLK Establecer SSPxIF al final


de recibir Conjunto SSPxIF interrumpe al
final de la Acknow-
Conjunto SSPxIF interrumpe al LEDG secuencia de correo
final de la secuencia Reconocer SSPxBUF todavía está lleno sdaX =
SSPxIF
SSPxIF interrumpir al final de recibir
Conjunto P bit
Se elimina al inicio de Aprobado por el software
Se elimina al software de Set Aprobado por el software Cero por (SSPxSTAT <4>) y

mientras que la CPU


software SSPxIF

responde a SSPxIF

Preliminar
BF
El último bit es puesto en SSPxSR y el contenido
(SSPxSTAT <0>)
se descarga en SSPxBUF
I2C MODO MAESTRO DE ONDA (recepción, dirección de 7 BIT)

SSPxOV sdaX = 0, SCLx = 1

SSPxOV se establece porque

ACKEN

RCEN

Maestro
RCEN aclaró
configurado como un receptor mediante la programación SSPxCON2 <3> (= RCEN 1) ACK del Maestro sdaX = RCEN borra
PIC16F / LF1825 / 1829

automáticamente = ACKDT 0 automáticamente

DS41440A páginas 283


PIC16F / LF1825 / 1829

25.6.8 ACUSE DE TIEMPO SECUENCIA 25.6.9 PARADA condición de tiempo Un poco de parada se afirma en el
pasador sdaX al final de una recepción / transmisión mediante el establecimiento de la
Secuencia de parada bit de habilitación, PEN poco de la SSPxCON2 registro. Al final
Una secuencia se activa la confirmación mediante el establecimiento de la
de una recepción / transmisión, la línea SCLx se mantiene baja después de que el
secuencia de aceptación bit de habilitación, ACKEN bit del registro
flanco descendente de la novena reloj. Cuando se establece el bit PEN, el maestro
SSPxCON2. Cuando este bit está establecido, el pasador SCLx se tira bajo y
hará valer la línea baja sdaX. Cuando la línea se muestrea sdaX baja, la velocidad del
el contenido del bit de datos Reconocer se presentan en el pasador sdaX. Si
generador de baudios se vuelve a cargar y una cuenta atrás hasta ' 0 '. Cuando los
el usuario desea generar un acuse de recibo, entonces el bit ACKDT debe ser
tiempos Velocidad de transmisión del generador fuera, el pasador SCLx serán
limpiado. Si no es así, el usuario debe establecer el bit ACKDT antes de iniciar
llevados alto y una camiseta BRG ( Velocidad de transmisión del generador recuento de
una secuencia de acuse de recibo. La tasa de baudios Generador cuenta
entonces por un periodo de transición (T BRG) y el pasador SCLx se deasserted vuelco) fuera del plazo establecido deasserted el pasador sdaX. Cuando el pasador

(a nivel alto). Cuando el pasador SCLx se muestrea alta (arbitraje del reloj), la sdaX se muestrea alta mientras SCLx es alto, se establece el bit P del registro

Tasa de baudios Generador cuenta para T BRG. El pasador SCLx continuación, SSPxSTAT. A BRG después, el bit PEN se borra y se establece el bit SSPxIF ( Figura

se tira bajo. Después de esto, el bit ACKEN se automática- mente se aclaró, la 25-30 ).

tasa de baudios del generador se apaga y el módulo MSSPx luego entra en


modo de espera ( Figura 25-29 ).

25.6.9.1 WCOL indicador de estado Si el usuario escribe el SSPxBUF


cuando una secuencia de parada está en curso, el bit se establece WCOL y
el contenido de la memoria intermedia no se han modificado (la escritura no
25.6.8.1 WCOL indicador de estado se produce).

Si el usuario escribe el SSPxBUF cuando una secuencia de acuse de recibo


está en curso, el bit se establece WCOL y el contenido de la memoria
intermedia no se han modificado (la escritura no se produce).

Figura 25-30: ACUSE DE RECIBO DE ONDA DE SECUENCIA

comienza aquí,
ACKEN borra automáticamente
escribir en SSPxCON2
ACKEN = 1, ACKDT = 0
T BRG T BRG

sdaX D0 ACK

SCLx 8 9

SSPxIF

Cero por
SSPxIF fijado en Reconocer secuencia
despejado en software
el final de recibir
software SSPxIF fijado en el final de
Reconocer secuencia
Nota: T BRG = un periodo Velocidad de transmisión del generador.

DS41440A páginas 284 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

Figura 25-31: PARADA condición de recepción o el modo TRANSMITIR

Escribir en SSPxCON2, SCLx = 1 para T BRG, seguido por sdaX = 1 para T BRG

establecer PEN
después sdaX muestreado alta. se establece P bit (SSPxSTAT <4>).

Flanco descendente de la PEN bits (SSPxCON2 <2>) se elimina mediante

9 de reloj hardware y se establece el bit SSPxIF

T BRG
SCLx

sdaX ACK

PAG

T BRG T BRG T BRG

SCLx trajo alta después de la T BRG

SdaX confirmada baja antes del flanco de subida del reloj


para configurar la condición de parada

Nota: T BRG = un periodo Velocidad de transmisión del generador.

06/25/10 SLEEP FUNCIONAMIENTO Mientras que en el modo de suspensión, el I 2 25/06/13 MULTI -MASTER COMUNICACIÓN,
módulo esclavo C puede recibir direcciones o datos y cuando se produce una COLISION BUS y ARBITRAJE modo Multi-Master de apoyo
coincidencia de dirección o de transferencia de byte completo, despertar el se logra en autobús arbitra- ción. Cuando los bits de salidas master de

procesador de sueño (si está activada la interrupción MSSPx). direcciones / datos en el pasador sdaX, el arbitraje tiene lugar cuando el
maestro emite una ' 1 'En sdaX, dejando flotar sdaX alto y otro maestro afirma
un' 0 '. Cuando el pasador SCLx flota alta, los datos deben ser estables. Si los
25.6.11 EFECTOS DE A de RESET datos esperados en sdaX es un ' 1 'Y los datos muestreados en el pasador
sdaX es' 0 ', A continuación, una colisión de bus ha tenido lugar. El maestro
A Restablecer desactiva el módulo MSSPx y termina la transferencia de
corriente. establecerá el indicador de interrupción autobús colisión, BCLxIF y
restablecer la I 2 puerto C a su estado inactivo ( Figura 25-31 ). Si una
25/06/12 MULTI-MASTER MODO transmisión estaba en marcha cuando se produjo la colisión de bus, la
transmisión se detiene, la bandera BF se borra, las líneas sdaX y SCLx se
En el modo Multi-Master, la generación de interrupciones en la detección de
deasserted y la SSPxBUF se puede escribir. Cuando el usuario ser- vicios de
las condiciones de inicio y parada permite la determinación de cuando el
la colisión de autobús de rutina de servicio de interrupción y si el me 2 C
bus está libre. El tope (P) y los bits de inicio (S) se borran de un Reset o
autobús es gratuito, el usuario puede reanudar la comu- nicación mediante la
cuando el módulo MSSPx está desactivado. El control de la I 2 bus C se
afirmación de una condición de inicio. Si un Inicio, Inicio repetido, la parada o
puede tomar cuando se establece el bit P del registro SSPxSTAT, o el bus
Reconocer la condición estaba en marcha cuando se produjo la colisión de
está inactivo, tanto con el S y P bits de claro. Cuando el bus está ocupado,
bus, la condición se interrumpe, las líneas sdaX y SCLx son deas- serted y
lo que permite la interrupción FSSPX generará la interrupción cuando se
los bits de control respectivos en el registro SSPxCON2 se borran. Cuando
produce la condición de parada. En la operación multi-master, la línea sdaX
los servicios del usuario del bus COL- lision rutina de servicio de interrupción
debe ser monitoreado de arbitraje para ver si el nivel de señal es el nivel de
y si el me 2 C autobús es gratuito, el usuario puede reanudar la comunicación
salida esperada. Esta comprobación se realiza por el hardware con el
mediante la afirmación de una condición de inicio.
resultado se coloca en el bit BCLxIF. Los estados en los que el arbitraje se
puede perder son:

• Transferencia de direcciones

• Transferencia de datos

• Una condición de arranque


El maestro seguirá de cerca los pasadores sdaX y SCLx. Si se produce una
• Una condición de arranque repetido condición de parada, se establece el bit SSPxIF. Una escritura en el
• Reconocer un Estado SSPxBUF se iniciará la transmisión de datos en el primer bit de datos,
independientemente del lugar en el transmisor fue apagado cuando se
produjo la colisión de bus. En el modo Multi-Master, la generación de
interrupciones en la detección de las condiciones de inicio y parada permite la
determinación de cuando el bus está libre. El control de la I 2 bus C puede ser
tomada cuando el bit P se establece en el registro SSPxSTAT, o el bus está
inactivo y los bits S y P se borran.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 285


PIC16F / LF1825 / 1829

Figura 25-32: TIEMPO DE COLISIÓN BUS para transmitir y reconocer

Muestra sdaX. Mientras SCLx es alta, los datos no


cambios de datos, mientras línea sdaX calado por otra
que SCLx = 0 fuente coinciden con lo que se ha producido la colisión
maestro.
autobús impulsado.
sdaX lanzado
por el maestro

BUS colisión (BCLxIF) por el


sdaX

SCLx interrupción de referencia

BCLxIF

DS41440A páginas 286 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

25.6.13.1 autobús colisión Durante una puesta en Si el pasador sdaX se muestrea baja durante este recuento, el BRG se pone

Condición a cero y la línea sdaX se afirma temprana ( Figura 25-34 ). Si, sin embargo, un
" 1 'Se muestrea en el pasador sdaX, el pasador sdaX está confirmada baja al
Durante una condición de inicio, se produce una colisión de bus si:
final de la cuenta de BRG. La Tasa generador de baudios es luego vuelve a
a) sdaX o SCLx se muestrean baja al comienzo de la condición cargar y una cuenta atrás hasta cero; Si el pasador SCLx se muestrea como " 0
de inicio ( Figura 25-32 ). "Durante este tiempo, no se produce una colisión de bus. Al final de la cuenta
b) SCLx se muestrea bajo antes sdaX se afirma bajo ( Figura BRG, el pasador SCLx está confirmada baja.
25-33 ).

Durante una condición de inicio, tanto el sdaX y los pasadores SCLx son
monitoreados. Nota: La razón de que la colisión del autobús no es un fac- tor

Si el pasador sdaX ya es bajo, o el pasador SCLx ya es baja, entonces durante una condición de inicio es que no hay dos maestros

todas de las siguientes situaciones: de bus pueden valer una condición de inicio exactamente al
mismo tiempo. Por lo tanto, un maestro siempre va a valer
• la condición de inicio se aborta,
sdaX antes que el otro. Esta condición no causa una colisión
• la bandera BCLxIF se establece y
autobús porque los dos maestros se les debe permitir a
• el módulo MSSPx se restablece a su estado inactivo ( Figura arbitrar la primera dirección siguiente al de la condición de
25-32 ). inicio. Si la dirección es la misma, el arbitraje se debe

La condición de arranque comienza con los pasadores y sdaX SCLx permitir que continúe en la parte de datos, que se repite en

deasserted. Cuando el pasador sdaX se muestrea alta, la tasa de baudios del marcha o detener condiciones.

generador se carga y se cuenta hacia atrás. Si el pasador SCLx se muestrea


baja, mientras que sdaX es alta, una colisión de bus se debe a que se supone
que otro maestro está tratando de conducir un dato ' 1 'Durante la condición de
inicio.

Figura 25-33: BUS colisión durante una condición de arranque (SDAX SOLAMENTE)

SdaX pasa a nivel bajo antes de que se establezca el bit SEN.

Establecer BCLxIF,

S bits y un conjunto SSPxIF porque


sdaX = 0, SCLx = 1.

sdaX

SCLx

debido a la colisión de bus.


=1 reinicio del módulo de la FSSPX en estado de reposo. SEN borra automáticamente

SEN
permiten
SdaXlasmuestreado
condiciones de arranque
baja antes si sdaX = 1, SCLx
Condición de arranque. Establecer BCLxIF.

S bits y SSPxIF set porque Conjunto SEN,


BCLxIF sdaX = 0, SCLx = 1.

SSPxIF y BCLxIF se borran por el


software

SSPxIF

SSPxIF y BCLxIF se borran por el


software

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 287


PIC16F / LF1825 / 1829

Figura 25-34: BUS colisión durante una condición de arranque (SCLX = 0)

sdaX = 0, SCLx = 1

T BRG T BRG

sdaX

Ajuste SEN, habilite la secuencia de inicio si


SCLx
sdaX = 1, SCLx = 1

SCLx = 0 antes sdaX = 0,


colisión de bus se produce. Establecer BCLxIF.
SEN

antes de tiempo de espera,


colisión de bus se produce. Establecer BCLxIF. SCLx = 0 BRG

BCLxIF

De interrupción despejado por


el software

S '0' '0'

SSPxIF '0' '0'

Figura 25-35: BRG REAJUSTE POR ARBITRAJE SDA durante el arranque CONDICIÓN

sdaX = 0, SCLx = 1
Establecer S

Menos de T BRG
T BRG

sdaX SdaX calada por otro maestro. Restablecer


BRG y hacer valer sdaX. establecido BRG SSPxIF

SCLx
S

SCLx calado después del tiempo de espera

SEN

Ajuste SEN, habilite la secuencia de inicio si


sdaX = 1, SCLx = 1
BCLxIF '0'

SSPxIF
= 1, Las interrupciones despejado por

establecer SSPxIF sdaX = 0, SCLx el software

DS41440A páginas 288 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

25.6.13.2 autobús colisión durante una repetida Si sdaX es baja, se ha producido una colisión bus (es decir, otro maestro
Condición de inicio está intentando transmitir un dato ' 0 ', Figura 25-35 ). Si se realiza un
muestreo de alta sdaX, el BRG se vuelve a cargar y comienza el conteo. Si
Durante una condición de inicio repetida, se produce una colisión de bus si:
va de sdaX de alto a bajo antes de los tiempos BRG cabo, ninguna colisión
de bus se debe a que no hay dos maestros pueden valer sdaX
a) Un nivel bajo se muestrea en sdaX cuando SCLx va de bajo exactamente al mismo tiempo. Si va de SCLx de alto a bajo antes de los
nivel a nivel alto.
tiempos BRG fuera y sdaX aún no se ha afirmado, se produce una colisión
b) SCLx pasa a nivel bajo antes de sdaX se afirma bajo, lo que de bus. En este caso, otro maestro está intentando transmitir un dato ' 1 'Durante
indica que otro maestro está intentando transmitir un dato ' 1 '. la condición de inicio repetida, véase Figura 25-36 . Si, al final de la BRG de
tiempo de espera, tanto SCLx y sdaX siguen siendo altos, el pasador sdaX
Cuando el usuario suelta sdaX y se permite que el pasador de flotar alta, es conducido bajo y el BRG se vuelve a cargar y comienza el conteo. Al
el BRG se carga con SSPxADD y cuenta atrás hasta cero. El pasador final de la cuenta, independientemente de la situación del pasador SCLx, el
SCLx es entonces No reafirmada y cuando muestreada alta, se muestrea pasador SCLx es impulsada baja y la condición de inicio repetida es
el pasador sdaX. completa.

Figura 25-36: BUS COLLISION durante una condición de START repetida (caso 1)

sdaX

SCLx

Muestra sdaX cuando SCLx pasa a alta. Si sdaX = 0, establecer y liberar


BCLxIF sdaX y SCLx.

RSEN

BCLxIF

Aprobado por el software

S '

SSPxIF ' 0 '' 0

Figura 25-37: COLLISION bus durante REPETIDO condición de arranque (caso 2)

T BRG T BRG

sdaX

SCLx

SCLx pasa a nivel bajo antes de sdaX, establecer


BCLxIF BCLxIF. Liberar sdaX y SCLx.

De interrupción despejado por

el software

RSEN

S
'0'

SSPxIF

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 289


PIC16F / LF1825 / 1829

25.6.13.3 autobús colisión durante una parada La condición de parada comienza con sdaX confirmada baja. Cuando se
Condición muestrea sdaX baja, se permite que el pasador SCLx flotar. Cuando el
pasador se muestrea alta (arbitraje reloj), la Tasa de Generador Baud se
colisión de bus se produce durante una condición de parada si:
carga con SSPxADD y cuenta hacia abajo a 0. Después de los tiempos
a) Después de que el pin sdaX ha sido deasserted y se dejó flotar BRG fuera, sdaX se muestrea. Si se muestrea sdaX baja, se ha producido
alta, sdaX se muestrea bajo después de la BRG ha caducado. una colisión de bus. Esto se debe a otro maestro de intentar conducir un
dato ' 0 '( Figura 25-37 ). Si el pasador SCLx se muestrea baja antes de
b) Después de que se deasserted el pasador SCLx, SCLx se muestrea permitir sdaX flotar alta, se produce una colisión de bus. Este es otro caso
bajo antes sdaX pasa a alta. de otro maestro de intentar conducir un dato ' 0 '( Figura 25-38 ).

Figura 25-38: BUS colisión durante una condición de parada (caso 1)

T BRG T BRG T BRG SdaX tomaron muestras de

baja después de la T BRG,

establecer BCLxIF
sdaX

SdaX confirmada baja


SCLx

PEN

BCLxIF

PAG '

SSPxIF ' 0 '' 0

Figura 25-39: BUS colisión durante una condición de parada (caso 2)

T BRG T BRG T BRG

sdaX

SCLx pasa a nivel bajo antes de sdaX va ajuste alto


valer sdaX
BCLxIF,
SCLx

PEN

BCLxIF

PAG '

SSPxIF ' 0 '' 0

DS41440A páginas 290 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

TABLA 25-3: RESUMEN DE registros asociados con I 2 FUNCIONAMIENTO C ™

Restablecer los

Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0 valores de

Página

INLVLA - - INLVLA5 ( 1) INLVLA4 INLVLA3 ( 2) INLVLA2 INLVLA1 INLVLA0 131

INLVLB ( 1) INLVLB7 INLVLB6 INLVLB5 INLVLB4 - - - - 136

INLVLC INLVLC7 ( 1) INLVLC6 ( 1) INLVLC5 INLVLC4 INLVLC3 ( 2) INLVLC2 ( 2) INLVLC1 INLVLC0 142

INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 93

PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94

PIE2 OSFIE C2IE C1IE EEIE BCL1IE - - CCP2IE 95

PIR1 TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF 98

PIR2 OSFIF C2IF C1IF EEIF BCL1IF - - CCP2IF 99

SSP1ADD ADD7 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0 297

SSP1BUF Puerto serie síncrono búfer de recepción / transmisión Registro 249 *

SSP1CON1 WCOL SSPOV SSPEN CKP SSPM <3: 0> 294

SSP1CON2 GCEN ACKSTAT ACKDT ACKEN RCEN BOLÍGRAFO RSEN SEN 295

SSP1CON3 ACKTIM PCIE SCIE BOEN SDAHT SBCDE UNA GALLINA DHEN 296

SSP1MSK MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 297

SSP1STAT SMP CKE D/A PAG S R/W UA BF 293

TRISA - - TRISA5 ( 1) TRISA4 TRISA3 ( 2) TRISA2 TRISA1 TRISA0 129

TRISB ( 1) TRISB7 TRISB6 TRISB5 TRISB4 - - - - 135

TRISC TRISC7 ( 1) TRISC6 ( 1) TRISC5 TRISC4 TRISC3 ( 2) TRISC2 ( 2) TRISC1 TRISC0 140

Leyenda: - = Ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no son utilizados por el módulo MSSP en modo I 2 C ™.
* Página proporciona información de registro.
Nota 1: PIC16F / LF1829 solamente.

2: PIC16F / LF1825 solamente.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 291


PIC16F / LF1825 / 1829

25.7 VELOCIDAD GENERADOR línea de reloj del módulo. El dictado lógica Cuando se emite la señal de
recarga depende del modo de la MSSPx está siendo operado en.
El módulo MSSPx tiene una tasa de baudios Generador dispo- poder de
generación de reloj, tanto en lo 2 C y SPI modos maestro. El (BRG) valor de
Tabla 25-4 demuestra frecuencias de reloj basado en ciclos de
recarga Velocidad de transmisión del generador se coloca en el registro
instrucción y el valor cargado en BRG SSPxADD.
SSPxADD ( Registro 25-6 ). Cuando se produce una escritura en SSPxBUF, la
velocidad en baudios rador Gen- se iniciará automáticamente la cuenta atrás.
Una vez que la operación dada es completa, el reloj interno se detendrá ECUACIÓN 25-1:
automáticamente el recuento y el pin de reloj permanecerá en su último
estado. Una señal interna “Reload” en Figura 25-39 desencadena el valor de F OSC
F RELOJ = -------------------------------------------------
SSPxADD a ser cargado en el contador de BRG. Esto ocurre dos veces para • SSPxADD 1 + • • 4 •
cada oscilación de la

Figura 25-40: ESQUEMA DE VELOCIDAD GENERADOR DE BLOQUE

SSPxM <3: 0> SSPxADD <7: 0>

SSPxM <3: 0> control de Recargar

SCLx recarga

SSPxCLK BRG Contador descendente F OSC / 2

Nota: Los valores de 0x00, 0x01 y 0x02 no son válidos


para SSPxADD cuando se utiliza como un generador de velocidad en

baudios porque yo 2 C. Esta es una limitación de implementación.

TABLA 25-4: MSSPX reloj de velocidad W / BRG

F RELOJ
F OSC F CY BRG Valor
(2 Rollovers de BRG)

32 MHz 8 MHz 13h 400 kHz ( 1)

32 MHz 8 MHz 19h 308 kHz


32 MHz 8 MHz 4Fh 100 kHz
16 MHz 4 MHz 09h 400 kHz ( 1)

16 MHz 4 MHz 0ch 308 kHz


16 MHz 4 MHz 27h 100 kHz
4 MHz 1 MHz 09h 100 kHz
Nota 1: el I 2 interfaz de C no se ajusta a la 400 kHz I 2 especificación C (que se aplica a tasas mayores que
100 kHz) en todos los detalles, pero puede ser usado con cuidado donde las tasas más altas son requeridos por la aplicación.

DS41440A páginas 292 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

REGISTRO 25-1: registro de estado FSSPX: SSPxSTAT

R / W-0/0 R / W-0/0 R-0/0 R-0/0 R-0/0 R-0/0 R-0/0 R-0/0

SMP CKE D/A PAG S R/W UA BF

7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece

'1' = Bit se establece '0' = Bit se borra

7 bits SMP: SPI datos de bits de muestreo de entrada

Modo maestro SPI:


1 = Los datos de entrada muestreados al final del tiempo de salida de datos

0 = Los datos de entrada muestreados a mitad de tiempo de salida de datos

el modo SPI esclavo:


SMP debe eliminarse si SPI se utiliza en modo esclavo
en lo 2 C modo maestro o esclavo:
1 = control de la frecuencia Slew deshabilitado para el modo de velocidad estándar (100 kHz y 1 MHz)

0 = control de la frecuencia Slew habilitado para el modo de alta velocidad (400 kHz)

6 bits CKE: SPI Reloj Edge Select bits (modo SPI solamente)

En SPI modo maestro o esclavo:


1 = Transmit se produce en la transición del estado activo al estado de reposo reloj

0 = Transmit se produce sobre la transición de inactivo a estado activo reloj

En I2 sólo en el modo C ™:
1 = Habilitar lógica de entrada de modo que los umbrales se cumple con la Especificación SMbus
0 = Inhabilitar SMbus insumos específicos

5 bits D / A: Datos / Dirección bits (sólo modo I 2 C)


1 = Indica que el último byte recibido o transmitido de datos fue
0 = Indica que el último byte recibido o transmitido era de direcciones

4 bits PAG: Bit de parada (I2 sólo en el modo C. Este bit se borra cuando el módulo MSSPx está desactivada, SSPxEN se borra.)

1 = Indica que un bit de parada se ha detectado el pasado (esto es poco ' 0 'En Restablecer)
0 = Bit de parada no se detectó el pasado

3 bits S: Bit de inicio (I2 sólo en el modo C. Este bit se borra cuando el módulo MSSPx está desactivada, SSPxEN se borra.)

1 = Indica que un bit de inicio se ha detectado el pasado (esto es poco ' 0 'En Restablecer)
0 = bit de inicio estaba No detectado última

bit 2 R / W: Lectura / Escritura bi TI nformación (I modo 2 C solamente) Este bit contiene la información de bit R / W ss debido al último partido de direcciones. Este bit sólo es válido desde el
partido de direcciones para el siguiente bit de inicio, parada poco, o no bit ACK.

en lo 2 el modo C Esclavo:
1 = Leer
0 = Escribir

en lo 2 Modo Master C:
1 = De transmisión está en curso
0 = De transmisión no está en curso
O-ing este bit con NEE, RSEN, PEN, RCEN o ACKEN indicará si el MSSPx está en el modo inactivo.

bit 1 UA: Actualizar dirección de bits (10 bits I2 modo C solamente)

1 = Indica que el usuario tiene que actualizar la dirección en el registro SSPxADD


0 = Dirección no necesita ser actualizado

bit 0 BF: Buffer Bit de estado completa

Recibir (SPI y yo 2 modos c):


1 = Recibir completa, SSPxBUF está lleno
0 = Recibe no completa, SSPxBUF está vacía

De transmisión (I 2 sólo en el modo C):

1 = Transmitir datos en curso (no incluye XX Un correo CK y los bits de parada), SSPxBUF está lleno
0 = Transmitir datos completa (no incluye los bits ACK y Stop), SSPxBUF está vacía

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 293


PIC16F / LF1825 / 1829

REGISTRO 25-2: SSPxCON1: FSSPX REGISTRO DE CONTROL 1

R / C / HS-0/0 R / C / HS-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0

WCOL SSPxOV SSPxEN CKP SSPxM <3: 0>

7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece

'1' = Bit se establece '0' = Bit se borra SA = bit es activado por el hardware C = El usuario borra

7 bits WCOL: Escribe Collision Detect bits


Modo maestro:
1 = Una escritura en el registro SSPxBUF se intentó mientras que el I2 C condiciones no eran válidos para que se inicie una transmisión
0 = No hubo colisión
Modo esclavo:
1 = El registro SSPxBUF está escrito, mientras que todavía está transmitiendo la palabra anterior (debe ser cero por software)
0 = No hubo colisión

6 bits SSPxOV: Recibe indicador de desbordamiento del bit ( 1)


En el modo SPI:
1 = Un nuevo byte es recibido mientras que el registro SSPxBUF aún se mantiene los datos anteriores. En caso de desbordamiento, los datos en SSPxSR se pierde.
Desbordamiento sólo puede ocurrir en el modo esclavo. En el modo esclavo, el usuario debe leer el SSPxBUF, aunque sólo la transmisión de datos, para evitar el establecimiento de desbordamiento. En el
modo maestro, el bit de desbordamiento no se ha establecido ya que cada nueva recepción (y transmisión) se inicia por escrito al registro SSPxBUF (debe ser aclarado en el software).

0 = sin desbordamiento

en lo 2 Modo C:
1 = Un byte es recibido mientras que el registro SSPxBUF aún se mantiene el byte anterior. SSPxOV es un “no me importa” en el modo de transmisión
(Debe ser aclarado en el software).
0 = sin desbordamiento

5 bits SSPxEN: Puerto serie síncrono Enable bit


En ambos modos, cuando está activado, estos pines deben estar correctamente configurados como entrada o salida
En el modo SPI:
1 = Permite puerto serie y configura SCKx, SDOx, SDIX y SSx como la fuente de las clavijas de puerto serie ( 2)
0 = Desactiva el puerto serie y configura estos pines como pines del puerto de E / S
en lo 2 Modo C:
1 = Activa el puerto en serie y configura los pasadores sdaX y SCLx como la fuente de las clavijas de puerto serie ( 3)
0 = Desactiva el puerto serie y configura estos pines como pines del puerto de E / S

4 bits CKP: Reloj Polaridad Seleccione bits


En el modo SPI:
1 = estado de reposo para el reloj es un nivel alto
0 = estado de reposo para el reloj es un bajo nivel

en lo 2 el modo C Esclavo:
control de liberación SCLx
1 = Habilitar reloj
0 = Sostiene reloj de baja (estiramiento del reloj). (Se utiliza para garantizar el tiempo de preparación de datos).

en lo 2 Modo Master C:
Sin utilizar en este modo

bits 3-0 SSPxM <3: 0>: Síncronos en serie bits de modo de selección de puerto
0000 = Modo maestro SPI, reloj = F OSC / 4
0001 = Modo maestro SPI, reloj = F OSC / 16
0010 = Modo maestro SPI, reloj = F OSC / 64
0011 = Modo maestro SPI, reloj = ou TMR2 tput / 2
0100 = el modo SPI esclavo, reloj = pin SCKx, SSx pin de control habilitado
0101 = modo SPI Slave, reloj = pin SCKx, control pin SSx deshabilitado, SSx se puede utilizar como pin I / O
0110 = I 2 C Modo esclavo, dirección de 7 bits
0111 = I 2 C Modo esclavo, dirección de 10 bits
1000 = I 2 Modo maestro C, reloj = F OSC / (4 * (SSPxADD + 1)) ( 4)
1001 = Reservado
1010 = Modo maestro SPI, reloj = F OSC / (4 * (SSPxADD + 1)) ( 5)
1011 = I 2 Modo maestro controlado C firmware (Slave Idle)
1100 = Reservado
1101 = Reservado
1110 = I 2 C Modo esclavo, dirección de 7 bits de inicio y parada con interrupciones bits habilitado
1111 = I 2 C Modo esclavo, dirección de 10 bits con inicio y parada interrupciones bits habilitado

Nota 1: En el modo maestro, el bit de desbordamiento no se ha establecido ya que cada nueva recepción (y transmisión) se inicia por escrito al registro SSPxBUF.
2: Cuando está activado, estos pines deben estar correctamente configurados como entrada o salida.

3: Cuando está activado, los pasadores sdaX y SCLx deben configurarse como entradas.
4: valores SSPxADD de 0, 1 o 2 no son compatibles con I 2 C Mode.
5: SSPxADD valor de ' 0 ' no es apoyado. Utilice SSPxM = 0000 en lugar.

DS41440A páginas 294 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

REGISTRO 25-3: SSPxCON2: FSSPX REGISTRO DE CONTROL 2

R / W-0/0 R-0/0 R / W-0/0 R / S / HS-0/0 R / S / HS-0/0 R / S / HS-0/0 R / S / HS-0/0 R / W / HS-0/0

GCEN ACKSTAT ACKDT ACKEN RCEN BOLÍGRAFO RSEN SEN


7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra HC = Se elimina al hardware S = conjunto de Usuario

7 bits GCEN: Convocatoria general Enable bit (en lo 2 sólo en el modo C Slave)

1 = Habilitar interrupción cuando una dirección de llamada general (0x00 o 00h) es recibido en el SSPxSR
0 = dirección de llamada general deshabilitado

6 bits ACKSTAT: Bit de reconocimiento de estado (en lo 2 sólo en el modo C)

1 = Reconocer no fue recibida


0 = Reconocer fue recibida
5 bits ACKDT: Reconocer bits de datos (en lo 2 sólo en el modo C)

En el modo de recepción:

Valor transmite cuando el usuario inicia una secuencia Reconocer en el extremo de un recibir
1 = no reconoce
0 = Reconocer
4 bits ACKEN: Secuencia reconocer bit de habilitación (en lo 2 Sólo modo Master C)
En Maestro modo de recepción:

1 = Iniciar Reconocer secuencia en los pines sdaX y SCLx, y transmitir ACKDT bit de datos.
limpiado automáticamente por el hardware.
0 = Reconocer Idle secuencia
3 bits RCEN: Recibe Enable bit (en lo 2 Sólo modo Master C)
1 = Activa el modo de recepción de I 2 do
0 = Recibe inactivo

bit 2 BOLÍGRAFO: Detener Condición Enable bit (en lo 2 Sólo modo Master C)

SCKx de control de lanzamiento:

1 = Iniciar la condición de parada en los pines sdaX y SCLx. limpiado automáticamente por el hardware.
0 = Detener condición de reposo

bit 1 RSEN: Repetida poco Habilitado Condición de inicio (en lo 2 Sólo modo Master C)

1 = Iniciar la condición de arranque repetido en los pines sdaX y SCLx. limpiado automáticamente por el hardware.
0 = Repetida condición de reposo de inicio

bit 0 SEN: Condición comenzar poco activada (en lo 2 Sólo modo Master C)

En el modo Maestro:
1 = Iniciar la condición de arranque en los pines sdaX y SCLx. limpiado automáticamente por el hardware.
0 = Condición de arranque inactivo

En el modo esclavo:

1 = Reloj de estiramiento está habilitada tanto para transmitir y recibir esclavo esclavo (habilitado estiramiento)
0 = Reloj de estiramiento está desactivado

Nota 1: Para los bits ACKEN, RCEN, PEN, RSEN, SEN: Si el yo 2 módulo C no está en el modo de espera, este bit no puede ser
set (sin cola de impresión) y el SSPxBUF no se puede escribir (o escribe en la SSPxBUF están desactivados).

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 295


PIC16F / LF1825 / 1829

REGISTRO 25-4: SSPxCON3: FSSPX REGISTRO DE CONTROL 3

R-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0

ACKTIM PCIE SCIE BOEN SDAHT SBCDE UNA GALLINA DHEN


7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra

7 bits ACKTIM: Tiempo reconocer bit de estado (I 2 sólo en el modo C) ( 3)

1 = Indica el I 2 C autobús está en una secuencia de Reconocer, situado en 8 TH flanco descendente de reloj SCLx
0 = No es una secuencia Reconocer, se aclaró el 9 de TH el flanco de subida del reloj SCLx

6 bits PCIE: Detener la condición de interrupción bit de habilitación (I 2 sólo en el modo C)

1 = Habilitar interrupción en la detección de la condición de parada

0 = Detienen las interrupciones están deshabilitadas de detección ( 2)

5 bits SCIE: Comienza condición de interrupción bit de habilitación (I 2 sólo en el modo C)

1 = Habilitar interrupción en la detección de inicio o las condiciones de reinicio


0 = Comienzan las interrupciones están deshabilitadas de detección ( 2)

4 bits BOEN: Buffer de sobrescritura Habilitar bit

En el modo SPI esclavo: (1)


1 = SSPxBUF se actualiza cada vez que un nuevo byte de datos se desplaza en ignorar el bit BF
0 = Si se recibe nuevo byte con el bit BF del registro SSPxSTAT ya establecido, SSPxOV poco de la
SSPxCON1 registro está establecido, y el buffer no se actualiza
en lo 2 C Modo maestro y el modo Maestro SPI:
Este bit se ignora.
en lo 2 el modo C Esclavo:

1 = SSPxBUF se actualiza y ACK se genera un byte de dirección / datos recibidos, haciendo caso omiso de la
Estado de la SSPxOV bits sólo si el bit BF = 0.
0 = SSPxBUF sólo se actualiza cuando está claro SSPxOV

3 bits SDAHT: SdaX Tiempo de retención de bit de selección (I 2 sólo en el modo C)

1 = Mínimo de 300 ns tiempo de retención en sdaX después del flanco de bajada de SCLx
0 = Mínimo de 100 ns tiempo de retención en sdaX después del flanco de bajada de SCLx

bit 2 SBCDE: Modo esclavo del bus Collision Detect bit de habilitación (I 2 C Modo esclavo) Si está activado el flanco ascendente de SCLx, sdaX se muestrea

baja cuando el módulo está dando salida a un estado alto, se establece el bit del registro BCLxIF PIR2, y autobús entra en inactividad

1 = Habilitar las interrupciones de esclavos colisión de bus

0 = Esclavos interrupciones de colisión de bus están desactivados

bit 1 UNA GALLINA: Dirección Mantenga Enable bit (I 2 sólo en el modo C Slave)

1 = Siguiendo el borde octava descendente de SCLx para un byte de dirección coincidente recibida; CKP poco de la
SSPxCON1 registro se borrará y la SCLx se llevará a cabo bajo.
0 = Dirección de retención se desactiva

bit 0 DHEN: Retención de datos Habilitar bits (I 2 sólo en el modo C Slave)

1 = Tras el octavo flanco de bajada de SCLx para un byte de datos recibidos; esclavo de hardware borra el bit CKP
de los SSPxCON1 registro y SCLx se mantiene baja.
0 = retención de datos está inhabilitado

Nota 1: Para el funcionamiento SPI en cadena; permite al usuario ignorar todos excepto el último byte recibido. SSPxOV sigue estando ajustado
cuando se recibe un nuevo byte y BF = 1, pero el hardware sigue escribiendo el último byte a SSPxBUF.
2: Este bit no tiene ningún efecto en los modos de esclavos que iniciar y detección del estado de parada del autobús aparece explícitamente como habilitado.

3: El bit de estado ACKTIM sólo se activa cuando se activa el bit o bit Ahen DHEN.

DS41440A páginas 296 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

REGISTRO 25-5: SSPxMSK: registro de máscara FSSPX

R / W-1/1 R / W-1/1 R / W-1/1 R / W-1/1 R / W-1/1 R / W-1/1 R / W-1/1 R / W-1/1

MSK <7: 0>

7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra

bits 7-1 MSK <7: 1>: los bits de máscara

1 = La dirección de recibido el bit n se compara con SSPxADD <n> I para detectar 2 coincidencia de dirección C
0 = La dirección de bit recibida n no se utiliza para detectar I 2 coincidencia de dirección C

bit 0 MSK <0>: bit de máscara porque yo 2 C Modo esclavo, de 10 bits Dirección I 2 C Modo esclavo, dirección de 10 bits (SSPxM <3: 0> = 0111 o 1111):
1 = La dirección de bit recibido es comparado con 0 SSPxADD <0> I para detectar 2 coincidencia de dirección C

0 = La dirección de bit recibido 0 no se utiliza para detectar I 2 C coincidencia de dirección I 2 C Modo esclavo,
dirección de 7 bits, el bit se ignora

REGISTRARSE 25-6: SSPxADD: DIRECCIÓN Y VELOCIDAD MSSPx REGISTRO (I 2 MODO C)

R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0

Añadir <7: 0>

7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra

Modo maestro:

bits 7-0 Añadir <7: 0>: Velocidad de transmisión del reloj del divisor bits de período SCLx

reloj pin = ((ADD <7: 0> + 1) * 4) / F OSC

10-bit de modo Esclavo - Byte más significativo Dirección:

bits 7-3 No utilizado: La mayor parte no utilizada de byte de dirección significativo. estado del bit de este registro es un “no me importa”. patrón de bits enviado
por el maestro está fijado por lo 2 especificación C y debe ser igual a ' 11110 '. Sin embargo, esos bits se comparan por hardware y no se ven afectados
por el valor en este registro.

bits 2-1 Añadir <2: 1>: Dos bits más significativos de dirección de 10 bits

bit 0 No utilizado: Sin utilizar en este modo. estado de bit es un “no me importa”.

10-bit de modo Esclavo - Byte menos significativo Dirección:

bits 7-0 Añadir <7: 0>: Ocho bits menos significativos de la dirección de 10 bits

7-Bit Modo esclavo:

bits 7-1 Añadir <7: 1>: dirección de 7 bits

bit 0 No utilizado: Sin utilizar en este modo. estado de bit es un “no me importa”.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 297


PIC16F / LF1825 / 1829

NOTAS:

DS41440A páginas 298 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

26.0 MEJORADA SÍNCRONOS El módulo EUSART incluye las siguientes capacidades:

UNIVERSAL • transmisión asíncrona full-duplex y recibir

ASÍNCRONO transmisor receptor • buffer de entrada de dos caracteres

(EUSART) • búfer de salida de un carácter


• longitud de caracteres programable de 8 bits o 9 bits
el Enhanced Synchronous Asynchronous Receiver Transmitter universal (EUSART)
• detección de direcciones en el modo de 9 bits
módulo es una serie de E / S de comunicaciones periférica. Contiene todos los
• tampón de entrada de detección de error de desbordamiento
generadores de reloj, registros de desplazamiento y memorias intermedias de
datos necesarios para llevar a cabo una entrada o salida de datos en serie de • detección de error de trama carácter recibido
transferencia independiente de la ejecución del programa dispositivo. El • maestro síncrono half-duplex
EUSART, también conocida como una interfaz de comunicaciones serie (SCI), • esclavo sincrónica half-duplex
se puede configurar como un sistema asíncrono de dúplex completo o sistema
• polaridad reloj programable en los modos síncronos
síncrono medio-duplex.

• El funcionamiento del sueño


el modo full-duplex es útil para

comunicaciones con sistemas periféricos, tales como terminales CRT El módulo EUSART implementa las siguientes características
y personales ordenadores. Medio duplex adicionales, por lo que es ideal para su uso en sistemas de bus de red
El modo síncrono está destinado a las comunicaciones con dispositivos de interconexión local (LIN):
periféricos, tales como A / D o D / A de circuitos integrados, EEPROMs de serie • La detección automática y la calibración de la velocidad en baudios
o de otros microcontroladores. Estos dispositivos generalmente no tienen relojes
• Despertador de la recepción rotura
internos para la generación de la velocidad de transmisión y requieren la señal
• 13 bits diagramas carácter de salto de transmisión bloques del
de reloj externa proporcionada por un dispositivo síncrono maestro.
transmisor y el receptor EUSART se muestran en la Figura 27-1 y la
Figura 27-2.

FIGURA 26-1: ESQUEMA DE BLOQUE DE TRANSMISIÓN EUSART

Bus de datos
TXIE

Interrumpir
TXREG Registro TXIF

MSb LSb T X / C pin K

Pin Buffer y
0
• • • Control
Transmisión yo t SHIFT t Registro (TSR) (8)

TXEN

TRMT SPEN
Generador velocidad en baudios
F OSC
÷n
TX9
norte
BRG16

+1 Multiplicador x4 x16 x64


TX9D
SINC 1 X 0 0 0

SPBRGH SPBRGL BRGH X 1 1 0 0

BRG16 X 1 0 1 0

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 299


PIC16F / LF1825 / 1829

FIGURA 26-2: EUSART RECIBIR diagrama de bloques

SPEN CREN OERR RCIDL

pin RX / DT MSb RSR Registro LSb

Pin Buffer y Recuperación de


Control datos
Detener (8) 7 • • • 10 COMIENZO

Generador velocidad en baudios F OSC RX9


÷n

BRG16
norte
+1 Multiplicador x4 x16 x64

SINC 1 X 0 0 0
FIFO
SPBRGH SPBRGL BRGH X 1 1 0 0 FERR RX9D RCREG Registro

BRG16 X 1 0 1 0

De bus de datos 8

RCIF
Interrumpir t
RCIE

El funcionamiento del módulo de EUSART se controla a través de tres


registros:

• Transmitir Estado y control (TXSTA)


• Recibe Estado y control (RCSTA)
• Control de velocidad de transmisión

(BAUDCON) Estos registros son detallada en el Registro 27-1,


Register 27-2 y 27-3 Register, respectivamente. Cuando la sección de transmisor

receptor o no está activado, entonces el RX correspondiente o pasador TX se

pueden utilizar para la entrada de propósito general y de salida.

DS41440A páginas 300 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

26.1 EUSART modo asíncrono 26.1.1.2 transmisión de datos de

El EUSART transmite y recibe datos utilizando el formato estándar de no Una transmisión se inicia escribiendo un personaje para el registro

retorno a cero (NRZ). NRZ se implementa con dos niveles: a V OH estado


TXREG. Si este es el primer carácter, o el carácter anterior ha sido

marca que representa un " 1 'Bit de datos, y una V OL estado de espacio que
completamente vaciado de la TSR, los datos de la TXREG se transfiere
inmediatamente al registro TSR. Si el TSR todavía contiene la totalidad
representa un " 0 'Bit de datos. NRZ se refiere al hecho de que transmite
o parte de un carácter anterior, los nuevos datos de carácter se llevó a
consecutivamente bits de datos de la misma estancia valor en el nivel de
cabo en el TXREG hasta que el bit de parada del carácter anterior se ha
salida de ese bit sin volver a un nivel neutral entre cada transmisión de bits.
transmitido. El carácter pendiente en el TXREG se transfiere entonces a
Un puerto de transmisión NRZ ralentí en el estado marca. Cada transmisión
la TSR en una camiseta CY inmediatamente después de la transmisión
de caracteres consta de un bit de inicio seguido por ocho o nueve bits de
de los bits de parada. La transmisión del bit de inicio, bits de datos y la
datos y siempre se termina por uno o más bits de parada. El bit de inicio es
secuencia de bits de parada comienza inmediatamente después de la
siempre un espacio y los bits de parada, son siempre marcas. El formato de
transferencia de los datos a la TSR de la TXREG.
datos más común es de 8 bits. Cada bit transmitido persiste durante un
período de 1 / (Velocidad de transmisión). Un on-chip dedicado de 8 bits /
Rate Generador Baud 16 bits se utiliza para derivar frecuencias de velocidad
de transmisión estándar desde el oscilador sistema. Ver Tabla 27-5 para ver
ejemplos de configuraciones de velocidad de transmisión. El EUSART
26.1.1.3 Transmitir indicador de interrupción
transmite y recibe el LSB primero. transmisor y el receptor de la EUSART son
funcionalmente independientes, pero comparten el mismo formato de datos y El bit de bandera TXIF interrupción del registro PIR1 se establece cada vez que

velocidad de transmisión. La paridad no es compatible con el hardware, pero se activa el transmisor EUSART y sin carácter se lleva a cabo para la transmisión

se puede implementar en software y almacena como el noveno bit de datos. en el TXREG. En otras palabras, el bit TXIF sólo es evidente cuando el TSR está
ocupado con un carácter y un nuevo personaje ha puesto en cola para su
transmisión en el TXREG. El bit de bandera TXIF no se borra inmediatamente
después de escribir TXREG. TXIF vuelve válida en el segundo ciclo de
instrucción después de la ejecución de escritura. Sondeo TXIF inmediatamente
después de la escritura TXREG proporcione resultados válidos. , Que no puede
ser activa o se desactiva por el software de la broca TXIF es de sólo lectura. La
26.1.1 TRANSMISOR EUSART ASÍNCRONO interrupción TXIF se puede activar mediante el establecimiento de la TXIE
interrumpir bit de habilitación del registro PIE1. Sin embargo, el bit indicador TXIF
se establece siempre que el TXREG está vacía, sin importar el estado de TXIE
El diagrama de bloques del transmisor EUSART se muestra en la Figura 27-1.
El corazón del transmisor es la transmisión de desplazamiento en serie Registro bit de habilitación. Para utilizar las interrupciones en la transmisión de datos,

(TSR), que no es accesible directamente por el software. El TSR obtiene sus establecer el bit TXIE sólo cuando hay más datos que enviar. Borrar el bit de

datos de la memoria intermedia de transmisión, que es el registro TXREG. habilitación de interrupción TXIE al escribir el último carácter de la transmisión a
la TXREG.

26.1.1.1 Habilitación del transmisor Transmisor El EUSART está habilitada


para operaciones asíncronas mediante la configuración de los siguientes
tres bits de control:

• TXEN = 1
• SINC = 0
• SPEN = 1

Todos los otros bits de control EUSART se asumen para estar en su estado por
defecto.

El establecimiento del bit TXEN del registro TXSTA permite a los circuitos
transmisor de la EUSART. Despejar el bit SYNC del registro TXSTA
configura el EUSART para la operación asincrónica. El establecimiento del
bit SPEN del registro RCSTA permite al EUSART y configura
automáticamente el / pin TX CK E / S como una salida. Si el pasador / CK TX
es compartida con un periférico analógico, la función de E / S analógica debe
estar desactivado en la limpieza de la broca ANSEL correspondiente.

Nota 1: La bandera TXIF transmisor de interrupción se establece

cuando el TXEN habilitación se establece bits.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 301


PIC16F / LF1825 / 1829

26.1.1.4 TSR Estado 26.1.1.6 Transmisión asíncrona Set-up:

El bit TRMT del registro TXSTA indica el estado del registro TSR. Esto es 1. Inicializar el par de registro SPBRGH, SPBRGL y los bits BRGH y
un poco de sólo lectura. El bit TRMT se establece cuando el registro TSR BRG16 para lograr la tasa de transmisión deseada (ver Sección 27.3
está vacío y se borra cuando un personaje se transfiere al registro TSR de “EUSART Velocidad de transmisión del generador (BRG)”).
la TXREG. El bit TRMT queda claro hasta que todos los bits se han
desplazado fuera del registro TSR. Ninguna lógica de interrupción está 2. Active el puerto serie asíncrono desactivando el bit SYNC y
atada a este bit, por lo que el usuario tiene que consultar este bit para establecer el bit SPEN.
determinar el estado TSR.
3. Si se desea la transmisión de 9 bits, ajuste el con- trol TX9 bits. Un bit de
datos noveno establecer indicará que los 8 bits de datos menos significativo

Nota: El registro TSR no se asigna en la memoria de datos, por lo son una dirección cuando el receptor está configurado para la detección de

que no está disponible para el usuario. direcciones.

4. Habilitar la transmisión poniendo el bit de control TXEN. Esto hará


26.1.1.5 La transmisión de caracteres 9-Bit que el bit de interrupción TXIF que desea ajustar.
El EUSART soporta transmisiones de caracteres de 9 bits. Cuando se
establece el bit TX9 del registro TXSTA, la EUSART se desplazará 9 bits 5. Si se desean interrupciones, establecer el TXIE habilitación de
para cada carácter Transmitir- Ted. El bit TX9D del registro TXSTA es el interrupción bit del registro PIE1. Una interrupción se producirá
noveno, y más importante, bit de datos. Cuando se transmiten datos de 9 proporcionado inmediatamente que también se establecen los bits GIE
bits, el bit de datos TX9D debe ser escrito antes de escribir los 8 bits menos y PEIE del registro INTCON.
significativos en el TXREG. Los nueve bits de datos serán transferidos al 6. Si se selecciona la transmisión de 9 bits, el noveno bit debe ser
registro de desplazamiento TSR inmediatamente después de la TXREG cargado en el bit de datos TX9D.
está escrito.
7. Carga de datos de 8 bits en el registro TXREG. Esto iniciará la
transmisión.
Un modo especial Dirección 9 bits está disponible para su uso con múltiples
receptores. Ver Sección 27.1.2.7 “Detección de direcciones” para más
información sobre el modo de dirección.

FIGURA 26-3: transmisión asíncrona

Escribir en TXREG
palabra 1
Salida BRG (Shift
Reloj)

TX / CK
alfiler bit de inicio bit 0 bit 1 7/8 bits bit de parada

palabra 1
TXIF bit
(Transmit Buffer Reg. 1 T CY
Flag vacío)

Palabra 1 Transmisión Shift


TRMT bits
Reg.
(Transmisión Shift Reg.
Bandera vacío)

FIGURA 26-4: Transmisión asíncrona (BACK-TO-BACK)

Escribir en TXREG
palabra 1 palabra 2
Salida BRG (Shift
Reloj)

TX / CK
pin bit de inicio bit 0 bit 1 7/8 bits bit de parada
bit de inicio bit 0
TXIF bit (Transmit 1 T CY palabra 1 palabra 2
Buffer Reg. Flag
vacío) 1 T CY

TRMT bits palabra 1


palabra 2
(Transmisión Shift Reg. Transmitirá Shift Reg.
Transmitirá Shift Reg.
Bandera vacío)

Nota: Este diagrama de temporización que muestra dos transmisiones consecutivas.

DS41440A páginas 302 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

TABLA 26-1: Resumen de los registros asociados con la transmisión ASÍNCRONO

inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página

APFCON0 RXDTSEL SDOSEL ( 2) SSSEL ( 2) - T1GSEL TXCKSEL - - 125

BAUDCON ABDOVF RCIDL - SCKP BRG16 - EUA Abden 310

INLVLA ( 3) - - INLVLA5 INLVLA4 INLVLA3 INLVLA2 INLVLA1 INLVLA0 131

INLVLB ( 1) INLVLB7 INLVLB6 INLVLB5 INLVLB4 - - - - 136

INLVLC INLVLC7 ( 1) INLVLC6 ( 1) INLVLC5 INLVLC4 INLVLC3 INLVLC2 INLVLC1 INLVLC0 142

INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 93

PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94

PIR1 TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF 98

RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309

SPBRGL BRG <7: 0> 311 *

SPBRGH BRG <15: 8> 311 *

TRISA - - TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 129

TRISB ( 1) TRISB7 TRISB6 TRISB5 TRISB4 - - - - 135

TRISC TRISC7 ( 1) TRISC6 ( 1) TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 140

TXREG EUSART Transmitir datos Registro 301

TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308

Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la transmisión asíncrona.
* Página proporciona información de registro.

Nota 1: PIC16F / LF1829 solamente.

2: PIC16F / LF1825 solamente.

3: Las células no sombreadas se aplican a PIC16F / LF1825 única.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 303


PIC16F / LF1825 / 1829

26.1.2 RECEPTOR EUSART ASÍNCRONO 26.1.2.2 Recepción de datos El circuito de recuperación de datos del receptor
inicia la recepción de caracteres en el flanco descendente del primer bit. El
primer bit, también conocido como el bit de inicio, siempre es un cero. El circuito
El modo asíncrono se utiliza típicamente en sistemas de RS-232. El diagrama de
de recuperación de datos de cuenta de tiempo de un medio poco al centro del
bloques del receptor se muestra en la Figura 27-2. Los datos se reciben en el
bit de inicio y verifica que el bit es todavía un cero. Si no es un cero, entonces el
pin RX / DT y acciona el bloque de recuperación de datos. El bloque de
circuito de recuperación de datos aborta la recepción de caracteres, sin generar
recuperación de datos es en realidad una palanca de cambios de alta velocidad
un error, y reanuda buscando el flanco de bajada del bit de inicio. Si el bit de
que funciona a 16 veces la velocidad de transmisión, mientras que la serie
inicio cero verificación tiene éxito, entonces el circuito de recuperación de datos
Recibir Shift Register (RSR) funciona a la velocidad de bits. Cuando los 8 o 9
bits del carácter se han desplazado en, que son inmediatamente cuenta con un poco de tiempo completo para el centro de la siguiente bit. El bit
es entonces muestreada por una mayoría detectar circuito y el resultante " 0 'O' 1 'Se

transferidos a una dos caracteres desplaza a la RSR. Esto se repite hasta que todos los bits de datos se han

Primero en entrar, primero en salir (FIFO). El búfer FIFO permite la muestreado y desplazado en la RSR. Una vez bit final es medido y el nivel de la

recepción de dos caracteres completos y el inicio de un tercer personaje muestra. Este es el bit de parada, que es siempre un " 1 '. Si la recuperación de

antes de iniciar el software debe dar servicio al receptor EUSART. Los datos de las muestras de circuito un " 0 'En la posición del bit de parada a

registros FIFO y RSR no son accesibles directamente por el software. El continuación, un error de trama se establece para este personaje, de lo contrario
acceso a los datos recibidos a través del registro es RCREG. se borra el error de trama para este personaje. Ver Sección 27.1.2.4 “Recibe
error de trama” Para más información sobre errores de trama. Inmediatamente
después de que se hayan recibido todos los bits de datos y el bit de parada, el
26.1.2.1 Activación del Receptor personaje de la RSR se transfiere a la EUSART FIFO de recepción y se

El receptor EUSART está habilitado para funcionamiento asíncrono mediante la establece el bit bandera RCIF interrupción del registro PIR1. El carácter superior

configuración de los tres bits de control siguientes: en el FIFO se transfiere de la FIFO mediante la lectura del registro RCREG.

• CREN = 1
• SINC = 0
• SPEN = 1

Todos los otros bits de control EUSART se asumen para estar en su estado por
defecto.

El establecimiento del bit CREN del registro RCSTA permite a la circuitería Nota: Si está invadido la FIFO de recepción, no se recibirán
del receptor de la EUSART. Despejar el bit SYNC del registro TXSTA caracteres adicionales hasta que la condición de
configura el EUSART para la operación asincrónica. El establecimiento del desbordamiento. Ver Sección 27.1.2.5 “Recibe error de
bit SPEN del registro RCSTA permite al EUSART. El programador tiene desbordamiento” Para más información sobre errores de
que establecer el correspondiente bit TRIS para configurar el RX / pin DT I / saturación.
O como una entrada.
26.1.2.3 recibir interrupciones El bit indicador RCIF interrupción del registro
PIR1 se establece cada vez que se activa el receptor EUSART y hay un
Nota 1: Si la función RX / DT está en un pin analógico,
carácter no leído de la FIFO de recepción. , Que no puede ser activa o se
el bit correspondiente ANSEL debe ser despejado
desactiva por el software del bit indicador RCIF interrupción es de sólo
para el receptor de funcionar.
lectura.

Rcif interrupciones están habilitadas de configurar todos los siguientes bits:

• RCIE habilitación de interrupción bit del registro PIE1


• PEIE periférica habilitación de interrupción bit del registro
INTCON

• GIE Global Interrupt Enable bit del registro INTCON

El bit de bandera RCIF interrupción se establece cuando hay un carácter no


leído de la FIFO, sin importar el estado de habilitación de interrupción bits.

DS41440A páginas 304 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

26.1.2.4 Recibir error de trama 26.1.2.7 Dirección de detección A modo de función especial de detección de
direcciones está disponible para su uso cuando hay varios receptores comparten
Cada carácter en el búfer FIFO de recepción tiene un bit de estado de
error encuadre correspondiente. Un error de trama indica que un bit de la misma línea de transmisión, tales como en los sistemas RS-485. detección de

parada no se observó en el momento esperado. El estado de error de direcciones se habilita estableciendo el bit Adden del registro RCSTA.

trama que se accede a través del bit FERR del registro RCSTA. El bit
FERR representa el estado del personaje sin leer superior en el FIFO
de recepción. Por lo tanto, el bit FERR se debe leer antes de leer el
detección de direcciones requiere la recepción de caracteres de 9 bits. Cuando
RCREG.
se habilita la detección de direcciones, sólo los caracteres con el noveno bit de
datos serán transferidos a la memoria intermedia FIFO de recepción,
El bit FERR es de sólo lectura y sólo se aplica al personaje sin leer estableciendo así el bit RCIF interrupción. Se ignorarán todos los demás
superior en el FIFO de recepción. Un error de trama (FERR = 1) no caracteres. Al recibir un carácter de dirección, el software de usuario determina
impide la recepción de caracteres adicionales. No es necesario borrar si la dirección coincide con su propia. Tras la coincidencia de dirección, el
el bit FERR. Al leer el siguiente carácter de la memoria intermedia software de usuario debe desactivar la detección de direcciones en la limpieza
FIFO avanzará el FIFO al siguiente carácter y el siguiente error de de la broca Adden antes de que ocurra el siguiente bit de parada. Cuando el
trama correspondiente. software de usuario detecta el final del mensaje, determinado por el protocolo de
mensajes utilizado, software coloca el receptor de nuevo en el modo de
El bit FERR puede ser forzado claro en la limpieza de la broca SPEN detección de direcciones activando el bit Adden.
del registro RCSTA que restablece el EUSART. Despejar el bit
CREN del registro RCSTA no afecta el bit FERR. Un error de trama
por sí mismo no genera una interrupción.

Nota: Si todos reciben caracteres en la FIFO recibir tener


errores de encuadre, repetidas lecturas del RCREG no
se borrará el bit FERR.

26.1.2.5 recibir el error de desbordamiento

El búfer de recepción FIFO puede contener dos caracteres. se generará un


error de desbordamiento si un tercer personaje, en su totalidad, se recibe
antes de que se acceda al FIFO. Cuando esto sucede, se establece el bit
OERR del registro RCSTA. Los personajes que ya están en la memoria
intermedia FIFO se pueden leer pero no se recibirán caracteres
adicionales hasta que se elimine el error. El error debe restablecerse
usando despejar el bit CREN del registro RCSTA o restableciendo el
EUSART desactivando el bit SPEN del registro RCSTA.

26.1.2.6 Recepción de caracteres de 9 bits El EUSART admite la recepción


de caracteres de 9 bits. Cuando se establece el bit RX9 del registro RCSTA
la EUSART se desplazará 9 bits en el RSR para cada carácter recibido. El
bit RX9D del registro RCSTA es el noveno y el bit más significativo de
datos del personaje sin leer superior en el FIFO de recepción. Cuando la
lectura de datos de 9 bits de la memoria intermedia FIFO de recepción, el
bit de datos RX9D debe leerse antes de la lectura de los 8 bits menos
significativos de la RCREG.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 305


PIC16F / LF1825 / 1829

26.1.2.8 recepción asíncrona Set-up: 26.1.2.9 9 bits Dirección de detección de modo de configuración

1. Inicializar el par de registro SPBRGH, SPBRGL y los bits BRGH y Este modo normalmente se utiliza en los sistemas RS-485. Para configurar una
BRG16 para lograr la tasa de transmisión deseada (ver Sección recepción síncrona con una Dirección de detección de Habilitación:
27.3 “EUSART Velocidad de transmisión del generador (BRG)”).

1. Inicializar el par de registro SPBRGH, SPBRGL y los bits BRGH y


2. Borrar el bit ANSEL para el pin RX (si es aplicable). BRG16 para lograr la tasa de transmisión deseada (ver Sección
3. Activar el puerto serie al establecer el bit SPEN. El bit SYNC 27.3 “EUSART Velocidad de transmisión del generador (BRG)”).
debe ser clara para la operación asincrónica.
2. Borrar el bit ANSEL para el pin RX (si es aplicable).
4. Si se desean interrupciones, establecer el bit RCIE del 3. Activar el puerto serie al establecer el bit SPEN. El bit SYNC
PIE1 registro y los bits GIE y PEIE del registro INTCON. debe ser clara para la operación asincrónica.

5. Si se desea la recepción de 9 bits, establecer el bit RX9. 4. Si se desean interrupciones, establecer el bit RCIE del
6. Habilitar la recepción activando el bit CREN. PIE1 registro y los bits GIE y PEIE del registro INTCON.
7. El bit de bandera de interrupción RCIF se establecerá cuando un personaje se
transfiere desde la RSR a la memoria intermedia de recepción. Una 5. Habilitar la recepción de 9 bits estableciendo el bit RX9.
interrupción se generará si el RCIE habilitación de interrupción también se 6. Activar la detección de direcciones activando el bit Adden.
estableció poco.

8. Lea el registro RCSTA para obtener los indicadores de error y, si está habilitada 7. Habilitar la recepción activando el bit CREN.
la recepción de datos de 9 bits, el noveno bit de datos.
8. Se ajustará la interrupción bit de bandera RCIF cuando un personaje con el
bit noveno se transfiere desde la RSR a la memoria intermedia de
9. Obtener los 8 bits de datos menos significativo recibidas a través del recepción. Una interrupción se generará si el RCIE habilitación de
buffer mediante la lectura del registro RCREG. interrupción también se estableció poco.

10. Si se ha producido un rebasamiento, borrar el indicador OERR despejando el 9. Lea el registro RCSTA para obtener los indicadores de error. se ajustará
receptor CREN bit de habilitación. siempre en el noveno bit de datos.

10. Obtener los 8 bits de datos menos significativo recibidas a través


del buffer mediante la lectura del registro RCREG. Software
determina si esta es la dirección del dispositivo.

11. Si se ha producido un rebasamiento, borrar el indicador OERR desactivando el


receptor CREN bit de habilitación.

12. Si el dispositivo se ha abordado, borrar el bit Adden para permitir


que todos los datos recibidos en el búfer de entrada y generar
interrupciones.

FIGURA 26-5: RECEPCIÓN ASÍNCRONO

bit de bit de comienzo


pin RX / DT inicio bit 0 bit 1 7/8 bits bit de inicio bit 0 7/8 bits de parada poco 7/8 bits bit de

parada poco parada

VN
Reg
Rcv Buffer Reg. Shift
Palabra 1 Palabra 2
RCREG RCREG

Leer recep

Buffer Reg.

RCREG RCIF

(rebasamiento)
(Indicador de interrupción) bit a activar. RCIDL

CREN poco

OERR

Nota: Este diagrama de temporización que muestra tres palabras que aparecen en la entrada RX. El RCREG (búfer de recepción) se lee después de la tercera palabra, haciendo que el OERR

DS41440A páginas 306 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

TABLA 26-2: RESUMEN DE registros asociados con recepción ASÍNCRONO

inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página

APFCON0 RXDTSEL SDOSEL ( 2) SSSEL ( 2) - T1GSEL TXCKSEL - - 125

BAUDCON ABDOVF RCIDL - SCKP BRG16 - EUA Abden 310

INLVLA ( 3) - - INLVLA5 INLVLA4 INLVLA3 INLVLA2 INLVLA1 INLVLA0 131

INLVLB ( 1) INLVLB7 INLVLB6 INLVLB5 INLVLB4 - - - - 136

INLVLC INLVLC7 ( 1) INLVLC6 ( 1) INLVLC5 INLVLC4 INLVLC3 INLVLC2 INLVLC1 INLVLC0 142

INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 93

PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94

PIR1 TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF 98

RCREG Recibir EUSART Registro de Datos 304 *

RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309

SPBRGL BRG <7: 0> 311 *

SPBRGH BRG <15: 8> 311 *

TRISA - - TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 129

TRISB ( 1) TRISB7 TRISB6 TRISB5 TRISB4 - - - - 135

TRISC TRISC7 ( 1) TRISC6 ( 1) TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 140

TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308

Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la recepción asíncrona.
* Página proporciona información de registro.

Nota 1: PIC16F / LF1829 solamente.

2: PIC16F / LF1825 solamente.

3: Las células no sombreadas se aplican a PIC16F / LF1825 única.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 307


PIC16F / LF1825 / 1829

La exactitud del reloj con 26,2 Operación El primer método (preferido) utiliza el registro OSCTUNE para

asíncrona ajustar la salida INTOSC. El ajuste del valor en el registro


OSCTUNE permite cambios de resolución fina a la fuente de reloj
La fábrica calibra el bloque oscilador interno OUT- puesto (INTOSC). Sin embargo, del sistema. Ver Sección 6.2.2 “Fuentes de reloj interno” para más
la frecuencia INTOSC puede desviarse como V DD o los cambios de temperatura, y
información. El otro método ajusta el valor de la Tasa generador de
esto afecta directamente a la velocidad de transmisión asíncrono. Dos métodos se
baudios. Esto se puede hacer automáticamente con el Auto-Detect
pueden utilizar para ajustar el reloj de velocidad de transmisión, pero ambos
Baud
requieren de una fuente de reloj de referencia de algún tipo.
función (consulte sección 27.3.1
“Auto-Baud Detect”). Puede que no haya una resolución lo suficientemente
bien cuando el ajuste de la tasa de baudios del generador para compensar un
cambio gradual en la frecuencia de reloj periférico.

REGISTRO 26-1: TXSTA: ESTADO DE TRANSMISIÓN Y REGISTRO DE CONTROL

R / W- / 0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R-1/1 R / W-0/0

CSRC TX9 TXEN ( 1) SINC SENDB BRGH TRMT TX9D

7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece

'1' = Bit se establece '0' = Bit se borra

7 bits CSRC: Reloj de selección de fuente bits

modo asíncrono : No me
importa
El modo síncrono :
1 = Modo maestro (reloj generado internamente desde BRG)
0 = Modo esclavo (reloj de una fuente externa)

6 bits TX9: 9 bits de transmisión Enable bit

1 = Selecciona transmisión 9 bits


0 = Selecciona transmisión de 8 bits

5 bits TXEN: Habilitación de transmisión de bits ( 1)

1 = Transmitir habilitado
0 = transmitir discapacitados

4 bits SYNC: Modo EUSART Seleccionar bits

1 = El modo síncrono
0 = modo asíncrono

3 bits SENDB: Enviar vacaciones de bits de caracteres

modo asíncrono :
1 = Enviar sincronización en salto en la próxima transmisión (aprobado por el hardware al finalizar)
0 = la transmisión de sincronización rotura completado

El modo síncrono : No me
importa

bit 2 BRGH: Alta Velocidad de transmisión Seleccione bits

modo asíncrono :
1 = Alta velocidad
0 = Baja velocidad

El modo síncrono:
Sin utilizar en este modo

bit 1 TRMT: Transmitir Registro de Desplazamiento Bit de estado

1 = TSR vacía
0 = TSR completa

bit 0 TX9D: Noveno bit de transmisión de datos puede ser la dirección /

bit de datos o un bit de paridad.

Nota 1: SREN / CREN anula TXEN en el modo de sincronización.

DS41440A páginas 308 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

REGISTRARSE 26-2: RCSTA: RECIBIR LA SITUACIÓN Y REGISTRO DE CONTROL ( 1)

R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R / W-0/0 R-0/0 R-0/0 Rx / x

SPEN RX9 SREN CREN Adden FERR OERR RX9D


7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra

7 bits SPEN: Serial Activar puerto bits

1 = puerto serie activada (configura RX / DT y TX / CK pines como pines del puerto serie)
0 = puerto serie desactivado (celebrada en Restablecer)

6 bits RX9: 9 bits Recibir Enable bit


1 = Selecciona la recepción de 9 bits

0 = Selecciona la recepción de 8 bits

5 bits SREN: Única de recepción permiten bits

modo asíncrono : No me
importa
El modo síncrono - Maestro :
1 = Permite recibir sola
0 = Desactiva la única recibir
Este bit se borra después de finalizada la recepción.
El modo síncrono - Esclavo
No importa

4 bits CREN: Continua de recepción permiten bits

modo asíncrono :
1 = Permite receptor
0 = Desactiva el receptor
El modo síncrono :
1 = Permite continua reciba hasta bit de habilitación CREN se borra (CREN anula SREN)
0 = Desactiva recibir continua
3 bits Adden: Dirección Detectar Enable bit
Asíncrono modo de 9 bits (= RX9 1) :
1 = Permite la detección de direcciones, habilitar interrupción y cargar el búfer de recepción cuando <8> se establece RSR
0 = Desactiva la detección de direcciones, todos los bytes son recibidos y noveno bit se pueden utilizar como bit de paridad

Asíncrono modo de 8 bits (= RX9 0) : No me

importa

bit 2 FERR: Bit de error encuadre

1 = error de trama (puede ser actualizado mediante la lectura de RCREG registrarse y recibir siguiente byte válido)
0 = No hay error de trama

bit 1 OERR: Bit de error de desbordamiento

1 = error de desbordamiento (se puede borrar por bit despejar CREN)


0 = No hay error de desbordamiento

bit 0 RX9D: Noveno bit de datos recibidos


Esto puede ser la dirección / bit de datos o un bit de paridad y debe ser calculado por el firmware de usuario.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 309


PIC16F / LF1825 / 1829

REGISTRO 26-3: BAUDCON: VELOCIDAD DE TRANSMISIÓN DE CONTROL DE REGISTRO

R-0/0 R-1/1 T-0 R / W-0/0 R / W-0/0 T-0 R / W-0/0 R / W-0/0

ABDOVF RCIDL - SCKP BRG16 - EUA Abden


7 bits bit 0

Leyenda:

R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'

u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra

7 bits ABDOVF: Auto-Baud Detectar bit de desbordamiento

modo asíncrono :
1 = temporizador automático se desbordó en baudios

0 = temporizador automático de transmisión no se desborde

El modo síncrono : No me
importa

6 bits RCIDL: Recibe poco Bandera de inactividad

modo asíncrono :
1 = El receptor está inactivo

0 = Bit de inicio ha sido recibido y el receptor está recibiendo


El modo síncrono : No me
importa

5 bits sin aplicarse: Leído como ' 0 '


4 bits SCKP: Isócronas Polaridad Seleccione bits
modo asíncrono :
1 = Transmitir datos invertidos a la patilla TX / CK
0 = Transmitir datos no invertida a la clavija de TX / CK

El modo síncrono :
1 = Los datos se registró en el flanco ascendente del reloj
0 = Los datos se registró en el flanco descendente del reloj

3 bits BRG16: bit Velocidad de transmisión Generador de 16 bits

1 = Velocidad de transmisión Generador de 16 bits se usa

0 = Velocidad de transmisión Generador de 8 bits se utiliza

bit 2 sin aplicarse: Leído como ' 0 '


bit 1 EUA: Despertador bit de habilitación

modo asíncrono :
1 = El receptor está esperando a un flanco de bajada. Ningún personaje será recibida, se establecerá RCIF bytes. EUA
se borrará automáticamente después de RCIF se establece.

0 = El receptor está funcionando normalmente

El modo síncrono : No me

importa

bit 0 Abden: Auto-Detect baudios Enable bit


modo asíncrono :
1 = Auto-Detect baudios modo está activado (se aclara cuando se auto-baudios es completa)
0 = Auto-Baud modo de detección está desactivada

El modo síncrono : No me
importa

DS41440A páginas 310 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

26.3 EUSART Velocidad de transmisión del generador (BRG) Ejemplo 26-1: CALCULAR BAUDIO
Error Rate

Para un dispositivo con F OSC de 16 MHz, la velocidad de transmisión deseada de


La Tasa generador de baudios (BRG) es un temporizador de 8 bits o
9600, el modo asíncrono, de 8 bits BRG:
de 16 bits que se dedica al apoyo tanto de la operación asíncrona y
síncrona EUSART. Por defecto, el BRG opera en modo de 8 bits. El F OSC
Velocidad de transmisión deseada = ------------------------------------------------------------------------
64 [SPBRGH:
• SPBRGL] 1 + •
establecimiento del bit del registro BRG16 BAUDCON selecciona el
modo de 16 bits.
Resolviendo para SPBRGH: SPBRGL:

F OSC deseado
El par de registro SPBRGH, SPBRGL determina el período de ---------------------------------------------
Velocidad de transmisión
X = --------------------------------------------- 1-
el temporizador de velocidad de transmisión de marcha libre. En 64
Modo asíncrono el multiplicador del período de velocidad de transmisión se
16000000
determina por tanto el bit BRGH de la TXSTA registrarse y el bit BRG16 del ------------------------
9600
= ------------------------ 1-
registro BAUDCON. En el modo síncrono, se ignora el bit BRGH. Tabla 27-3 64
contiene las fórmulas para determinar la velocidad de transmisión. Ejemplo
= • 25.042 • = 25
27-1 proporciona un ejemplo de cálculo para la determinación de la velocidad
de transmisión y el error velocidad de transmisión. velocidades de 16000000 64
Calculado velocidad en baudios = ---------------------------
transmisión típicas y los valores de error para varios modos asíncronos se 25 1• + •

han computado para su conveniencia y se muestra en la Tabla 27-3. Puede


9615 =
ser ventajoso el uso de la alta tasa de baudios (BRGH = 1),
- Velocidad de transmisión deseado
Calc. Velocidad de transmisión
Error = --------------------------------------------------------------------------------------------
Velocidad de transmisión deseada

o la BRG de 16 bits (= BRG16 1) para reducir el error de velocidad de transmisión. El


• 9615 9600 - •
modo de BRG de 16 bits se usa para lograr velocidades de transmisión lenta para = ---------------------------------- = 0,16%
9600
frecuencias de oscilador rápidos. Escribir un nuevo valor a la SPBRGH, SPBRGL par de

registro hace que el temporizador BRG a un reset (o despejado). Esto asegura que el

BRG no espera a un desbordamiento de temporizador antes de dar salida a la nueva

velocidad de transmisión.

Si se cambia el reloj del sistema durante una operación de recepción activa, una
pérdida de error o de recepción de datos puede resultar. Para evitar este problema,
compruebe el estado del bit RCIDL para asegurarse de que la operación de
recepción está inactivo antes de cambiar el reloj del sistema.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 311


PIC16F / LF1825 / 1829

TABLA 26-3: BAUD fórmulas tarifarias

Los bits de configuración


BRG / Modo EUSART Velocidad de transmisión Fórmula
SINC BRG16 BRGH

0 0 0 8-bit / asíncrono F OSC / [64 (n + 1)]

0 0 1 8-bit / asíncrono
F OSC / [16 (n + 1)]
0 1 0 16-bit / asíncrono

0 1 1 16-bit / asíncrono

1 0 X 8-bit / Synchronous F OSC / [4 (n + 1)]

1 1 X 16-bit / Synchronous

Leyenda: x = No importa, n = valor de SPBRGH, SPBRGL par de registros.

TABLA 26-4: RESUMEN DE registros asociados CON LA VELOCIDAD DEL GENERADOR

Registrarse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
la página

BAUDCON ABDOVF RCIDL - SCKP BRG16 - EUA Abden 310


RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309
SPBRGL BRG <7: 0> 311 *

SPBRGH BRG <15: 8> 311 *

TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308
Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la Tasa generador de baudios.

* Página proporciona información de registro.

DS41440A páginas 312 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

TABLA 26-5: Velocidad de transmisión para los modos ASÍNCRONOS

SINC = 0, BRGH = 0, BRG16 = 0

F = OSC 32.000 MHz F = OSC 20.000 MHz F = OSC 18.432 MHz F = OSC 11,0592 MHz
VELOCIDAD

DE TRANSMISIÓN valor valor valor valor


La velocidad Error% La velocidad Error% La velocidad Error% La velocidad Error%
SPBRG SPBRG SPBRG SPBRG
real real real real
(decimal) (decimal) (decimal) (decimal)

300 - - - - - - - - - - - -

1200 - - - 1221 1.73 255 1200 0.00 239 1200 0.00 143

2400 2404 0.16 207 2404 0.16 129 2400 0.00 119 2400 0.00 71

9600 9615 0.16 51 9470 - 1.36 32 9600 0.00 29 9600 0.00 17

10417 10417 0.00 47 10417 0.00 29 10286 - 1.26 27 10165 - 2.42 dieciséis

19,2 k 19.23k 0.16 25 19.53k 1.73 15 19.20k 0.00 14 19.20k 0.00 8

57.6k 55.55k - 3.55 3 - - - 57.60k 0.00 7 57.60k 0.00 2

115.2 K - - - - - - - - - - - -

SINC = 0, BRGH = 0, BRG16 = 0

F = OSC 8.000 MHz F = OSC 4.000 MHz F = OSC 3,6864 MHz F = OSC 1.000 MHz
VELOCIDAD

DE TRANSMISIÓN valor valor valor valor


La velocidad Error% La velocidad Error% La velocidad Error% La velocidad Error%
SPBRG SPBRG SPBRG SPBRG
real real real real
(decimal) (decimal) (decimal) (decimal)

300 - - - 300 0.16 207 300 0.00 191 300 0.16 51

1200 1202 0.16 103 1202 0.16 51 1200 0.00 47 1202 0.16 12

2400 2404 0.16 51 2404 0.16 25 2400 0.00 23 - - -

9600 9615 0.16 12 - - - 9600 0.00 5 - - -

10417 10417 0.00 11 10417 0.00 5 - - - - - -

19,2 k - - - - - - 19.20k 0.00 2 - - -

57.6k - - - - - - 57.60k 0.00 0 - - -

115.2 K - - - - - - - - - - - -

SINC = 0, BRGH = 1, BRG16 = 0

F = OSC 32.000 MHz F = OSC 20.000 MHz F = OSC 18.432 MHz F = OSC 11,0592 MHz
VELOCIDAD

DE TRANSMISIÓN valor valor valor valor


La velocidad Error% La velocidad Error% La velocidad Error% La velocidad Error%
SPBRG SPBRG SPBRG SPBRG
real real real real
(decimal) (decimal) (decimal) (decimal)

300 - - - - - - - - - - - -

1200 - - - - - - - - - - - -

2400 - - - - - - - - - - - -

9600 9615 0.16 207 9615 0.16 129 9600 0.00 119 9600 0.00 71

10417 10417 0.00 191 10417 0.00 119 10378 - 0.37 110 10473 0.53 sesenta y cinco

19,2 k 19.23k 0.16 103 19.23k 0.16 64 19.20k 0.00 59 19.20k 0.00 35

57.6k 57.14k - 0.79 34 56.82k - 1.36 21 57.60k 0.00 19 57.60k 0.00 11

115.2K 117.64k 2,12 dieciséis 113.64k - 1.36 10 115.2 K 0.00 9 115.2 K 0.00 5

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 313


PIC16F / LF1825 / 1829

MESA 26-5: Velocidades de transferencia asíncrono MODOS (CONTINUACIÓN)

SINC = 0, BRGH = 1, BRG16 = 0

F = OSC 8.000 MHz F = OSC 4.000 MHz F = OSC 3,6864 MHz F = OSC 1.000 MHz
VELOCIDAD

DE TRANSMISIÓN valor valor valor valor


La velocidad Error% La velocidad Error% La velocidad Error% La velocidad Error%
SPBRG SPBRG SPBRG SPBRG
real real real real
(decimal) (decimal) (decimal) (decimal)

300 - - - - - - - - - 300 0.16 207

1200 - - - 1202 0.16 207 1200 0.00 191 1202 0.16 51

2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25

9600 9615 0.16 51 9615 0.16 25 9600 0.00 23 - - -

10417 10417 0.00 47 10417 0.00 23 10473 0.53 21 10417 0.00 5

19,2 k 19231 0.16 25 19.23k 0.16 12 19,2 k 0.00 11 - - -

57.6k 55556 - 3.55 8 - - - 57.60k 0.00 3 - - -

115.2 K - - - - - - 115.2 K 0.00 1 - - -

SINC = 0, BRGH = 0, BRG16 = 1

F = OSC 32.000 MHz F = OSC 20.000 MHz F = OSC 18.432 MHz F = OSC 11,0592 MHz
VELOCIDAD

DE TRANSMISIÓN valor valor valor valor


La velocidad Error% La velocidad Error% La velocidad Error% La velocidad Error%
SPBRG SPBRG SPBRG SPBRG
real real real real
(decimal) (decimal) (decimal) (decimal)

300 300,0 0.00 6666 300,0 - 0,01 4,166 300,0 0.00 3839 300,0 0.00 2303

1200 1200 - 0.02 3332 1200 - 0.03 1041 1200 0.00 959 1200 0.00 575

2400 2401 - 0.04 832 2399 - 0.03 520 2400 0.00 479 2400 0.00 287

9600 9615 0.16 207 9615 0.16 129 9600 0.00 119 9600 0.00 71

10417 10417 0.00 191 10417 0.00 119 10378 - 0.37 110 10473 0.53 sesenta y cinco

19,2 k 19.23k 0.16 103 19.23k 0.16 64 19.20k 0.00 59 19.20k 0.00 35

57.6k 57.14k - 0.79 34 56.818 - 1.36 21 57.60k 0.00 19 57.60k 0.00 11

115.2 K 117.6k 2.12 dieciséis 113.636 - 1.36 10 115.2 K 0.00 9 115.2 K 0.00 5

SINC = 0, BRGH = 0, BRG16 = 1

F = OSC 8.000 MHz F = OSC 4.000 MHz F = OSC 3,6864 MHz F = OSC 1.000 MHz
VELOCIDAD

DE TRANSMISIÓN valor valor valor valor


La velocidad Error% La velocidad Error% La velocidad Error% La velocidad Error%
SPBRG SPBRG SPBRG SPBRG
real real real real
(decimal) (decimal) (decimal) (decimal)

300 299,9 - 0.02 1666 300.1 0.04 832 300,0 0.00 767 300,5 0.16 207

1200 1199 - 0.08 416 1202 0.16 207 1200 0.00 191 1202 0.16 51

2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25

9600 9615 0.16 51 9615 0.16 25 9600 0.00 23 - - -

10417 10417 0.00 47 10417 0.00 23 10473 0.53 21 10417 0.00 5

19,2 k 19.23k 0.16 25 19.23k 0.16 12 19.20k 0.00 11 - - -

57.6k 55556 - 3.55 8 - - - 57.60k 0.00 3 - - -

115.2 K - - - - - - 115.2 K 0.00 1 - - -

DS41440A páginas 314 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

MESA 26-5: Velocidades de transferencia asíncrono MODOS (CONTINUACIÓN)

SINC = 0, BRGH = 1, BRG16 = 1 o SYNC = 1, BRG16 = 1

F = OSC 32.000 MHz F = OSC 20.000 MHz F = OSC 18.432 MHz F = OSC 11,0592 MHz
VELOCIDAD

DE TRANSMISIÓN valor valor valor valor


La velocidad Error% La velocidad Error% La velocidad Error% La velocidad Error%
SPBRG SPBRG SPBRG SPBRG
real real real real
(decimal) (decimal) (decimal) (decimal)

300 300,0 0.00 26666 300,0 0.00 16665 300,0 0.00 15359 300,0 0.00 9215

1200 1200 0.00 6666 1200 - 0,01 4,166 1200 0.00 3839 1200 0.00 2303

2400 2400 0,01 3,332 2400 0.02 2082 2400 0.00 1919 2400 0.00 1151

9600 9604 0.04 832 9597 - 0.03 520 9600 0.00 479 9600 0.00 287

10417 10417 0.00 767 10417 0.00 479 10425 0.08 441 10433 0.16 264

19,2 k 19.18k - 0.08 416 19.23k 0.16 259 19.20k 0.00 239 19.20k 0.00 143

57.6k 57.55k - 0.08 138 57.47k - 0.22 86 57.60k 0.00 79 57.60k 0.00 47

115.2 K 115.9k 0.64 68 116.3k 0.94 42 115.2 K 0.00 39 115.2 K 0.00 23

SINC = 0, BRGH = 1, BRG16 = 1 o SYNC = 1, BRG16 = 1

F = OSC 8.000 MHz F = OSC 4.000 MHz F = OSC 3,6864 MHz F = OSC 1.000 MHz
VELOCIDAD

DE TRANSMISIÓN valor valor valor valor


La velocidad Error% La velocidad Error% La velocidad Error% La velocidad Error%
SPBRG SPBRG SPBRG SPBRG
real real real real
(decimal) (decimal) (decimal) (decimal)

300 300,0 0.00 6666 300,0 0,01 3,332 300,0 0.00 3071 300.1 0.04 832

1200 1200 - 0.02 1666 1200 0.04 832 1200 0.00 767 1202 0.16 207

2400 2401 0.04 832 2398 0.08 416 2400 0.00 383 2404 0.16 103

9600 9615 0.16 207 9615 0.16 103 9600 0.00 95 9615 0.16 25

10417 10417 0 191 10417 0.00 95 10473 0.53 87 10417 0.00 23

19,2 k 19.23k 0.16 103 19.23k 0.16 51 19.20k 0.00 47 19.23k 0.16 12

57.6k 57.14k - 0.79 34 58.82k 2.12 dieciséis 57.60k 0.00 15 - - -

115.2 K 117.6k 2.12 dieciséis 111.1k - 3.55 8 115.2 K 0.00 7 - - -

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 315


PIC16F / LF1825 / 1829

26.3.1 UN UTO-BAUDIO DETECTAR y registros SPBRGL son temporizados en 1 / octava la tasa de reloj de base
BRG. La medición byte resultante es el promedio de tiempo poco cuando
El módulo EUSART admite la detección y calibración de la velocidad de
corre a toda velocidad.
transmisión automática.
Nota 1: Si el bit de la EUA se establece con el bit Abden,
En el modo Auto-Detect baudios (ABD), el reloj a la BRG se invierte. En lugar
la detección automática de baudios se producirá en el byte
de la BRG registrando la señal RX de entrada, la señal RX es el tiempo del
siguiendo el carácter de salto (ver
BRG. La tasa de baudios del generador se utiliza para el período de tiempo
Sección 27.3.3 “Auto-despertador en Break”). 2: Corresponde
de un 55h recibida (ASCII “T”) que es el carácter de sincronización para el
al usuario determinar que la
bus LIN. La característica única de este personaje es que tiene cinco flancos
de subida incluyendo el borde Bit de parada. Ajuste del bit Abden del registro
BAUDCON comienza la secuencia de calibración automática de baudios velocidad de transmisión de caracteres de entrada está dentro del

(figura 27-6). Aunque la secuencia ABD tiene lugar, la máquina de estado rango de la fuente de reloj BRG seleccionado. Algunas

EUSART se mantiene en ralentí. En el primer flanco ascendente de la línea combinaciones de frecuencia del oscilador y velocidades de

de recepción, después de que el bit de inicio, el SPBRG comienza a contar transmisión EUSART no son posibles.

usando el reloj contador de BRG, como se muestra en la Tabla 27-6. El 3: Durante el proceso de auto-baudios, el
quinto flanco de subida se producirá en el pin RX al final del periodo de bit contrario auto-baudios empieza a contar a 1. Una
octavo. En ese tiempo, un valor acumulado total del período de BRG vez finalizado la auto-baudios
adecuado se deja en el par de registro SPBRGH, SPBRGL, el bit Abden se secuencia, para lograr la máxima precisión, restar
borra automáticamente y la bandera RCIF de interrupción se establece. El 1 del SPBRGH: par de registro SPBRGL.
valor en el RCREG necesita ser leído para borrar la interrupción RCIF.
RCREG contenido debe ser desechada. Cuando se calibra para los modos
que no utilizan el SPBRGH registrar el usuario puede verificar que el registro TABLA 26-6: BRG contador de reloj TARIFAS
SPBRGL no lo hizo desbordamiento mediante la comprobación de 00h en el
BRG ABD
registro SPBRGH. BRG16 BRGH Base BRG
Reloj Reloj

0 0 F OSC / 64 F OSC / 512

0 1 F OSC / dieciséis F OSC / 128

1 0 F OSC / dieciséis F OSC / 128


El reloj auto-baudios BRG está determinada por los bits BRG16 y BRGH como
se muestra en la Tabla 27-6. Durante ABD, tanto el SPBRGH y registros 1 1 F OSC / 4 F OSC / 32
SPBRGL se utilizan como un contador de 16 bits, independiente de la Nota: Durante la secuencia de ABD, SPBRGL y SPBRGH registros
configuración de bits BRG16. Al calibrar el período de velocidad de son utilizados como un contador de 16 bits,
transmisión, la SPBRGH independientemente del ajuste BRG16.

FIGURA 26-6: La calibración automática VELOCIDAD

BRG Valor XXXXh 0000h 001Ch

N°1 Edge # 2 Edge # 3 Edge # 4 Edge # 5

pin RX comienzo bit 0 bit 1 bit 2 3 bits 4 bits 5 bits 6 bits 7 bits Bit de parada

BRG

Establecido por usuario Borrado automático

poco Abden

RCIDL
Reloj RCREG

poco RCIF
(Interrumpir)

Leer

XXh 1 canal

SPBRGH XXh 00h

Nota 1: La secuencia ABD requiere la EUSART módulo para ser configurado en modo asíncrono. SPBRGL

DS41440A páginas 316 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

26.3.2 AUTO-BAUDIO derramarse durante el curso de la 26.3.3.1 Consideraciones especiales


detección automática de baudios, el bit del registro ABDOVF BAUDCON se
carácter de salto
establecerá si el contador de velocidad en baudios se desborda antes de
Para evitar errores de caracteres o fragmentos de caracteres durante un evento de
detectar el quinto flanco ascendente en el pin RX. El bit ABDOVF indica
reactivación, el carácter de atención debe ser todo ceros.
que el contador ha superado el número máximo de que puede caber en los
16 bits de la SPBRGH: par de registro SPBRGL. Después de la ABDOVF
se ha establecido, los tinues con- contador para contar hasta que se Cuando se activa el despertador trabaja la función independiente del tiempo
detecte el quinto flanco ascendente en el pin RX. Al detectar el quinto borde de baja en el flujo de datos. Si el bit de la EUA se establece y se recibe un
RX, el hard- ware establecerá el indicador de interrupción RCIF y borrar el carácter válido distinto de cero, el bajo tiempo desde el bit de inicio para el
bit del registro Abden BAUDCON. La bandera RCIF se puede eliminar primer flanco de subida será interpretado como el evento de despertador.
posteriormente mediante la lectura del registro RCREG. La bandera Los bits restantes en el carácter serán recibidos como un carácter
ABDOVF del registro BAUDCON se puede borrar software directamente. fragmentado y los caracteres subsiguientes pueden resultar en framing o
errores de saturación. Por lo tanto, el carácter inicial de la transmisión debe
ser todo ' 0 'S. Esta debe ser de 10 bits o más veces, los tiempos de 13 bits
recomendadas para el bus LIN, o cualquier número de veces bits para
dispositivos RS-232 estándar.
Para terminar el proceso de auto-baudios antes de que se establece el indicador
RCIF, desactive el bit Abden continuación, desactive el bit del registro ABDOVF
BAUDCON. El bit ABDOVF permanecerá establecido si el bit Abden no se borra en
primer lugar. Oscilador de tiempo de arranque

Oscilador de tiempo de puesta en marcha debe ser considerado, especialmente en


26.3.3 AUTO-Activación mediante rotura durante el modo de
aplicaciones que utilizan osciladores con intervalos más largos de puesta en marcha
suspensión, se suspenden todos los relojes a la EUSART. Debido a esto, la
(es decir, LP, XT o el modo HS / PLL). El carácter de sincronización Break (o señal de
tasa de baudios del generador está inactivo y una recepción carácter propio no
reactivación) debe tener una longitud suficiente y ser seguido por un intervalo
se puede realizar. La función Auto-despertador permite al controlador para
suficiente, para que haya tiempo suficiente para que el oscilador seleccionado para
despertarse debido a la actividad en la línea RX / DT. Esta función sólo está
iniciar y proporcionar inicialización adecuada de la EUSART.
disponible en modo asíncrono. La función Auto-despertador se habilita
estableciendo el bit de EUA del registro BAUDCON. Una vez establecido, la
Bit EUA
secuencia normal de recibir el RX / DT se desactiva y el EUSART permanece
en un estado inactivo, el seguimiento de un despertador evento independiente La eventos de encendido provoca una interrupción de recepción activando el bit

del modo de la CPU. Un evento de despertador consiste en una transición de RCIF. El bit de EUA se borra en el hardware por un flanco ascendente en RX / DT.

alto-a-bajo en la línea RX / DT. (Esto coincide con el inicio de una interrupción La condición de interrupción se elimina entonces en el software mediante la lectura

de sincronización o un personaje de la señal de atención para el protocolo del registro RCREG y desechar su contenido. Para asegurar que ningún dato real

LIN.) El módulo EUSART genera una interrupción coincidente RCIF con el se pierde, se comprueba el bit RCIDL para verificar que una operación de recepción
no se encuentra en proceso antes de establecer el bit de EUA. Si una operación de
evento de despertador. La interrupción se genera de forma sincrónica con los
recepción no está ocurriendo, el bit de EUA entonces se puede establecer justo
relojes Q en modos de funcionamiento de la CPU normal (Figura 27-7), y de
antes de entrar en el modo de suspensión.
forma asíncrona si el dispositivo está en el modo de suspensión (Figura 27-8).
La condición de interrupción se elimina mediante la lectura del registro
RCREG. El bit de EUA se borra automáticamente por el de baja a alta
transición en la línea RX al final de las vacaciones. Esto indica al usuario que
el evento ha terminado la rotura. En este punto, el módulo EUSART está en el
modo inactivo a la espera de recibir el siguiente carácter.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 317


PIC16F / LF1825 / 1829

FIGURA 26-7: AUTO-DESPERT BIT (EUA) TIEMPO DURANTE EL FUNCIONAMIENTO NORMAL

Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4 Q1Q2 Q3Q4 Q1Q2Q3 Q4Q1Q2 T3 T4 Q1Q2Q3Q4 Q1Q2Q3Q4 Q1Q2Q3Q4 Q1Q2Q3Q4 OSC1

Bit establecido por el usuario Borrado automático

EUA mordió

RX / DT Línea

RCIF
Limpiado debido al usuario de lectura de RCREG

Nota 1: los EUSART permanece en ralentí mientras que el bit se establece la EUA.

FIGURA 26-8: AUTO-DESPERT bit (EUA) SINCRONIZACIONES durante el sueño

Q1Q2Q3Q4 Q1Q2Q3Q4 Q1Q2Q3Q4 Q1 Q1Q2Q3Q4 Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4

OSC1
Bit programado por el usuario Borrado automático

EUA mordió

RX / DT Línea
Nota 1

RCIF
Limpiado debido al usuario de lectura de RCREG
Comando del sueño Ejecutado Final del sueño

Nota 1: Si el evento de reactivación requiere mucho oscilador de tiempo de calentamiento, la compensación automática de la broca de EUA puede ocurrir mientras el stposc señal todavía está activo. Esta secuencia no
debe depender de la presencia de los relojes Q.

2: los EUSART permanece en ralentí mientras que el bit se establece la EUA.

DS41440A páginas 318 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

26.3.4 Carácter de salto en secuencia el módulo EUSART tiene 26.3.5 RECIBIR un carácter de salto El módulo EUSART mejorada
la capacidad de enviar las secuencias de caracteres especiales rotura puede recibir un carácter de salto de dos maneras.
que son requeridos por el estándar de bus LIN. Un carácter de salto
consiste en un bit de inicio, seguido de 12 ' 0 "bits y un bit de parada.
El primer método para detectar un carácter de salto utiliza el bit FERR del
Para enviar un carácter de salto, establecer los bits SENDB y TXEN del
registro RCSTA y los datos recibidos según lo indicado por RCREG. La
registro TXSTA. La misión del carácter de salto trans se inicia entonces
Tasa generador de baudios se supone que ha sido inicializado a la
una escritura en el TXREG. El valor de los datos por escrito a TXREG velocidad de transmisión esperada.
será ignorado y todos ' 0 'S se transmitirá.

Un carácter de salto cuando se ha recibido;

• poco RCIF se establece


El bit SENDB se restablece automáticamente por hardware después se envía el
• El bit FERR se establece
correspondiente bit de parada. Esto permite al usuario para precargar los FIFO de
transmisión con el siguiente byte de transmisión siguiendo el carácter Break
• RCREG = 00h

(típicamente, el carácter de sincronización en la especificación LIN). El segundo método utiliza la función de Auto-despertador descrito en Sección
27.3.3 “Auto-despertador en vacaciones”. Al habilitar esta característica,

El bit TRMT del registro TXSTA indica cuando la operación de transmisión el EUSART muestreará los próximos dos transiciones en RX / DT, causar

está activo o inactivo, tal como lo hace durante la transmisión normal. Ver una interrupción RCIF, y recibir el siguiente byte de datos, seguido por otro

Figura 27-9 para la temporización de la secuencia de caracteres Break. de interrupción.

Tenga en cuenta que después de un carácter de salto, el usuario normalmente


26.3.4.1 descanso y sincronización de transmisión de secuencias La secuencia
deseará que el Auto-Baud función de detección. Para ambos métodos, el
siguiente se iniciará un encabezado del telegrama compuesto por una pausa, usuario puede establecer el bit Abden del registro BAUDCON antes de colocar
seguido por un byte de sincronización automática de baudios. Esta secuencia es el EUSART en modo de suspensión.
típico de un maestro de bus LIN.

1. Configure el EUSART para el modo deseado.


2. Establecer los bits TXEN y SENDB para permitir la secuencia de
interrupción.

3. Cargar el TXREG con un carácter ficticio para iniciar la


transmisión (el valor se ignora).
4. Escribir '55h' a TXREG para cargar el carácter de sincronización en el búfer
de transmisión FIFO.

5. Después de la pausa ha sido enviado, el bit SENDB se restablece


mediante hardware y luego se transmite el carácter de sincronización.

Cuando el TXREG se vacía, como se indica por el TXIF, el siguiente byte


de datos se puede escribir en TXREG.

FIGURA 26-9: ENVIAR carácter de salto SECUENCIA

Escribir en TXREG
Escribir ficticia

Salida BRG (Shift


Reloj)

TX (pin) bit de inicio bit 0 bit 1 11 bits bit de parada

Descanso

TXIF bit
(Transmit indicador
de interrupción)

TRMT bits
(Shift Transmitir
Bandera vacío)
Aquí SENDB muestreados Borrado automático
SENDB
(enviar rotura
bit de control)

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 319


PIC16F / LF1825 / 1829

26.4 EUSART modo síncrono Despejar el bit SCKP establece el estado inactivo un precio tan bajo. Cuando se
borra el bit SCKP, los cambios de datos en el flanco ascendente de cada reloj.
comunicaciones en serie síncronos se utilizan normalmente en sistemas con
un solo maestro y uno o más esclavos. El dispositivo maestro contiene la
circuitería necesaria para la generación de velocidad de transmisión y 26.4.1.3 síncrono Maestro de transmisión de datos se transfiere
suministra el reloj para todos los dispositivos en el sistema. Los dispositivos fuera del dispositivo en el pin RX / DT. El RX / DT y controladores
esclavos pueden aprovechar el reloj maestro al eliminar la inter- circuitería de salida de pin TX / CK están automat- camente activa cuando el
de generación de reloj nal. EUSART está configurado para la operación de transmisión
maestro síncrono. Una transmisión se inicia escribiendo un
Hay dos líneas de señal en modo síncrono: una línea de datos unidireccio- bidi- personaje para el registro TXREG. Si el TSR todavía contiene la
y una línea de reloj. Los esclavos utilizan el reloj externo suministrado por el totalidad o parte de un carácter anterior los nuevos datos de
maestro para cambiar los datos en serie dentro y fuera de sus respectivos carácter se llevó a cabo en el TXREG hasta el último bit del
recibir y trans registros de desplazamiento mit. Desde la línea de datos es carácter anterior se ha transmitido. Si este es el primer carácter, o
bidireccional, el funcionamiento síncrono es sólo la mitad-duplex. Semidúplex
el carácter pre vious ha sido completamente vaciado de la TSR, los
refiere al hecho de que los dispositivos maestros y esclavos pueden recibir y
datos de la TXREG se transfiere inmediatamente a la TSR. La
transmitir datos, pero no ambos simultáneamente. El EUSART puede funcionar
transmisión de los caracteres mences com- inmediatamente
como maestro o dispositivo esclavo.
después de la transferencia de los datos al TSR de la TXREG.

Comienzan y Bits de parada no se utilizan en las transmisiones síncronas.

26.4.1 MODO MAESTRO SÍNCRONOS Los siguientes bits se


utilizan para configurar el EUSART para el funcionamiento síncrono Nota: El registro TSR no se asigna en la memoria de datos, por lo
que no está disponible para el usuario.
Maestro:

• SINC = 1 26.4.1.4 Transmisión síncrona Maestro


• CSRC = 1 Preparar:
• SREN = 0 ( para transmisión); SREN = 1 ( para recibir) 1. Inicializar el par de registro SPBRGH, SPBRGL y los bits BRGH y
• CREN = 0 ( para transmisión); CREN = 1 ( para recibir) BRG16 para lograr la tasa de transmisión deseada (ver Sección
• SPEN = 1 27.3 “EUSART Velocidad de transmisión del generador (BRG)”).

Ajustar el bit SYNC del registro TXSTA configura el dispositivo para el


funcionamiento síncrono. El establecimiento del bit CSRC del registro TXSTA 2. Activar el puerto serie síncrono maestro por los bits de ajuste
configura el dispositivo como un maestro. La limpieza de los bits SREN y de SYNC, SPEN y CSRC.
CREN del registro RCSTA asegura que el dispositivo está en el modo de 3. Desactivar modo de recepción en la limpieza de los bits SREN y CREN.
transmisión, de lo contrario el dispositivo se puede configurar para recibir. El
establecimiento del bit SPEN del registro RCSTA permite al EUSART. 4. Activar el modo de transmisión activando el bit TXEN.
5. Si se desea la transmisión de 9 bits, establecer el bit TX9.

6. Si se desean interrupciones, establecer el bit TXIE del PIE1


registro y los bits GIE y PEIE del registro INTCON.
26.4.1.1 reloj maestro

transferencias de datos síncronos utilizan una línea de reloj separada, que es


7. Si se selecciona la transmisión de 9 bits, el noveno bit debe ser
síncrona con los datos. A ured config- dispositivo como un maestro transmite
cargado en el bit TX9D.
el reloj de la línea / CK TX. El controlador de salida de pin TX / CK se activa
8. Iniciar la transmisión de la carga de datos al registro TXREG.
automáticamente cuando el EUSART está configurado para la transmisión
síncrona o operación de recepción. bits de datos en serie se basan en el
borde de entrada para asegurarse de que son válidos en el borde ing TRAIL
de cada reloj. Un ciclo de reloj se genera para cada bit de datos. Sólo tantos
ciclos de reloj son gene- ado ya que hay bits de datos.

26.4.1.2 reloj de polaridad

Una opción de reloj de polaridad se proporciona por compatibilidad Microcable.


polaridad del reloj se selecciona con el bit SCKP del registro BAUDCON. El
establecimiento del bit SCKP establece el estado inactivo del reloj tan alto.
Cuando se establece el bit SCKP, los cambios de datos en el flanco descendente
de cada reloj.

DS41440A páginas 320 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

Figura 26-10: transmisión síncrona

RX / DT
alfiler bit 0 bit 1 bit 2 7 bits bit 0 bit 1 7 bits

palabra 1 palabra 2

TX / CK pines
(SCKP = 0)

TX / pin CK
(SCKP = 1)

Escribir en TXREG TXIF

Reg bits (la bandera de Escribe Palabra 1 Escribir palabra 2


interrupción)

poco TRMT

'1'
TXEN poco " 1 '

Nota: modo de sincronización del maestro, SPBRGL = 0, transmisión continua de dos palabras de 8 bits.

Figura 26-11: Transmisión síncrona (TRAVÉS TXEN)

pin RX / DT bit 0 bit 1 bit 2 6 bits 7 bits

TX / CK pines

Escribir en
TXREG reg

poco TXIF

poco TRMT

poco TXEN

TABLA 26-7: RESUMEN DE registros asociados con el Maestro SÍNCRONO


TRANSMISIÓN

inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página

APFCON0 RXDTSEL SDOSEL ( 1) SSSEL ( 1) - T1GSEL TXCKSEL - - 125

BAUDCON ABDOVF RCIDL - SCKP BRG16 - EUA Abden 310

INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 93

PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94

PIR1 TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF 98

RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309

SPBRGL BRG <7: 0> 311 *

SPBRGH BRG <15: 8> 311 *

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 140

TXREG EUSART Transmitir datos Registro 301 *

TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308

Leyenda: - = Ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la transmisión síncrona Maestro.
* Página proporciona información de registro.
Nota 1: PIC16F / LF1825 solamente.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 321


PIC16F / LF1825 / 1829

26.4.1.5 síncrono Maestro de recepción de datos se recibe en el pin RX búfer se puede leer, sin embargo, no se recibirán caracteres adicionales hasta que

/ DT. El controlador de salida de pin RX / DT se desactiva se elimine el error. El bit OERR sólo puede eliminarse en la limpieza de la

automáticamente cuando el EUSART está configurado para el maestro condición de desbordamiento. Si se ha producido el error de desbordamiento
cuando se establece el bit CREN SREN y es claro, entonces, el error se borra
síncrono operación de recepción.
mediante la lectura de RCREG. Si se produce el rebasamiento cuando el bit CREN
se establece a continuación, la condición de error se borra por cualquiera de
En el modo síncrono, la recepción se habilita estableciendo ya sea despejar el bit CREN del registro RCSTA o desactivando el bit SPEN que
el único Recibir Enable bit (SREN del registro RCSTA) o la continua restablece el EUSART.
poco Recibe Enable (CREN del registro RCSTA).

26.4.1.8 Recepción de caracteres de 9 bits El EUSART admite la recepción


Cuando SREN se establece y CREN es clara, sólo como muchos
ciclos de reloj se generan, ya que hay bits de datos en un solo de caracteres de 9 bits. Cuando se establece el bit RX9 del registro

carácter. El bit SREN se borra automáticamente en la terminación de RCSTA la EUSART se desplazará 9-bits en el RSR para cada carácter

un carácter. Cuando se establece CREN, los relojes se generan recibido. El bit RX9D del registro RCSTA es el noveno, y más importante,
continuamente hasta CREN se borra. Si CREN se borra en el medio bit de datos del personaje sin leer superior en el FIFO de recepción.
de un personaje el reloj CK se detiene inmediatamente y el carácter Cuando la lectura de datos de 9 bits de la memoria intermedia FIFO de
parcial se descarta. Si SREN y CREN se establecen ambos, entonces recepción, el bit de datos RX9D debe leerse antes de la lectura de los 8
SREN se borra al finalizar el primer carácter y CREN tiene prioridad. bits menos significativos de la RCREG.

Para iniciar la recepción, o bien establecer SREN o CREN. Los datos se


26.4.1.9 síncrono recepción Maestro
tomaron muestras en el pin RX / DT en el borde posterior de la / CK pin de
Preparar:
reloj TX y se desplaza al Recibe Shift Register (RSR). Cuando un
personaje completa es 1. Inicializar el par de registros SPBRGH, SPBRGL para la velocidad de
recibido en la RSR, el bit se establece RCIF y el personaje se transfiere transmisión adecuada. Establecer o borrar los bits BRGH y BRG16, según
automáticamente a los dos caracteres FIFO de recepción. Los ocho bits sea necesario, para lograr la velocidad de transmisión deseada.
menos significativos del carácter superior en el FIFO recibir están
disponibles en RCREG. El bit permanece establecido RCIF siempre y 2. Borrar el bit ANSEL para el pin RX (si es aplicable).
cuando no son caracteres leídos de la FIFO de recepción.
3. Activar el puerto serie síncrono maestro por los bits de ajuste
de SYNC, SPEN y CSRC.
Nota: Si la función RX / DT está en un pin analógico, el bit 4. Asegúrese de bits de CREN y SREN son claras.
correspondiente ANSEL debe ser despejado para que el 5. Si se desean interrupciones, establecer el bit RCIE del
receptor pueda funcionar. PIE1 registro y los bits GIE y PEIE del registro INTCON.

26.4.1.6 Slave Clock


6. Si se desea la recepción de 9 bits, establezca RX9 bits.
transferencias de datos síncronos utilizan una línea de reloj separada, que es
7. recepción de inicio activando el bit SREN o para la recepción
síncrona con los datos. Un dispositivo configurado como esclavo recibe el reloj
continua, establece el bit CREN.
en la línea / CK TX. El controlador de salida de pin TX / CK se desactiva
8. Interrupción poco RCIF bandera se establecerá cuando la recepción de un
automáticamente cuando el dispositivo está configurado para la transmisión
personaje es completa. Una interrupción se generará si se establece el bit
síncrona o esclavo operación de recepción. bits de datos de serie cambia en el
de habilitación RCIE.
borde delantero para garantizar que son válidos en el borde posterior de cada
reloj. Un bit de datos se transfiere por cada ciclo de reloj. Sólo la cantidad de 9. Lea el registro RCSTA para obtener el noveno bit (si está activado) y

ciclos de reloj deben ser recibidas ya que hay bits de datos. determinar si se ha producido algún error durante la recepción.

10. Leer la 8 bits de datos recibido por la lectura del registro


RCREG.
Nota: Si el dispositivo está configurado como esclavo y la
11. Si se produce un error de desbordamiento, borrar el error por
función / CK TX es en un pin analógico, el bit
cualquiera de despejar el bit CREN del registro RCSTA o
correspondiente ANSEL se debe borrar.
desactivando el bit SPEN que restablece el EUSART.

26.4.1.7 recibir el error de desbordamiento

El búfer de recepción FIFO puede contener dos caracteres. se generará


un error de desbordamiento si un tercer personaje, en su totalidad, se
recibe antes de RCREG se lee para acceder a la FIFO. Cuando esto
sucede, se establece el bit OERR del registro RCSTA. No se
sobrescriben los datos anteriores en la FIFO. Los dos personajes de la
FIFO

DS41440A páginas 322 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

Figura 26-12: RECEPCIÓN sincrónico (MODO MAESTRO, SREN)

RX / DT
bit 0 bit 1 bit 2 3 bits 4 bits 5 bits 6 bits 7 bits
alfiler

TX / CK pines
(SCKP = 0)

TX / CK pines
(SCKP = 1)

Escribir en
poco SREN

poco SREN

CREN mordió
'0' '0'

RCIF bit
(Interrupt)

leer
RCREG

Nota: Cronograma demuestra el modo de sincronización principal con poco SREN = 1 y poco BRGH = 0.

TABLA 26-8: RESUMEN DE registros asociados con el Maestro SÍNCRONO


RECEPCIÓN

Registrarse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
la página

APFCON0 RXDTSEL SDOSEL ( 1) SSSEL ( 1) - T1GSEL TXCKSEL - - 125

BAUDCON ABDOVF RCIDL - SCKP BRG16 - EUA Abden 310

INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 93

PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94

PIR1 TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF 98

RCREG Recibir EUSART Registro de Datos 304 *

RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309

SPBRGL BRG <7: 0> 311 *

SPBRGH BRG <15: 8> 311 *

TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308

Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la recepción síncrona Maestro.
* Página proporciona información de registro.

Nota 1: PIC16F / LF1825 solamente.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 323


PIC16F / LF1825 / 1829

26.4.2 Modo esclavo SÍNCRONOS Los siguientes bits se Si dos palabras se escriben en el TXREG y luego el
utilizan para configurar el EUSART para el funcionamiento síncrono DORMIR la instrucción se ejecuta, ocurrirá lo siguiente:

esclavo: 1. El primer carácter transferirá inmediatamente al registro TSR y


transmitir.
• SINC = 1
2. La segunda palabra permanecerá en el registro TXREG.
• CSRC = 0
3. no se establecerá el bit TXIF.
• SREN = 0 ( para transmisión); SREN = 1 ( para recibir)
4. Después de que el primer carácter se ha desplazado fuera del TSR,
• CREN = 0 ( para transmisión); CREN = 1 ( para recibir)
el registro TXREG transferirá el segundo carácter de la TSR y
• SPEN = 1
ahora se establece el bit TXIF.
Ajustar el bit SYNC del registro TXSTA configura el dispositivo para el
funcionamiento síncrono. Borrado de la CSRC bits del registro TXSTA 5. Si se establecen los bits PEIE y TXIE, la interrupción se activará el
configura el dispositivo como esclavo. La limpieza de los bits SREN y dispositivo del sueño y ejecutar la siguiente instrucción. Si también
CREN del registro RCSTA asegura que el dispositivo está en el modo de se establece el bit GIE, el programa recurrirá a la rutina de servicio
transmisión, de lo contrario el dispositivo se puede configurar para recibir. de interrupción.
El establecimiento del bit SPEN del registro RCSTA permite al EUSART.
26.4.2.2 Transmisión síncrona Esclavo
Preparar:

26.4.2.1 EUSART síncrono esclavo 1. Establecer los bits SYNC y SPEN y borrar el bit CSRC.

Transmitir
2. Borrar el bit ANSEL para el pasador CK (si es aplicable).
El funcionamiento de los maestro y esclavo sincrónicos modos
3. Desactive la CREN y SREN bits.
son idéntico (ver sección 27.4.1.3
“Síncrono Maestro de Transmisión”) , excepto en el caso del modo de 4. Si se desean interrupciones, establecer el bit TXIE del PIE1
suspensión. registro y los bits GIE y PEIE del registro INTCON.

5. Si se desea la transmisión de 9 bits, establecer el bit TX9.

6. Activar la transmisión poniendo el bit TXEN.


7. Si se selecciona la transmisión de 9 bits, inserte el bit más
significativo en el bit TX9D.
8. Inicio transmisión escribiendo los menos 8 bits
significativos al registro TXREG.

TABLA 26-9: RESUMEN DE registros asociados CON SLAVE SÍNCRONO


TRANSMISIÓN

inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página

APFCON0 RXDTSEL SDOSEL ( 1) SSSEL ( 1) - T1GSEL TXCKSEL - - 125

BAUDCON ABDOVF RCIDL - SCKP BRG16 - EUA Abden 310

INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 93

PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94

PIR1 TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF 98

RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309

TXREG EUSART Transmitir datos Registro 301 *

TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308

Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la transmisión síncrona esclavo.
* Página proporciona información de registro.

Nota 1: PIC16F / LF1825 solamente.

DS41440A páginas 324 Preliminar • 2010 Microchip Technology Inc.


PIC16F / LF1825 / 1829

26.4.2.3 EUSART síncrono esclavo 26.4.2.4 síncrono esclavo recepción


Recepción Preparar:

El funcionamiento de los maestro y esclavo síncronos modos es 1. Establecer los bits SYNC y SPEN y borrar el bit CSRC.
idéntico ( Sección 27.4.1.5 “Maestro recepción síncrona” ), con las
siguientes excepciones: 2. Borrar el bit ANSEL tanto para la CK y los pasadores de DT (si es

• Dormir aplicable).

• CREN bit se establece siempre, por lo tanto, el receptor no está Libre 3. Si se desean interrupciones, establecer el bit RCIE del
PIE1 registro y los bits GIE y PEIE del registro INTCON.

• SREN bits, que es un modo de “no importa” en Slave Un personaje puede


ser recibida mientras están en reposo mediante el establecimiento de la CREN 4. Si se desea la recepción de 9 bits, establecer el bit RX9.

mordió antes de entrar en el sueño. Una vez que se recibe la palabra, el registro 5. Establecer el bit CREN para permitir la recepción.

RSR transferirá los datos al registro RCREG. Si el RCIE habilitación se 6. Se ajustará el bit RCIF cuando la recepción es completa. Una
establece bits, la interrupción generada se despierta el dispositivo del sueño y interrupción se generará si se establece el bit de RCIE.
ejecutar la siguiente instrucción. Si también se establece el bit GIE, el programa
se ramifica al vector de interrupción. 7. Si está activado el modo de 9 bits, recuperar el bit más
significativo desde el bit RX9D del registro RCSTA.

8. Recuperar los 8 bits menos significativos de la FIFO recibir


mediante la lectura del registro RCREG.
9. Si se produce un error de desbordamiento, borrar el error por
cualquiera de despejar el bit CREN del registro RCSTA o
desactivando el bit SPEN que restablece el EUSART.

TABLA 26-10: RESUMEN DE registros asociados CON SLAVE SÍNCRONO


RECEPCIÓN

inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página

APFCON0 RXDTSEL SDOSEL ( 1) SSSEL ( 1) - T1GSEL TXCKSEL - - 125

BAUDCON ABDOVF RCIDL - SCKP BRG16 - EUA Abden 310

INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 93

PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94

PIR1 TMR1GIF ADIF RCIF TXIF SSP1IF CCP1IF TMR2IF TMR1IF 98

RCREG Recibir EUSART Registro de Datos 304 *

RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309

TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308

Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la recepción síncrono esclavo.
* Página proporciona información de registro.

Nota 1: PIC16F / LF1825 solamente.

• 2010 Microchip Technology Inc. Preliminar DS41440A páginas 325


PIC16F / LF1825 / 1829

26.5 Operación EUSART durante el sueño 26.5.2 SÍNCRONOS TRANSMITIR durante el sueño para transmitir

durante el sueño, todas las siguientes condiciones se deben cumplir


El EUSART permanecerá activa durante el sueño sólo en el modo síncrono
antes de entrar en modo de suspensión:
esclavo. Todos los demás modos requieren el reloj del sistema y por lo tanto no
pueden generar las señales nece- sarios para ejecutar la transmisión o de
recepción Shift tros regis- durante el sueño. • RCSTA y Control TXSTA registros deben estar configurados
para síncrono esclavo de transmisión (véase Sección
Modo esclavo síncrona utiliza un reloj generada externamente para ejecutar la 27.4.2.2 “síncrono esclavo Transmisión set-up” ).
transmisión y recepción Registros de desplazamiento.
• El indicador de interrupción TXIF debe ser limpiado por la escritura de los
26.5.1 SÍNCRONOS RECIBIR durante el sueño datos de salida a la TXREG, llenando de este modo la TSR y transmitir buffer.

Para recibir durante el sueño, las siguientes condiciones deben cumplirse antes • Si se desean interrupciones, establecer el bit del registro TXIE
de entrar en modo de suspensión: PIE1 y el bit PEIE del registro INTCON.

• RCSTA y Control TXSTA registros deben estar configurados para


• Interrumpir bits de habilitación TXIE del registro PIE1 y PEIE del registro
síncrono esclavo de recepción (véase
INTCON debe establecer. Al entrar en el modo de suspensión, el dispositivo
Sección 27.4.2.4 “Synchronous recepción
esclavo set-up” ). estará listo para aceptar los relojes en TX pin / CK y transmitir datos en el
pin RX / DT. Cuando la palabra de datos en el TSR ha sido completamente
• Si se desean interrupciones, establecer el bit RCIE del
registrado hacia fuera por el dispositivo externo, el byte de pendiente en el
PIE1 registro y los bits GIE y PEIE del registro INTCON.
TXREG transferirá a la TSR y será establecer el indicador TXIF. De este
modo, despertar el procesador del sueño. En este punto, el TXREG está
• El indicador de interrupción RCIF debe ser despejado por haberlo leído RCREG
disponible para aceptar otro personaje para la transmisión, que despejará la
para descargar cualquier carácter pendientes en el buffer de recepción.
bandera TXIF.

Al entrar en el modo de suspensión, el dispositivo estará listo para aceptar


datos y relojes en los pines RX / DT y TX / CK, respectivamente. Cuando la
Al despertar del sueño, la instrucción siguiente a la
palabra de datos ha sido completamente velocidad de reloj en el dispositivo
DORMIR se ejecutará la instrucción. Si la interrupción Activación global (GIE)
externo, se establece el bit bandera RCIF interrupción del registro PIR1. De este
bit también se activa entonces la rutina de servicio de interrupción en la
modo, despertar el procesador del sueño.
dirección 0004h se llamará.

Al despertar del sueño, la instrucción siguiente a la 26.5.3 SITIO DE PIN alternativo Esta módulo incorpora pines I
DORMIR se ejecutará la instrucción. Si el GIE, Global habilitación de interrupción, / O que se pueden mover a otros lugares con el uso de los registros de
también se establece bit del registro INTCON, a continuación, la rutina de servicio de
funciones de pasador alternativos, APFCON0 y APFCON1. Para
interrupción en la dirección 004h será llamado.
determinar qué pines se pueden mover y lo PAR- su defecto ciones
están sobre un Reset, consulte Sección 12.1 “Pin Función
alternativo” para más información.

DS41440A páginas 326 Preliminar • 2010 Microchip Technology Inc.

Вам также может понравиться