Sie sind auf Seite 1von 16

INSTITUTO POLITÉCNICO NACIONAL

Escuela Superior de Ingeniería Mecánica y Eléctrica


UNIDAD ZACATENCO

Ingeniería en Comunicaciones y Electrónica

Aca demia de Computaci ó n


Microprocesadores

PRÁCTICA NO. 9
“USART”

Alumno: Mera Zúñiga Yair Gersain


Docente: José Luis Bravo León
GRUPO: 6CM6
Boleta: 2016301066
Periodo: 2018-2

Fecha de entrega: 1 de junio de 2018


Título del Trabajo Numero de trabajo

I. OBJETIVOS
-Transmisión y Recepción serie a través del módulo USART.
-Analizar los diagramas de flujo empleados para la transmisión y recepción de datos.
-Realizar las instrucciones en ensamblador para programarlo en el PIC18F4550
-Configurar los diferentes registros que se toman en cuenta.

II. INTRODUCCIÓN TEÓRICA


Comunicación Serial
La comunicación serial es un protocolo muy común (no hay que confundirlo con el
Bus Serial de Comunicación, o USB) para comunicación entre dispositivos que se
incluye de manera estándar en prácticamente cualquier computadora.
El concepto de comunicación serial es sencillo. El puerto serial envía y recibe bytes
de información un bit a la vez. Aun y cuando esto es más lento que la comunicación
en paralelo, que permite la transmisión de un byte completo por vez, este método
de comunicación es más sencillo y puede alcanzar mayores distancias.
Típicamente, la comunicación serial se utiliza para transmitir datos en formato
ASCII. Para realizar la comunicación se utilizan 3 líneas de transmisión:
(1) Tierra (o referencia)
(2) Transmisor
(3) Receptor
Debido a que la transmisión es asincrónica, es posible enviar datos por una línea
mientras se reciben datos por otra. Existen otras líneas disponibles para
realizar handshaking, o intercambio de pulsos de sincronización, pero no son
requeridas. Las características más importantes de la comunicación serial son la
velocidad de transmisión, los bits de datos, los bits de parada, y la paridad.
a. Velocidad de Transmisión (baud rate): Indica el número de bits por
segundo que se transfieren, y se mide en baudios (bauds). Por ejemplo, si el
protocolo hace una llamada a 4800 ciclos de reloj, entonces el reloj está
corriendo a 4800 Hz, lo que significa que el puerto serial está muestreando
las líneas de transmisión a 4800 Hz.
b. Bits de Datos: Se refiere a la cantidad de bits en la transmisión. Cuando
la computadora envía un paquete de información, el tamaño de ese paquete
no necesariamente será de 8 bits. Las cantidades más comunes de bits por
paquete son 5, 7 y 8 bits.
c. Bits de parada: Usado para indicar el fin de la comunicación de un solo
paquete. Los valores típicos son 1, 1.5 o 2 bits. Debido a la manera como se
transfiere la información a través de las líneas de comunicación y que cada

2
Título del Trabajo Numero de trabajo

dispositivo tiene su propio reloj, es posible que los dos dispositivos no estén
sincronizados.
d. Paridad: Es una forma sencilla de verificar si hay errores en la
transmisión serial. Existen cuatro tipos de paridad: par, impar, marcada y
espaciada.
COMUNICACIÓN USART CON PIC18F4550
A continuación, se describen las características de este módulo USART.

 Operación Síncrona y Asíncrona.


 Operación Full Dúplex en modo Asíncrono.
 Operación Half Dúplex en operación Síncrona Maestro-Esclavo.
 Operación de 8 o 9 bits.
 Generador de Baud-Rate de Alta y Baja
 Calibración Automática de Velocidad de Baudios.
 Detección Automática de Recepción de datos.
 Detección de errores de OverRun y Frame (datos sobrescritos y
dato invalido respectivamente).
 2 Interrupciones independientes; TX completado, RX completado.

En las siguientes imágenes se muestran los registros involucrados al USART.

3
Título del Trabajo Numero de trabajo

4
Título del Trabajo Numero de trabajo

CONFIGURACIÓN DE BAUD-RATE.
Para una correcta Transmisión/Recepción y sin pérdida de datos, es necesario configurar
correctamente el Baud-Rate a través de los registros SPBRGH y SPBRG. En la siguiente
tabla se muestra las ecuaciones para los modos Síncronos y Asíncronos.

Vamos a realizar un ejemplo para despejar un poco nuestras dudas. Si tenemos


una Fosc=48Mhz y queremos unos Baudios de 9600 bps. Calcularemos
el valor que debemos escribir en el registro SPBRG en modo 8 bits y baja
Velocidad; BRG=0 y BRG16=0, con la fórmula vista anteriormente.

¿Cómo podemos apreciar el resultado no es exacto, esto nos lleva a calcular


el error con la siguiente ecuación?

5
Título del Trabajo Numero de trabajo

III. EQUIPO Y MATERIAL


- Computadora Personal
- Tarjeta del Microncontrolador 18F4550
- Osciloscopio
- Modulo Bluetooth HC06
- Motor DC
- Transistor Darlington
- Resistencia de 10k y 100
- BCD a 7 segmentos
- Aplicación Bluetooth SPP en celular

IV. DESARROLLO
4.1 Arma el siguiente circuito.

4.2 Elabore un programa que transmita en forma continua un carácter “#” (23H) a
través del puerto de comunicación USART.
El programa contemplará la siguiente estructura:
 Un programa principal encargado de manejar las siguientes subrutinas:
a) Cpuertos.- Para la configuración de puertos
b) Cusart.- Para configurar el USART
c) TXbyte.- Para la transmisión de un carácter
4.3 Anexe para cada diagrama el archivo .LST generado en la compilación.

6
Título del Trabajo Numero de trabajo

4.4 Los diagramas de flujo propuestos se muestran a continuación:

Subrutina Cpuertos:

Encargada de la configuración
de puertos.

PORTA: 8 líneas de salida.


PORTB: 8 líneas de salida
PORTC: 8 líneas de salida
PORTD: 8 líneas de salida
Habilitación de INT0

Hace llamado a las subrutinas Cpuertos encargada de


la programación de puertos y Cusart para la
configuración del USART.

Almacena el dato de prueba en el registro Rdato y hace


llamado a la subrutina Txbyte para la transmisión del
dato de prueba.

Subrutina Cusart

Desahabilita el módulo SSP. Programa los bits 6 y 7 del


PORTC para transmisión y recepción serie. Configura el
BAUD-RATE a 9600 bps.

Habilita la transmisión con BAUD RATE alto. Habilita el


puerto serial para recepción continua

Subrutina Txbyte

Monitorea el bit TRMT hasta la transmisión anterior


haya concluido. Carga el dato a transmitir almacenado
previamente en el regsitro Rdato y los transfiere al
registro de transmisión TXREG.

7
Título del Trabajo Numero de trabajo

Subrutina Rxbyte

Monitorea el bit RCIF hasta que una recepción se ha


realizado. Carga el dato recibido y lo transfiere al
registro Rdato.

4.5 A continuación, presentamos el archivo .LST generado al compilarse el


programa:

Este es el programa que se realizó de acuerdo a los diagramas de flujo que ya


estaban previamente establecidos. Se compiló y en este caso como no activamos
el PORTB entonces no podíamos generar estados altos y bajos con el Deep Switch
y es por eso que solo teníamos que ver la respuesta a través del osciloscopio.

8
Título del Trabajo Numero de trabajo

V. Prueba de Transmisión
5.1 Coloque la punta del osciloscopio en la línea de transmisión TX del
microcontrolador.
5.2 Verifique que la señal en el osciloscopio corresponda a la señal mostrada en la
figura anexa.

La siguiente imagen muestra el resultado en el osciloscopio:

5.3 Mida el ancho del pulso del bit de inicio. T = 104 µS.

9
Título del Trabajo Numero de trabajo

5.4 A partir del tiempo medido, calcule el BAUD RATE y verifique que sea 9600 bps.
1 𝑏𝑖𝑡 → 104 𝜇𝑠
? → 1𝑠𝑒𝑔
(1𝑠𝑒𝑔)(1𝑏𝑖𝑡)
𝑇 = 104 𝜇𝑆 → 𝑏𝑝𝑠 = = 9615.38 𝑏𝑝𝑠
104 𝜇𝑠

Ahora vemos que no salió exacto como esperábamos con 9600 bps. Lo que
podemos hacer es calcular el error en porcentaje.

𝐵𝐴𝑈𝐷𝐼𝑂𝑆 9600
𝐸𝑟𝑟𝑜𝑟 [%] = ( − 1) 𝑥100 = ( − 1) 𝑥100 = 0.1599 %
𝐵𝐴𝑈𝐷𝑚𝑒𝑑𝑖𝑑𝑜 9615.38

5.5 Modifique el programa fuente para transmitir un carácter “a”.

Para el carácter ‘a’ en código binario sería: 01100001

5.6 Grafique la forma de onda obtenida en el osciloscopio indicando bit de inicio, de


final y los 8 bits datos.

1 0 0 0 0 1 1 0

BIT DE FINAL
BIT DE INICIO
8 BITS DE DATOS

10
Título del Trabajo Numero de trabajo

VI. PRUEBA DE RECEPCIÓN


6.1 Modifique el programa principal de acuerdo al siguiente diagrama:

6.2 Conecte la línea de recepción RX con la transmisión TX.


6.3 Con el osciloscopio verifique que el dato transmitido corresponda al dato
recibido con rotación de nibbles.

BIT DE INICIO

8 BITS DE DATOS BIT DE FINAL

Aquí se puede mostrar cómo es correcto el dato recibido con la rotación de nibbles.

11
Título del Trabajo Numero de trabajo

VII. Aplicación.
Elabore un programa de acuerdo al diagrama de flujo mostrado a continuación, de
forma que reciba a través del puerto USART un carácter que determine la velocidad
de giro del motor conectado en la línea 1 del PORTA.

Programa Principal. Hace llamado a las subrutinas para


configurar los puertos, configuración del USART.

Utiliza la subrutina LEER para establecer la velocidad de


giro del motor que es utilizado en la rutina PWM.

SI
Subrutina LEER.
NO
Utiliza la subrutina Rxbyte para recibir la
velocidad de giro del motor. La rutina espera
por el comando de velocidad y a partir de este
establece los valores para los registros RH y RL.

Subrutina PWM.

Utiliza los registros RH y RL para establecer los


tiempos en estado alto y en estado bajo de la
señal de control del motor. Utiliza la rutina
Gtime para generar intervalos de tiempo.

12
Título del Trabajo Numero de trabajo

Subrutina GTime.

Establece los valores de los registros Rth y Rtl


para un tiempo de 1ms. Estos son utilizados en
la subrutina TMR0 el número de veces
establecida en el registro R6.

Subrutina TMR0.

Toma los valore establecidos en los registros


Rtcon, Rth y Rtl generar el tiempo requerido.

Rutina de Servicio Cuenta.

Es ejecutada al aparecer un pulso en la línea de interrupción


INT0. Se encarga de incrementar el registro Rnv que contiene
el número de vueltas.

El contenido del registro Rnv es desplegado en código BCD en


el registro PORTD.

Al término de la rutina de servicio en puesta en cero la


bandera de interrupción INT0IF.

Vector de INTEPRRUPCIÓN.

Establece la ejecución de la rutina de servicio


CUENTA para la interrupción INT0.

13
Título del Trabajo Numero de trabajo

Mostramos el archivo .LST que se compiló el programa:

14
Título del Trabajo Numero de trabajo

Y bueno como evidencia que sirvió el circuito y la programación en el PIC,


mostramos algunas imágenes de todo el circuito:

15
Título del Trabajo Numero de trabajo

VIII. CONCLUSIONES
A lo largo de toda esta práctica logramos de transmitir y recibir ciertos datos que
pedía la práctica y que estaban en un correcto funcionamiento estos puertos
configurados.
Con el uso del osciloscopio pudimos ver las diferentes gráficas que resultaban a
causa de configurar y programar el PIC con MPLAB. En estas gráficas veíamos
como había estados altos y bajos de acuerdo a como se ven los caracteres enviados
de forma binaria y que correspondían en su configuración ASCII y binaria.
Con respecto a la recepción de datos pudimos ver que el estado enviado 0xF0 y
después fue invertido, en su bit de stop, era ocupado por 2 periodos de tiempo y por
eso la gráfica tenía un bit de más. Y al final pudimos entender cómo es que trabajaba
la recepción.
Logramos también realizar la aplicación donde tuvimos que conectar nuestro celular
con el HC-05 (adquirimos este ya que era más barato y tenía más facilidades)
mediante bluetooth para enviar en código ASCII una seria de caracteres de 0 a F
que conforme íbamos elevando el valor, el motor iba acelerando y dando más
vueltas. Esto se logró también enmascarando los bits menos significativos para que
solo pasarán los más significativos al momento de enviarlo al receptor y al final junto
el sensor de luz y los BCD a 7 segmentos veíamos el conteo que iba de menor
velocidad a mayor velocidad.

16

Das könnte Ihnen auch gefallen