Vous êtes sur la page 1sur 6

UNIVERSIDAD PRIVADA DEL VALLE

FACULTAD DE TECNOLOGIA
Evaluación
INGENIERIA MECATRONICA
CAMPUS TIQUIPAYA

MICROPROCESADORES I

Informe de Practica de Laboratorio


Nº 5

PUERTO SERIAL UART

Grupo “A”

Estudiante: Torrez Challapa Aldrin


Marcelo
Docente: Ing. Ariel Quezada

Cochabamba 16 de octubre

Gestión II – 2019
1. Competencias

El estudiante:
Tendrá la capacidad de configurar el puerto serial del microcontrador,
enviar y recibir datos.
2. Marco teórico

El puerto serie en la placa

En el puerto serie tenemos dos líneas, Tx y Rx. Estas líneas se deben cruzar para
comunicar dos dispositivos, es decir, el Tx del dispositivo 1 debe conectarse al Rx del
dispositivo 2. El Tx del dispositivo 2 debe conectarse al Rx del dispositivo 1. Además ambos
dispositivos deben compartir una masa común.

En ocasiones podemos encontrar dispositivos en los que solo existe el Tx. Esto puede ser
debido a que ese dispositivo sólo envía datos, no necesita recibir. Un ejemplo puede ser un
sensor o un receptor GPS.

La UART

Para enviar los datos a las líneas debemos usar un hardware que esté diseñado para llevar
a cabo esa tarea y en este caso lo llamamos UART. Esta se encargará de leer datos cuando
llegan, generar y gestionar interrupciones, enviar datos y gestionar los tiempos de bit. En
general la UART se encarga de hacer todo el trabajo por nosotros.
SI usamos un microcontrolador, es muy posible que no necesitemos hacer nada especial
ya que la UART estará integrada en el propio microcontrolador. Si usamos una FPGA o
similar es posible que tengamos que diseñar el hardware de la UART o usar un diseño ya
existente.

El funcionamiento de la UART es el mismo en todos los dispositivos ya que sino fuera así,
no se podrían comunicar entre sí.

Tiempo de bit
El tiempo de bit no es otra cosa que el tiempo que mantenemos un bit en la línea de transmisión.

Su cálculo es bastante sencillo ya que está relacionado con el baudrate. Este último es el que
nos indica el número de bits que podemos enviar en un segundo.

Por ejemplo, una comunicación serie puede ser a 9600 baudios, es decir que se pueden
transmitir hasta 9600 bits en un segundo.

El calculo del tiempo de bit es sencillo ya que es el inverso del baudrate.


Es clave que ambos dispositivos que se encuentran conectados por medio de un puerto serie,
usen el mismo baudrate, en caso contrario no se entenderán y no se podrá llevar a cabo la
comunicación

3. Materiales y equipos

4. Procedimiento

Parte 1

Configurar el puerto serial para trabajar en 9600 1N8, en el microcontrolador y el


computador. Enviar el abecedario desde el microcontrolador, con un retardo de
100 ms entre cada letra.

Parte 2

Enviar datos desde el computador por el puerto serial. Mostrar en el byte bajo del
dato recibido en el display de 7 segmentos (0 a F).
Parte 3

Implementar el sistema de comunicación con el computador usando el


puerto serial. Leer datos del puerto del microcontrolador y escribir datos en
un segundo puerto del microcontrolador, usando un programa en el
computador.

5. Código

PROGRAMA 1
#include <avr/io.h>
#define F_CPU 16000000
#include <util/delay.h>
#define UsartBaudRate 9600

#define BaudUBRR (((F_CPU / (UsartBaudRate * 16UL)))-1)


int main(void)
{
uint8_t datoTx;
UBRR0H = (BaudUBRR>>8); //cargar valor de baudRate. Byte alto
UBRR0L = BaudUBRR; // Byte bajo
UCSR0B |= (1<<TXEN0); // Habilitar transmision
UCSR0C |= (1<<UCSZ01)|(1<<UCSZ00); // 8 bits de datos
unsigned char letras[]
={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S
','T','U','V','W','Y','Z'};
while (1)
{
for (int i=0;i<25;i++)
{
datoTx=letras[i];
while((UCSR0A & (1<<UDRE0)) == 0); // Esperar que se haya
enviado ultimo dato
UDR0 = datoTx; // Escribir dato en el registro de transmision
_delay_ms(100);
}
}
}
PROGRAMA 2
#include <avr/io.h>
#define F_CPU 16000000
#include <util/delay.h>
#define UsartBaudRate 9600
#define BaudUBRR (((F_CPU / (UsartBaudRate * 16UL)))-1)

int main(void)
{
DDRB=0b00001111;
DDRC=0b00000111;

uint8_t datoRx;
UBRR0H = (BaudUBRR>>8); //cargar valor de baudRate. Byte alto
UBRR0L = BaudUBRR; // Byte bajo
UCSR0B |= (1<<RXEN0)|(1<<TXEN0); // Habilitar transmision y recepcion
UCSR0C |= (1<<UCSZ01)|(1<<UCSZ00); // 8 bits de datos
while (1)
{
while((UCSR0A & (1<<RXC0)) == 0); // Esperar que llegue ultimo
dato
datoRx = UDR0; // Leer dato recibido
int numero=datoRx&0xF;
int
numeros[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67,0x77,0x7C,0x39,0
x5E,0x79,0x71};
PORTB=numeros[numero]&0xF;
PORTC=(numeros[numero]>>4);
_delay_ms(100);
}
}

6. Esquema

7. Conclusiones

En esta practica se logró simular las dos partes del laboratorio en proteus,
el programa realizado en atmel funciono de manera correcta en la
simulacion. Se armaron ambas partes fisicamente, la primera funciono
correctamente al igual que la segunda mas no la tersera que se nos
presentaron varias dificultades al momento de realizar el programa.

8. Recomendaciones

Podemos mensionar como principal recomendación el buen uso del material de


laboratorio asi como un correcto conocimiento de programacion ya que es una
parte muy importante de la materia la buena manera de programacion.

9. Cuestionario

Explique el funcionamiento del puerto serial del microcontrolador.

Un puerto Serial es un modulo de comunicación digital para un sistema


embebido.Es decir, permite la comunicación entre dos dispositivos digitales.
Cuenta con dos conexiones, RX y TX. Lo que nos indica los modos de
comunicación que puede manejar, Full-duplex, Duplex y Simplex. Además
podemos considerar como su principal ventaja a la sencillez de su protocolo
de comunicación. Sin embargo también tiene desventajas como que sólo se
puede comunicar a un puerto dos dispositivos.

Explique la configuración del puerto serial

UART – Universal Asyncronos Receiver and Transmitter que en español se


traduciría como Transceptor Asíncrono.
Una UART contiene, en su estructura interna, un generador de paridad,
registros de corrimiento, oscilador variable (para generar el BAUD),
verificadores de las tres condiciones y lógica de control.
Para configurar al modulo se requiere indicar la velocidad de operación. Los
BAUDios que es una medida de cuantos bits por segundo se van a transmitir,
se configuran mediante un registro de propósito específico. Dependiendo del
lenguaje de programación la configuración puede ser relativamente sencilla.
En el caso de Arduino se haría con la instrucción Serial.begin(9600).
También es necesario configurar cuantos bits de parada y si habrá o no bit
de paridad. Una de las configuraciones más usadas para un puerto serial es:
 8 bits de datos
 1 bit de parada
 Sin bit de paridad
 1 bit de inicio
 Velocidad de 9600 BAUD
Para que pueda haber una sincronización de los datos enviados, se requiere
que ambos dispositivos que usen el mismo puerto serial, tengan la misma
configuración.
El modo de comunicación para un puerto serial,se refiere a la forma en la
que se envían y reciben los paquetes de información. De acuerdo al tipo de
conexión, una UART tiene separadas las lineas de transmisión y recepción.
Esta característica le permite poder operar los tres modos de comunicación
asíncrona que existen. Los modos de comunicación son los siguientes:

 Full-duplex. Significa que puede transmitir y recibir simultáneamente.


 Half-duplex. O sólo transmite o sólo recibe.
 Simplex. Sólo se dedica a transmitir información binaria

Vous aimerez peut-être aussi