Você está na página 1de 3

Comunicacin Serial Asincrnica

Entre las herramientas que disponen los PIC16F8x se encuentra el USART, llamado SCI
(Serial Comunications Interface), puede funcionar como un sistema de comunicacin
bidireccional, adaptndose a multitud de perifricos y dispositivos que transfieren
informacin de forma serial, tales como un ordenador. Tambin puede trabajar en modo
unidireccional para soportar perifricos como memorias, conversores, etc.
El USART (Transmisor/Receptor Sncrono/Asncrono Serie) puede trabajar de dos formas:
Asncrono (Bidireccional)
Sncrono (Unidireccional)

En el modo asncrono, la comunicacin serie del USART en los PIC16F8x esta soportada
por las lneas RC6/TX/CK y RC7/RX/DT por las que se mueven los bits a la frecuencia
interna de reloj. En el modo sncrono, los bits de informacin circulan en ambos sentidos
por la lnea DT a la frecuencia de los impulsos que genere el maestro por la linea CK.
Modo asncrono.
En esta forma de comunicacin serie, se usa la norma RS-232-C, donde cada palabra de
informacin o dato se enva independientemente de los dems. Suele constatar de 8 o 9 bits
y van precedidos por un bit de START (inicio) y detrs de ellos se coloca un bit de STOP
(parada), de acuerdo con las normas del formato estandar NRZ (Non Return-to-Zero) Los
bits se transfieren a una frecuencia fija y normalizada. La USART transmite y recibe
primero el bit menos significativo.
La USART en modo asncrono contiene los siguientes elementos:
Generador de Baudios
Circuito de Muestreo
Transmisor Asncrono
Receptor Asncrono

Generador de Baudios
Para el protocolo asncrono RS-232-C, la frecuencia en baudios (bits por
segundo) a la que se realiza la transferencia se debe efectuar a un valor
normalizado: 330, 600, 1200,
2400, 4800, 9600, 19200, 38400, etc. Para generar esta frecuencia, el USART dispone de un
generador de frecuencia en Baudios, BRG, cuyo valor es controlado por el contenido
grabado en el registro SPBRG.
Aparte del valor X cargado en el registro SPBRG, la frecuencia en baudios del generador
depende del bit BRGH del registro TXSTA <2>. En el caso de que BRGH = 0 se trabaja en
baja velocidad y si BRGH = 1 se trabaja en alta velocidad. Segn este bit se obtendr el
valor de una constante K necesaria en la determinacin de la frecuencia de funcionamiento.

()=((+1))
X es el valor cargado en el registro SPBRG
BRG
Si BRG = 0, baja velocidad y K = 64
Si BRG = 1, baja velocidad y K = 16
=/()1
TRANSMISION ASINCRONICA
El corazn de este mdulo es el registro de corrimiento (transmit shift register, TSR). La
nica manera de acceder al registro TSR es a travs del registro TXREG (19H).
Para transmitir un dato, el programa deber ponerlo primero en el registro TXREG. En
cuanto el TSR termina de enviar el dato que tena (en cuanto transmite el bit de paro) lee el
dato contenido en TXREG (si hay alguno) esto ocurre en un ciclo TCY. En cuanto el dato
de TXREG es transferido al TSR el TXREG queda vaco esta condicin es indicada
mediante el bit bandera TXIF (que es el bit 4 del registro PIR1 (0Ch)), el cual se pone en
alto. Este bit NO puede ser limpiado por software, slo dura un instante en bajo cuando se
escribe un nuevo dato a TXREG. Si se escribe un dato seguido de otro (back to back) a
TXREG el primero se transfiere inmediatamente a TSR y el otro tiene que esperar hasta que
el TSR termine de enviar el bit de Stop del primero. Durante esta espera TXIF permanece
en bajo.
Existe otro bit, llamado TRMT (TXSTA<1>), el cual muestra el estado del TSR. TRMT se
pone en alto cuando TSR est vaco, y en bajo cuando TSR est transmitiendo un dato.
Mientras que TXIF puede generar una interrupcin TRMT no lo puede hacer, TRMT est
pensado para ser consultado por poleo (sin usar interrupciones).
Para habilitar el mdulo de transmisin es necesario poner en alto el bit TXEN
(TXSTA<5>), mientras no se habilite el mdulo, la patita de transmisin (RC6/TX/CK) se
mantiene en alta impedancia. Si TXEN es deshabilitada a la mitad de una transmisin, est
ser abortada y el transmisor ser reseteado.
Si se est usando un noveno bit TX9 (TXSTA<6>), ste deber ser
escrito antes de escribir los 8 bits restantes a TXREG, ya que en cuanto
se escribe un dato a este registro inmediatamente es transferido a TSR
(si ste est vaco).
La secuencia de pasos a seguir para una transmisin en el USART es la como sigue:
1. Configurar las lneas RC6/TX/CK como salida y RC7/RX/DT como entrada.
2. Asignar SYNC=0 y SPEN=1 para activar el USART como asncrono.

3. Si se va a trabajar con interrupcin, asignar TXIE=1, adems de habilitar las


interrupciones.
4. Si el dato consta de 9 bits, en lugar de los 8 tpicos, asignar el bit TX9=1. El noveno bit
se colocar en TX9D (TXSTA)
5. Se carga el valor adecuado en el registro SPBRG, para producir la frecuencia de trabajo
deseada. Hay que controlar el bit BRGH (alta y baja velocidad)
6. Activar la transmisin con TXEN = 1. El bit TXIF tendr valor 1; ya que TXREG se
encuentra vaco.
7. Cargar en TXREG el dato a transmitir. Comienza la transmisin.

RECEPTOR ASINCRONICO
El mdulo de recepcin es similar al de transmisin, en la siguiente figura se muestran los
bloques que lo constituyen. Una vez que se ha seleccionado el modo asncrono, la recepcin
se habilita poniendo en alto el bit CREN (RCSTA<4>). El dato es recibido mediante la lnea
RC7/RX/DT, la cual maneja un registro de corrimiento de alta velocidad (16 veces el Baud
rate). El corazn del receptor es el registro de corrimiento RSR. Este registro no es acesabel
por software, ero, cuando el dato recibido se ha completado (se ha recibido el bit de Stop) el
dato de RSR es transferido automticamente al registro RCREG (1Ah) si ste est vaco y al
mismo tiempo es puesto en alto la bandera de recepcin RCIF (PIR1<5>). La nica manera
de limpiar la bandera RCIF es leyendo el los datos del registro RCREG. El registro RCREG
puede contener hasta dos datos, ya que es un buffer doble que funciona como un cola de dos
posiciones. Si las dos posiciones del registro RCREG estn llenas (no han sido ledas) y se
detecta el bit de Stop de un tercer dato de recepcin, lo cual ocasiona un transferencia
automtica del dato recibido a RCREG, esto destruir el primer dato recibido y activar el
indicador de sobreescritura OERR (RCSTA<1>). Para evitar esto, se debern leer los dos
datos en RSREG haciendo dos lecturas consecutivas.
La nica manera de limpiar el bit OERR una vez que ha sido activado es
reseteando el mdulo de recepcin (limpiando CREN y volvindolo a
poner), si no se limpia OERR se bloquea la transferencia de datos de RSR
a RCREG y no puede haber ms recepcin de datos.
La siguiente es la secuencia de pasos a realizar para configurar la recepcin asncrona:
1. Inicializar el registro SPBRG con el valor apropiado que genere los baudios necesarios.
No olvide colocar un valor al bit BRGH en funcin a si va o no a transmitir en alta
velocidad

2. Habilite la puerta serial asncrona colocando a 0-lgico el bit SYNC y a 1-lgico el bit
SPEN.
3. Si se va a trabajar con interrupcin, asignar RCIE=1, adems de habilitar las
interrupciones.
4. Habilite la recepcin colocando a 1-lgico el bit CREN.
5. El bit RCIF se colocar a 1-lgico cuando un dato llegue completo al microcontrolador y
una interrupcin se generar si es que se ha seteado el bit RCIE. 6. Lea el registro RCSTA
para obtener el valor del noveno bit (si es que esta trabajndo con 9 bits de datos) y
determine si hubo error en la comunicacin (revise los bits OERR y FERR).
6. Si no hubo error lea los 8 bits de datos del registro RCREG.
7. Si no hubo algun error resetee el bit CREN.