12° sesion Usart
-
Upload
mauricio-rodolfo-cuevas-donaire -
Category
Documents
-
view
136 -
download
1
Transcript of 12° sesion Usart
1
MICROCONTROLADORES PICMICROCONTROLADORES PIC
Puerto Serial Usart(Universal Synchronous Asynchronous
Receiver Transmitter)
2
Microcontroladores PIC USART (SCI): Generalidades
El módulo USART es uno de los 2 módulos seriales incorporados como periféricos en los PIC.
También es conocido como SCI: Serial Communication Interfase
La Usart puede ser utilizada como un sistema asíncrono full duplex, para comunicación con PCs o similares, o síncrono half duplex, para comunicación con Cis como CAD, CDA, eeprom seriales y otros.
La Usart puede ser configurada en los siguientes modos:
Modo Asíncrono (Full - Duplex) Modo Síncrono Master (Half - Duplex) Modo Síncrono Slave (Half - Duplex)
3
Microcontroladores PIC USART : Registro de Tx/Status TXSTA
BRGH Bit selector de baudios
Modo Asíncrono
1 = Alta velocidad
0 = Baja velocidad
Modo Síncrono: No se usa
TRMT Bit de status del registro de Tx
1 = Registro TSR vacío
0 = Registro TSR lleno
TX9D Noveno bits de datos. Puede ser bit de paridad
CSRC Bit selector de la fuente del clock
Modo Asíncrono: No importa
Modo Síncrono
1= Modo Master. Clock generado por el BRG
0 = Modo Slave. Clock externo
TX9 Bit selector de modo de datos para Tx
1 = Transmisión de 9 bits
0 = Transmisión de 8 bits
TXEN Bit de habilitación de Transmisión
1 = Transmisión habilitada
0 = Transmisión deshabilitada
SYNC Bit selector de Modo de la Usart
1 = Modo Síncrono
0 = Modo Asíncrono
4
Microcontroladores PIC USART : Registro de Status/Control RCSTA
SPEN Bit habilitador puerto Serial
1 = Puerto habilitado. Asigan los pines RC7 y RC6 a la Usart
0 = Puerto deshabilitado
RX9 Bit selector de modo de datos para Rx
1 = Recepción de 9 bits
0 = Recepción de 8 bits
SREN Bit para habilitar una solao recepción
Modo Asíncrono: No importa
Modo Síncrono Master
1 = Habilita una sola recepción
0 = Deshabilita una sola recepción (este bit es limpiado
después que
la recepción está completa)
CREN Bit para habilitar recepciones continuas
Modo Asíncrono
1 = Habilita recepciones continuas
0 = Deshabilita recepciones continuas
Modo Síncrono
1 = Habilita recepciones continuas hasta
que CREN se limpia nuevamente
0 = Deshabilita recepciones continuas
FERR Flag de error de Framing
1 = Error de Framing
0 = No hay error de Framing
OERR Flag de error de Overrun
1 = Error de overrun
0 = No hay error
RX9D Noveno bit de datos.
Puede ser bit de paridad
5
Microcontroladores PIC USART : BRG (Baud Rate Generator)
El BRG es un generador de baudios dedicado de 8 bits que soporta ambos modos de comunicación: Síncrono y Asíncrono.
El registro de control SPBRG controla el período de carrera libre del timer de 8 bits del BRG.
En modo Asíncrono, el bit TXSTA<BRGH>, también controla el rango de baudios. En modo Síncrono, el bit BRGH es ignorado.
Las fórmulas para deteminar el valor del registro SPBRG en modo Master solamemte, son las siguientes:
SYNC BRGH=0(baja velocidad) BRGH=1(alta velocidad)
0 Baudios = Fosc/[64(SPBRG + 1)] Baudios = Fosc/[16(SPBRG + 1)]
1 Baudios = Fosc/[4(SPBRG + 1)]
6
Microcontroladores PIC USART : BRG (Baud Rate Generator)
Dado un rango de transferencia de datos y el valor del oscilador (Fosc), el valor del SPBRG puede ser determinado. Por ejmplo, si se tienen las siguientes condiciones:
Fosc = 16 Mhz
Baudios = 9600 bps
BRGH = 0
SYNC = 0
Baudios = Fosc/[64(SPBRG + 1)]
9600 = 16000000/[64(SPBRG + 1)]
SPBRG = 25.042 25
Con SPBRG = 25, se tiene que % Error = 0.16% (9615 baudios) Al escribir un nuevo valor en el SPBRG, provoca que el timer del
BRG se resetee. Esto asegura que el BRG no espere un timer overflow antes de ajustar la transferencia al nuevo valor de bps.
7
Microcontroladores PIC USART: Valores para Modo Asíncrono y BRGH= 0
8
Microcontroladores PIC USART: Valores para Modo Asíncrono y BRGH= 1
9
Microcontroladores PIC USART: Modo Asíncrono - Generalidades
En este modo, la Usart utiliza un estándar llamado Nonreturn-To-Zero (NRZ), es decir, 1 bit de partida, 8 o 9 bits de datos y 1 bit de parada. Lo más común es transmitir/recibir datos de 8 bits.
El BRG es utilizado para generar los clock necesarios para transferencias a velocidades standard
La Usart transmite y recibe el bit LSB primero. Las etapas de Transmisión y Recepción son funcionalmente
independientes, pero usan el mismo formato de transmisión/recepción y la misma velocidad de transferencia
10
El bit de paridad no es soportado por el hardware, pero puede ser implementado por software y almacenado en el bit TX9D.
El modo Asíncrono no es funcional en modo Sleep
El modo Asíncrono es seleccionado limpiando el bit TXSTA<SYNC>
El módulo Usart Asíncrono consiste en las siguientes partes:
BRG: Baud Rate Generator
Circuito de muestreo
Transmisor Asíncrono
Receptor Asíncrono
Microcontroladores PIC USART: Modo Asíncrono - Generalidades
11
Microcontroladores PIC USART: Modo Asíncrono - Transmisor
El corazón del transmisor es el registro desplazador TSR. Este obtiene los datos desde el registro buffer TXREG.
El TXREG es cargado con el dato a transmitir por software. El TSR no se carga hasta que el bit de parada STOP halla sido transmitido por el hardware en la transferencia anterior.
Tan pronto como el bit STOP es transmido, el TSR se carga con el valor disponible en el TXREG.
Una vez que el TXREG transfiere el dato el TSR (ocurre en un solo ciclo de instrucción, Tcy), el TXREG queda vacío y el flag PIR1<TXIF> es puesto. Este flag será puesto a independientemente del estado del bit de habilitación PIE1<TXIE> y no puede ser limpiado por sofware. Este se limpiará cuando un nuevo dato se cargue en TXREG
12
Microcontroladores PIC USART: Modo Asíncrono - Transmisor
Mientras el flag PIR1<TXIF> indica el status del registro TXREG, el flag TXSTA<TRMT>, muestra el status del registro TSR. Este es un flag de sólo lectura y es puesto cuando el TSR está vacío. No hay interrupción asociada al flag TRMT, por lo que el usuario debe testear el flag para determinar el estado del TSR.
El registro TSR no está mapeado en la zona de memoria de datos, por lo que no está disponible para el usuario
La transmisión queda habilitada poniendo el bit TXSTA<TXEN>, pero el proceso de transmisión no se iniciará hasta que el registro TXREG haya sido cargado y el BRG halla iniciado un ciclo de reloj.
La transmisión también puede ser iniciada, cargando el TXREG con el dato a transmitir y luego habilitar la transmisión, poniendo el bit TXSTA<TXEN>
13
Microcontroladores PIC USART: Modo Asíncrono - TransmisorUSART: Modo Asíncrono - Transmisor
Si la transmisión es habilitada primero, y el TXREG está vacío, el contenido del TXREG se transferirá al TSR.
Si se detiene una transmisión en medio del proceso de transmisión (TXEN = 0), provocará que el bloque transmisor aborte la transferencia, reseteándose. Esto provocará que el pin RC6/TX/DT se ponga en estado de HiZ
Para seleccionar el modo de transmisión de 9 bits, el bit TXSTA<TX9> debe ser puesto y el noveno bit del dato, debe ser escrito en el bit RXSTA<TX9D>.
El noveno bit debe ser escrito antes de escribir los 8 bits en el TXREG. Esto se debe a que cuando se escribe el TXREG y si TXEN =1, el dato se transfiere inmediatamente al TSR (si es que está vacío). En este caso, un noveno bit de datos puede ser transmitido erróneamente
14
Microcontroladores PIC USART: Modo Asíncrono - Transmisor/ConfiguraciónUSART: Modo Asíncrono - Transmisor/Configuración
Pasos a seguir para configurar la Usart en modo Asíncrono – Tx
1 Inicializar el registro SPBRG con el valor correspondiente, de acuerdo a la velocidad de transferencia que desee
2 Habilitar el Puerto Serial Asíncrono limpiando el bit TXSTA<SYNC> y poniendo el bit RCSTA<SPEN>
3 Si se requiere interrupción por buffer vacío (TXREG), poner el bit PIE1<TXIE>
4 Si se requiere transmisión de 9 bits, poner el bit TXSTA<TX9>
5 Habilitar la transmisión poniendo el bit TXSTA<TXEN>, lo cual también pone el flag PIR1<TXIF>
6 Si el modo de transmisión de 9 bit fue seleccionado, el noveno bit de datos debe ser cargado en el bit TXSTA<TX9D>
7 Cargar el registro TXREG. Esto unicia la transmisión
15
Microcontroladores PIC USART: Modo Asíncrono - Tx/Diagramas de TiempoUSART: Modo Asíncrono - Tx/Diagramas de Tiempo
Transmisión Asíncrona
Transmisión Asíncrona
Consecutiva
16
Microcontroladores PIC USART: Modo Asíncrono - ReceptorUSART: Modo Asíncrono - Receptor
El corazón del bloque receptor, es el registro serial RSR. Después de detectar el bit de parada, el dato recibido en el RSR es transferido al registro RCREG (si es que está vacío). Si la transferencia es completa, el flag PIR<RCIF> es puesto.
La interrupción ascociada a este evento, puede ser habilitada/deshabilitada, poniendo/limpiando el bit PIE1<RCIE>
Los datos recibidos en el pin RC7/Rx/DT, son llevados al bloque de recuperación. Este bloque es un registro serial desplazador de alta velocidad, que opera 16 veces más rápido que el rango de transferencia de datos
Una vez que el modo Asíncromo es seleccionado, la recepción es habilitada poniendo el bit RCSTA<CREN>
17
Microcontroladores PIC USART: Modo Asíncrono - ReceptorUSART: Modo Asíncrono - Receptor
El flag RCIF es de sólo lectura y es limpiado por el hardware cuando el registro es leído y queda vacío
El registro RCREG es un buffer doble, es decir, una FIFO (First In - First Out) de 2 niveles. Esto permite que 2 bytes puedan ser recibidos en el RCREG, mientras el tercero queda en el RSR.
Si en la detección del bit de parada del tercer byte, el RCREG aún está lleno, el flag de Overrun es puesto, RCSTA<OERR>, y el dato en el RSR se pierde.
Entonces el registro RCREG puede ser leído 2 veces para rescatar los datos de la FIFO, pero el flag OERR debe ser limpiado por software, lo que resetea la lógica del bloque receptor, limpiando el bit RCSTA<CREN>. Mientras el OERR esté puesto, la transferencia de datos desde el RSR al RCREG quedará inhibida, por lo que es necesario limpiarlo.
18
El flag de error de trama de datos, RCSTA<FERR>, es puesto si se detecta un bit de parada en estado 0 lógico (debe ser 1).
Al leer el contenido del registro RCREG, se rescata el dato recibido. Pero es muy importante que el usuario, antes de leer el RCREG, lea primero el estado de los bits RX9D y FERR del registro RCSTA, en el caso de recepción de 9 bits o para detectar un error de FERR
El flag FERR se limpia, deshabilitando el proceso de recepción, limpiando el bit RCSTA<CREN>
OJO: Si no se lee el registro RCSTA antes del RCREG, se perderán los valores correspondientes del RX9D y FERR del dato leído.
Microcontroladores PIC USART: Modo Asíncrono - ReceptorUSART: Modo Asíncrono - Receptor
19
Microcontroladores PIC USART: Modo Asíncrono - Receptor/ConfiguraciónUSART: Modo Asíncrono - Receptor/Configuración
Estos son los pasos a seguir para configurar la Usart en modo Asíncrono - Receptor/Master
1 Inicializar el registro SPBRG con el valor correspondiente, de acuerdo a la velocidad de transferencia que desee
2 Habilitar el Puerto Serial Asíncrono limpiando el bit TXSTA<SYNC> y poniendo el bit RCSTA<SPEN>
3 Si se requiere interrupción por buffer lleno (RCREG), poner el bit PIE1<RCIE>
4 Si se requiere transmisión de 9 bits, poner el bit RCSTA<RX9>
5 Habilitar la recepción poniendo el bit RCSTA<CREN>.
6 El flag PIR1<RCIF> será puesto cuando una recepción esté completa y una interrupción será generada si el bit RCIE está puesto
7 Leer el registro RCSTA para obtener el noveno bit (si está habilitado) y determinar si ocurrió algún error durante la recepción.
8 Leer el dato recibido desde el registro RCREG
9 Si algún error fue detectado, limpiar los flag de error, limpiando el bit RCSTA<CREN>.
20
Microcontroladores PIC USART: Modo Asíncrono - ReceptorUSART: Modo Asíncrono - Receptor