Este documento describe cómo configurar y usar el módulo EUSART en el microcontrolador PIC16F887 para comunicaciones serie asíncronas. Explica que el EUSART puede configurarse para comunicaciones asíncronas bidireccionales usando dos líneas TX y RX, y describe los pasos para configurar la transmisión y recepción asíncrona, incluyendo la configuración de registros como TXSTA, RCSTA y BAUDCTL para establecer la velocidad de baudios.
2. 2
INTERFAZ DE COMUNICACIÓN TTL/RSINTERFAZ DE COMUNICACIÓN TTL/RS--232232
El microcontrolador PIC16F88X posee un módulo USART, usando
la norma RS-232/RS-485, sin embargo es necesario usar un
módulo adicional para convertir las señales que maneja, a niveles
TTL (0 – 5V) a niveles adecuados para que haya una correcta
comunicación con el computador (PC). Dicha labor la realiza el
circuito integrado MAX232 de Maxim Semiconductor. Este
integrado se destaca por que maneja los niveles de voltaje
positivos y negativos propios de la interface RS-232, a pesar de
que se alimenta con solo una fuente sencilla de 5V.
3. 3
COMUNICACIÓN SERIE ASÍNCRONACOMUNICACIÓN SERIE ASÍNCRONA
El EUSART (Enhanced Universal Synchronous Asynchronous
Receiver Transmitter), o conocido como SCI (Serial Comunications
Interface), puede ser configurado como un sistema full duplex o
bidireccional asíncrono, adaptándose a multitud de periféricos y
dispositivos que transfieren información de ésta forma, tales
como el monitor o el computador.
EUSART puede configurarse de tres formas:
• Asíncrona (Full duplex, bidireccional).
• Síncrona-Maestro (Half duplex, unidireccional).
• Síncrona-Esclavo (Half duplex, unidireccional).
4. 4
COMUNICACIÓN SERIE ASÍNCRONA (2)COMUNICACIÓN SERIE ASÍNCRONA (2)
Vamos a estudiar únicamente el modo asíncrono,
donde las transferencias de información se realizan
sobre dos líneas TX (transmisión) y RX (recepción),
saliendo y entrando los bits por dichas líneas al ritmo
de una frecuencia controlada internamente por el
USART. Las líneas de comunicación son los dos bits de
más peso del Puerto C: RC6/TX/CK y RC7/RX/DT, donde
el bit SPEN (RCSTA<7>) y los bits TRISC<7:6> tienen que
activarse mediante un 1 con el fin activar dichos pines.
5. 5
REGISTRO TXSTA: Estado de la transmisión y RegistroREGISTRO TXSTA: Estado de la transmisión y Registro
dede control (1)control (1)
6. 6
REGISTRO TXSTA: Estado de la transmisión y RegistroREGISTRO TXSTA: Estado de la transmisión y Registro
dede control (2)control (2)
7. 7
REGISTRO RCSTA: Estado de la recepción y RegistroREGISTRO RCSTA: Estado de la recepción y Registro
dede control (1)control (1)
8. 8
REGISTRO RCSTA: Estado de la recepción y RegistroREGISTRO RCSTA: Estado de la recepción y Registro
dede control (2)control (2)
11. 11
GENERADOR DE BAUDIOSGENERADOR DE BAUDIOS
En el protocolo asíncrono RS-232-C, la frecuencia en baudios (bits
por segundo) a la que se realiza la transferencia se debe efectuar
a un valor normalizado: 2400, 4800, 9600, 19200, etc. Para
generar esta frecuencia en Baudios, BRGH y BRG16, cuyo valor es
controlado por el contenido grabado en el registro SPBRGH y
SPBRG.
Además del valor X cargado en el registro SPBRG, la frecuencia en
baudios del generador depende del bit BRGH del registro
TXSTA<2> y BRG16 en el registro BAUDCTL. En caso de que BRGH
sea 0 se trabaja en baja velocidad y si BRGH = 1 se trabaja en alta
velocidad.; y BRG16 = 1 para usar los 16 bits y reducir el error en
la generación.
12. 12
GENERADOR DE BAUDIOS (2)GENERADOR DE BAUDIOS (2)
64 1
OSCF
X
Frecuencia en Baudios
X es el valor cargado en el registro SPBRGH:SPBRG
Despejando X:
1
. 64
OSCF
X
Frec Baudios
13. 13
GENERADOR DE BAUDIOS (3)GENERADOR DE BAUDIOS (3)
Si en un PIC16F877A funcionando con una 4OSCF MHz
Se desea trabajar con el USART en modo asíncrono y alta
velocidad, con una frecuencia de 9600 baudios, calcular el valor X
que hay que cargar en el registro SPBRG y el error que se origina.
BRGH = 1 y BRG16 = 0
4000000
1
9600 16
X
25X
14. 14
GENERADOR DE BAUDIOS (4)GENERADOR DE BAUDIOS (4)
Si se carga el registro SPBRG con 25 la frecuencia real de trabajo
será:
4000000/ 16 (25 1) 9615Frecuencia baudios
El error que se genera cargando 25 en el SPBRG será:
9615 9600
100% 0.16%
9600
Error
15. 15
TRANSMISOR ASÍNCRONOTRANSMISOR ASÍNCRONO
Pasos a seguir para implementar una transmisión en el USART:
1. Configurar las líneas RC6/TX/CK como salida y RC7/RX/DT como entrada.
2. Poner SYNC = 0 y SPEN = 1 para activar el EUSART en modo asíncrono.
3. Si se desea trabajar con interrupción, poner TXIE = 1, además de habilitar
las interrupciones en general.
4. Si el dato consta de 9 bits, en lugar de los 8 típicos, poner el bit TX9 = 1. El
noveno bit se colocará en TX9D (TXSTA).
5. Se carga el valor X adecuado en el registro SPBRG, para producir la
frecuencia de trabajo deseada. Hay que controlar el bit BRGH y BRG16.
6. Activar la transmisión con TXEN = 1. El bit TXIF tendrá valor 1, ya que
TXREG se encuentra vacío.
7. Cargar en TXREG el dato a transmitir. Comienza la transmisión.
16. 16
RECEPTOR ASÍNCRONORECEPTOR ASÍNCRONO
Pasos a seguir para el modo recepción:
1. Se carga con el valor X al registro SPBRG para trabajar con la frecuencia deseada, controlando además el
valor de BRGH y BRG16.
2. Se habilita el USART en modo asíncrono con SPEN = 1 y SYNC = 0.
3. Si se desea trabajar con interrupción con la llegada del bit de STOP (parada), se pone RCIE = 1, además
de habilitar las interrupciones en general.
4. Poner RX9 = 1 para permitir la recepción del bit 9 bits.
5. Se habilita la recepción poniendo CREN = 1.
6. Al completarse la recepción RCIF se pondrá a 1 y se produce una interrupción si se había permitido
7. Se lee el registro RCSTA y se averigüa si se ha producido algún error.
8. Leer los 8 bits del registro RCREG para determinar si el dispositivo ha sido direccionado.
9. Si se ha producido algún error, poner CREN = 0.