SlideShare una empresa de Scribd logo
Universal Synchronous Asynchronous
Los Microcontroladores tienen un Puerto de
comunicaciones seriales llamado Transmisor
Receptor Asincrónico Sincrónico Universal
(USART por las siglas en Ingles) o Interfaz de
Comunicación Serial (SCI). Este puerto puede
ser configurado para
establecer una comunicación
bidireccional asincrónico
simultanea (full dúplex).
Modo Asincrónico
El Puerto serial USART en
modo asincrónico permite comunicación de
datos bidireccionales simultáneos (full duplex).
Esto quiere decir que durante la comunicación
entre dos dispositivos con USART en modo
asincrónico, cada dispositivito puede trasmitir y
recibir datos al
mismo tiempo.
La señal recibida
o trasmitida
consiste de 8 bit
procedido por el
bit de ‘start’ (0) y
seguido por el
bit de ‘stop’ (1).
Este modo es el
más usado ya
que puede
alcanzar mas
a) Simple comunicación de datos usando dos bit de
haciendo que los 8 bit sobrantes puedan ser el dato
b) Comunicación de 11 bit haciendo los 9 bit de datos y dos de bit
de ‘start’ y ‘stop’.
ersal Synchronous Asynchronous Receiver Transmitter
os Microcontroladores tienen un Puerto de
llamado Transmisor
Sincrónico Universal
(USART por las siglas en Ingles) o Interfaz de
Comunicación Serial (SCI). Este puerto puede
modo asincrónico permite comunicación de
datos bidireccionales simultáneos (full duplex).
Esto quiere decir que durante la comunicación
entre dos dispositivos con USART en modo
dispositivito puede trasmitir y
distancia que en modo sincrónico, aunque sea
un poco más lento.
El puerto serial tiene registros especiales para
manipular los datos para ser transmitidos o
recibidos. Estos son los registros TXREG y
RCREG. TXREG es el registro
para guardar datos para ser
transmitidos hac
RCREG es el registro que
guarda el dato recibido por la
pata RX.
Modo
EL Puerto serial USART en modo
puede ser configurado como:
COMUNICACION DE DATOS BIDIRECCIONALES
SIN SIMULTANEADAD.
(half duplex).
Simple comunicación de datos usando dos bit de start y stop,
haciendo que los 8 bit sobrantes puedan ser el dato
Comunicación de 11 bit haciendo los 9 bit de datos y dos de bit
de ‘start’ y ‘stop’.
Transmitter
modo sincrónico, aunque sea
El puerto serial tiene registros especiales para
los datos para ser transmitidos o
recibidos. Estos son los registros TXREG y
RCREG. TXREG es el registro
para guardar datos para ser
transmitidos hacia la pata TX.
RCREG es el registro que
guarda el dato recibido por la
pata RX.
Modo Sincrónico
EL Puerto serial USART en modo sincrónico
puede ser configurado como: -a)
DE DATOS BIDIRECCIONALES
b)
TRANS
MISOR
O
RECEPT
OR DE
DATOS
start y stop,
haciendo que los 8 bit sobrantes puedan ser el dato
Comunicación de 11 bit haciendo los 9 bit de datos y dos de bit
29 Modulo USART
Curso de Hi tech Compiler for PIC18
Y SENALES DE RELOJ SIMULANEAMENTE.
c) COMUNICACIÓN ENTRE DOS DISPOSITIVOS
QUE ESTEN EN MODO MASTER-SLAVE.
Velocidad de Comunicación
El reloj que
determina la
velocidad de
trasmisión del
puerto serial es
derivado del
oscilador principal
del
microcontrolador. Su valor puede ser ajustado
con el registro SPBRG y el bit BRGH en el
registro TXSTA. La transmisión de velocidad en
modo Asincrónico es:
Fórmula para Alta Velocidad:
Cuando se usa una velocidad de reloj muy alta y
se desea tener una alta transmisión de
velocidad se usa esta fórmula.
ܵܲ‫ܩܴܤ‬ ൌ ൬
݂‫ܿݏ݋‬
‫ܦܷܣܤ‬ ∗ 16
൰ െ 1
Fórmula para baja Velocidad:
Cuando se usa una velocidad de reloj muy alta y
se desea tener una baja transmisión de
velocidad se usa esta fórmula.
ܵܲ‫ܩܴܤ‬ ൌ ൬
݂‫ܿݏ݋‬
‫ܦܷܣܤ‬ ∗ 64
൰ െ 1
Norma RS232
La Norma RS-232 fue definida para conectar un
ordenador a un modem. Además de
transmitirse los datos de una forma serie
asíncrona son necesarias una serie de señales
adicionales, que se definen en la norma. Las
tensiones empleadas están comprendidas entre
+15/-15 voltios.
Conexión de un microcontrolador al puerto
serie del PC
Para conectar el PC a un microcontrolador por
el puerto serie se utilizan las señales Tx, Rx y
GND. El PC utiliza la norma RS232, por lo que los
niveles de tensión de los pines están
comprendidos entre +15 y -15 voltios. Los
microcontroladores normalmente trabajan con
niveles TTL (0-5v). Es necesario por tanto
intercalar un circuito que adapte los niveles:
El conector DB9 del PC
En los PCs hay conectores DB9 macho, de 9
pines, por el que se conectan los dispositivos al
puerto serie. Los conectores hembra que se
enchufan tienen una colocación de pines
diferente, de manera que se conectan el pin 1
del macho con el pin 1 del hembra, el pin2 con
el 2, etc...
Los datos y señales en el transmisor sincrónico salen del puerto
serial. La transmisión del 9vo bit es opcional.
30 Modulo USART
Curso de Hi tech Compiler for PIC18
La información asociada a cada uno de los pines es la
siguiente:
El chip MAX 232
Este chip permite adaptar los niveles RS232 y TTL,
permitiendo conectar un PC con un microcontrolador.
Sólo es necesario este chip y 4 condensadores
electrolíticos de 22 micro-faradios. El esquema es el
siguiente:
Funcion en Hi tech compiler
Los requerimientos para poder trabajar con el
modulo serial que contiene el microcontrolador en
modo asincrónico son los siguientes:
Esquema de conexión de un MAX232
///////////////////////////////////////////////////////////////////////
// Configuración del USART ///
///////////////////////////////////////////////////////////////////////
OpenUSART(USART_TX_INT_OFF &//Interrupción por Transmisión apagado
USART_RX_INT_OFF &//Interrupción por Recepción Apagado
USART_ASYNCH_MODE &//Modo Asincronico
USART_EIGHT_BIT &//8-bit de transmission
USART_CONT_RX &//Recepción Continua
USART_BRGH_HIGH, //Alta velocidad de baudios
25); //para alta Velocidad:
// FOSC / (16 * (spbrg + 1))
// spbrg=(FOS/baud*16)-1
//Para baja Velocidad:
// FOSC / (64 * (spbrg + 1))
/*---------------------Fin de Conf. USART----------------------------*/
31 Modulo USART
Curso de Hi tech Compiler for PIC18
La primera práctica a
realizar es enviar
cadenas de caracteres hacia la computadora, teniendo un
software que fue realizado en Microsoft Visual C# 2010 Express,
guardara todos los caracteres que enviemos en forma de string.
Las funciones Básicas de Recibir o enviar datos son las siguientes:
char DataRdyUSART(void);
Regresa el estado del bit RCIF, si a recibido datos
Regresara 1, si no tiene datos regresara 0.
void getsUSART(unsigned char * buffer, unsigned char
length );
buffer: Apunta a la locación donde caracteres a
recibir son para ser guardado.
Length: Numero de bytes para leer del USART
void OpenUSART(unsigned char config, unsigned char
spbrg);
config:
Interrupción de Transmisión:
USART_TX_INT_ON Interrupción por Transmisión ON
USART_TX_INT_OFF Interrupción por Transmisión OFF
Interrupción por Recepción:
USART_RX_INT_ON Interrupción por Recepción ON
USART_RX_INT_OFF Interrupción por Recepción OFF
Modo del USART:
USART_ASYNCH_MODE Modo Asincrónico
USART_SYNCH_MODE Modo Sincrónico
Tamaño de datos:
USART_EIGHT_BIT 8-bit Transmision/recepcion
USART_NINE_BIT 9-bit Transmision/recepcion
Selector de Maestro/Esclavo
USART_SYNC_SLAVE Modo Esclavo Sincrónico
Aprenderás hacer la comunicación necesaria
para transmitir datos vía serial hacia una
computadora.
Material necesario:
1 PIC18F2550
1 MAX232
4 Capacitores electrolíticos de 1uF
1 conector DB9 hembra
1 Res. 10Kohm
Fuente de 5 volts
Cable
Protoboard
Pagina recomendada:
http://ucursos.webs.com
Esta página ofrece una variedad
de proyectos realizados con
microcontroladores PIC, puedes
encontrar videos introductorios,
imágenes de Robots, Manuales,
foros donde puede comentar
dudas.
Y mucho Mas!!!
32 Modulo USART
Curso de Hi tech Compiler for PIC18
USART_SYNC_MASTER Modo Maestro Sincrónico
Modo de Recepción:
USART_SINGLE_RX Sola Recepción
USART_CONT_RX Recepción Continua
Baud rate:
USART_BRGH_HIGH Alta rate
USART_BRGH_LOW Baja rate
Spbrg:
0 a 255
Fórmula para Alta Velocidad:
Cuando se usa una velocidad de reloj muy alta y se desea tener una alta transmisión de velocidad se usa
esta fórmula.
ܵܲ‫ܩܴܤ‬ ൌ ൬
݂‫ܿݏ݋‬
‫ܦܷܣܤ‬ ∗ 16
൰ − 1
Fórmula para baja Velocidad:
Cuando se usa una velocidad de reloj muy alta y se desea tener una baja transmisión de velocidad se usa
esta fórmula.
ܵܲ‫ܩܴܤ‬ = ൬
݂‫ܿݏ݋‬
‫ܦܷܣܤ‬ ∗ 64
൰ − 1
Programa que contiene el Microcontrolador PIC18:
////////////////////////////////////////////////////////
// USO DEL USART ////
//Autor: george.manson.69 ////
//Lugar: Mexico ////
//Compilador: HI TECH PIC18 (LITE MODE) ////
////////////////////////////////////////////////////////
#include<htc.h>
#include<stdio.h>
/////////////////////////////////////////////////////////////
//Configuracion para trabajar Con oscilador interno de 8Mhz
__CONFIG(1,INTIO & FCMDIS & IESODIS & PLLDIV5 & PLLPOSTDIV2 & CPUDIV1 & USBOSC);
/////////////////////////////////////////////////////////////
__CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BORV45 & WDTPS32K);
__CONFIG(3,PBDIGITAL & LPT1DIS & MCLREN);
__CONFIG(4,STVRDIS & LVPDIS & ICPORTDIS & DEBUGDIS);
__CONFIG(5,UNPROTECT);
__CONFIG(6,UNPROTECT);
__CONFIG(7,UNPROTECT);
//////////////////////////////
//Frecuencia FOSC 8Mhz
//////////////////////////////
#define _XTAL_FREQ 8000000
33 Modulo USART
Curso de Hi tech Compiler for PIC18
//////////////////////////////////////////////
//Para usar el printf
//////////////////////////////////////////////
void putch(unsigned char byte) {
/* Salida de un byte */
while(!TXIF) /* Estbalece que el regitro esta vacio*/
continue;
TXREG = byte;
}
/////////////////////////////////////////////////
//Funcion de interrupcion
//Si no se usa simplemente no hacemos nada...
//Esto sirve para direccionar lo los datos
//en un lugar muy cercano al Inicio de la memoria
//de datos
////////////////////////////////////////////////
static void interrupt
isr(void){}
//////////////////////////////
//FUNCION PRINCIPAL
//////////////////////////////
void main(void){
////////////////////////////////////////
//Establece Oscilador Interno ////
////////////////////////////////////////
OSCCON=0x70;
NOP();NOP();NOP();NOP();
//////////////////////////////////////////////////////////////////////
// Configuracion de Puertos ///
//////////////////////////////////////////////////////////////////////
TRISC=0x80;
/*---------------------Fin de Conf. Puertos-------------------------*/
///////////////////////////////////////////////////////////////////////
// Configuracion del USART ///
///////////////////////////////////////////////////////////////////////
OpenUSART(USART_TX_INT_OFF &//Interrupcion por Transmision apagado
USART_RX_INT_OFF &//Interrupcion por Recepcion Apagado
USART_ASYNCH_MODE &//Modo Asincronico
USART_EIGHT_BIT &//8-bit de transmision
USART_CONT_RX &//Recepcion Continua
USART_BRGH_HIGH, //Alta velocidad de baudios
25); //para alta Velocidad:
// FOSC / (16 * (spbrg + 1))
// spbrg=(FOS/baud*16)-1
//Para baja Velocidad:
// FOSC / (64 * (spbrg + 1))
/*---------------------Fin de Conf. USART----------------------------*/
printf(" MicroCursos: Disena y Contruyern");
printf("Ejemplo de uso del USARTrn");
printf("Trabajando a una velocidad de: 19200rn");
printf("Con un PIC18F2550 a 8Mhz");
///////////////////////////////////////////////////////////////////////
// FUNCION PRINCIPAL ///
///////////////////////////////////////////////////////////////////////
while(1);
}
/*-------------------------------Fin-----------------------------------*/
34 Modulo USART
Curso de Hi tech Compiler for PIC18
Esquema del Circuito:
Abra el Programa “Terminal RS232” que está ubicada en la carpeta de los proyectos, y después busque
el Puerto y ponga los baudios a 19200, ya que el programa que contiene el Microcontrolador se a puesto
a una velocidad de 19200.
Al tener ya conectado nuestro software al puerto seleccionado, conecte el circuito para ver los
resultados:
35 Modulo USART
Curso de Hi tech Compiler for PIC18
La siguiente practica es muy sencilla es transformar el resultado de una operación a formato string para
luego ser enviado por el serial, y después visualizarlo en ‘TerminalRS232’
Nuestro programa es muy sencillo, solo falta de modificar el programa anterior para agregar la siguiente
línea:
Recuerde definir las variables “var,var1,var2” como tipo int.
int var,var1,var2;
Al compilar y simular podemos apreciar en nuestro software el resultado.
printf(" MicroCursos: Disena y Contruyern");
printf("Ejemplo de uso del USARTrn");
printf("Trabajando a una velocidad de: 19200rn");
printf("Con un PIC18F2550 a 8Mhzrn");
var1=50;
var2=100;
var=var1+var2;
printf("var = %u + %urn",var1,var2);
printf("var = %urn",var);
///////////////////////////////////////////////////////////////////////
// FUNCION PRINCIPAL ///
///////////////////////////////////////////////////////////////////////
while(1);
}
/*-------------------------------Fin-----------------------------------*/
Nota: Con la función printf podemos
hacer las conversiones necesarias
para mostrarlo como texto, %u
corresponde a valores unsigned char,
char, unsigned int, int
36 Modulo USART
Curso de Hi tech Compiler for PIC18
Ahora haremos un conteo de 0 a 100, en este caso solo agregaremos la sentencia for para realizar un
conteo limitado.
Usando la misma variable var para usarlo con el for
Este programa hará que cuente de 0 a 100 y después visualizarlo en ‘Terminal Rs232’
Nota: Recuerde que la función printf puede causar retraso en el envío, y tardar un poco más tiempo de lo
previsto, si usted va enviar datos de tipo byte, se recomienda usar la función WriteUSART.
printf(" MicroCursos: Disena y Contruyern");
printf("Ejemplo de uso del USARTrn");
printf("Trabajando a una velocidad de: 19200rn");
printf("Con un PIC18F2550 a 8Mhzrn");
var1=50;
var2=100;
var=var1+var2;
printf("var = %u + %urn",var1,var2);
printf("var = %urn",var);
printf("Conteo:rn");
for(var=0;var<=100;var++){
printf("%ur",var);
__delay_ms(10);
}
///////////////////////////////////////////////////////////////////////
// FUNCION PRINCIPAL ///
///////////////////////////////////////////////////////////////////////
while(1);
}
/*-------------------------------Fin-----------------------------------*/

Más contenido relacionado

La actualidad más candente

Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
Derlis Hernandez Lara
 
Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03
Hamiltonn Casallas
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
Juan Navarrete Guzman
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04
Hamiltonn Casallas
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
Derlis Hernandez Lara
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01
Hamiltonn Casallas
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
guestf09168b
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
Hamiltonn Casallas
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
Luis Zurita
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
Hamiltonn Casallas
 
Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Alejandra Ruiz
 
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09
Hamiltonn Casallas
 

La actualidad más candente (20)

Proyecto4
Proyecto4Proyecto4
Proyecto4
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
 
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
 
Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550
 
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 

Similar a Usart 3

Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
Fernando Aparicio Urbano Molano
 
Comunicación Serial
Comunicación SerialComunicación Serial
Comunicación Serial
SistemadeEstudiosMed
 
Unidad V
Unidad VUnidad V
Usart PIC config LANDA
Usart PIC config LANDAUsart PIC config LANDA
Usart PIC config LANDA
dave
 
Comunicación RS-232
Comunicación RS-232Comunicación RS-232
Comunicación RS-232Rubén Loredo
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
Lopez Guzman
 
motor paso a paso
 motor paso a paso motor paso a paso
motor paso a paso
Hector Noguez Cruz
 
DIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMADIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMA
Lilibeth de los Angeles
 
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Cristina Urdiales
 
Puertoserial[1]
Puertoserial[1]Puertoserial[1]
Puertoserial[1]
henrymiranda00
 
Proyecto BOTTLER
Proyecto BOTTLERProyecto BOTTLER
Proyecto BOTTLER
Jomicast
 
Comunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PCComunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PC
Fernando Cahueñas
 
Conexiones en-serie-microcontroladores
Conexiones en-serie-microcontroladoresConexiones en-serie-microcontroladores
Conexiones en-serie-microcontroladores
Danny Tierra
 
Clase USART
Clase USARTClase USART
Arquitectura decomputadoras
Arquitectura decomputadorasArquitectura decomputadoras
Arquitectura decomputadoras
LuiFer Cvil
 
Hoja de datos USB2TTL
Hoja de datos USB2TTLHoja de datos USB2TTL
Hoja de datos USB2TTL
alepusto
 
pre4_2.2.docx
pre4_2.2.docxpre4_2.2.docx

Similar a Usart 3 (20)

Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
 
Txusart
TxusartTxusart
Txusart
 
Comunicación Serial
Comunicación SerialComunicación Serial
Comunicación Serial
 
Unidad V
Unidad VUnidad V
Unidad V
 
Usart PIC config LANDA
Usart PIC config LANDAUsart PIC config LANDA
Usart PIC config LANDA
 
Comunicación RS-232
Comunicación RS-232Comunicación RS-232
Comunicación RS-232
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
motor paso a paso
 motor paso a paso motor paso a paso
motor paso a paso
 
DIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMADIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMA
 
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
 
Puertoserial[1]
Puertoserial[1]Puertoserial[1]
Puertoserial[1]
 
Proyecto BOTTLER
Proyecto BOTTLERProyecto BOTTLER
Proyecto BOTTLER
 
Comunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PCComunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PC
 
Proyecto de micros
Proyecto de microsProyecto de micros
Proyecto de micros
 
Rs232
Rs232Rs232
Rs232
 
Conexiones en-serie-microcontroladores
Conexiones en-serie-microcontroladoresConexiones en-serie-microcontroladores
Conexiones en-serie-microcontroladores
 
Clase USART
Clase USARTClase USART
Clase USART
 
Arquitectura decomputadoras
Arquitectura decomputadorasArquitectura decomputadoras
Arquitectura decomputadoras
 
Hoja de datos USB2TTL
Hoja de datos USB2TTLHoja de datos USB2TTL
Hoja de datos USB2TTL
 
pre4_2.2.docx
pre4_2.2.docxpre4_2.2.docx
pre4_2.2.docx
 

Usart 3

  • 1. Universal Synchronous Asynchronous Los Microcontroladores tienen un Puerto de comunicaciones seriales llamado Transmisor Receptor Asincrónico Sincrónico Universal (USART por las siglas en Ingles) o Interfaz de Comunicación Serial (SCI). Este puerto puede ser configurado para establecer una comunicación bidireccional asincrónico simultanea (full dúplex). Modo Asincrónico El Puerto serial USART en modo asincrónico permite comunicación de datos bidireccionales simultáneos (full duplex). Esto quiere decir que durante la comunicación entre dos dispositivos con USART en modo asincrónico, cada dispositivito puede trasmitir y recibir datos al mismo tiempo. La señal recibida o trasmitida consiste de 8 bit procedido por el bit de ‘start’ (0) y seguido por el bit de ‘stop’ (1). Este modo es el más usado ya que puede alcanzar mas a) Simple comunicación de datos usando dos bit de haciendo que los 8 bit sobrantes puedan ser el dato b) Comunicación de 11 bit haciendo los 9 bit de datos y dos de bit de ‘start’ y ‘stop’. ersal Synchronous Asynchronous Receiver Transmitter os Microcontroladores tienen un Puerto de llamado Transmisor Sincrónico Universal (USART por las siglas en Ingles) o Interfaz de Comunicación Serial (SCI). Este puerto puede modo asincrónico permite comunicación de datos bidireccionales simultáneos (full duplex). Esto quiere decir que durante la comunicación entre dos dispositivos con USART en modo dispositivito puede trasmitir y distancia que en modo sincrónico, aunque sea un poco más lento. El puerto serial tiene registros especiales para manipular los datos para ser transmitidos o recibidos. Estos son los registros TXREG y RCREG. TXREG es el registro para guardar datos para ser transmitidos hac RCREG es el registro que guarda el dato recibido por la pata RX. Modo EL Puerto serial USART en modo puede ser configurado como: COMUNICACION DE DATOS BIDIRECCIONALES SIN SIMULTANEADAD. (half duplex). Simple comunicación de datos usando dos bit de start y stop, haciendo que los 8 bit sobrantes puedan ser el dato Comunicación de 11 bit haciendo los 9 bit de datos y dos de bit de ‘start’ y ‘stop’. Transmitter modo sincrónico, aunque sea El puerto serial tiene registros especiales para los datos para ser transmitidos o recibidos. Estos son los registros TXREG y RCREG. TXREG es el registro para guardar datos para ser transmitidos hacia la pata TX. RCREG es el registro que guarda el dato recibido por la pata RX. Modo Sincrónico EL Puerto serial USART en modo sincrónico puede ser configurado como: -a) DE DATOS BIDIRECCIONALES b) TRANS MISOR O RECEPT OR DE DATOS start y stop, haciendo que los 8 bit sobrantes puedan ser el dato Comunicación de 11 bit haciendo los 9 bit de datos y dos de bit
  • 2. 29 Modulo USART Curso de Hi tech Compiler for PIC18 Y SENALES DE RELOJ SIMULANEAMENTE. c) COMUNICACIÓN ENTRE DOS DISPOSITIVOS QUE ESTEN EN MODO MASTER-SLAVE. Velocidad de Comunicación El reloj que determina la velocidad de trasmisión del puerto serial es derivado del oscilador principal del microcontrolador. Su valor puede ser ajustado con el registro SPBRG y el bit BRGH en el registro TXSTA. La transmisión de velocidad en modo Asincrónico es: Fórmula para Alta Velocidad: Cuando se usa una velocidad de reloj muy alta y se desea tener una alta transmisión de velocidad se usa esta fórmula. ܵܲ‫ܩܴܤ‬ ൌ ൬ ݂‫ܿݏ݋‬ ‫ܦܷܣܤ‬ ∗ 16 ൰ െ 1 Fórmula para baja Velocidad: Cuando se usa una velocidad de reloj muy alta y se desea tener una baja transmisión de velocidad se usa esta fórmula. ܵܲ‫ܩܴܤ‬ ൌ ൬ ݂‫ܿݏ݋‬ ‫ܦܷܣܤ‬ ∗ 64 ൰ െ 1 Norma RS232 La Norma RS-232 fue definida para conectar un ordenador a un modem. Además de transmitirse los datos de una forma serie asíncrona son necesarias una serie de señales adicionales, que se definen en la norma. Las tensiones empleadas están comprendidas entre +15/-15 voltios. Conexión de un microcontrolador al puerto serie del PC Para conectar el PC a un microcontrolador por el puerto serie se utilizan las señales Tx, Rx y GND. El PC utiliza la norma RS232, por lo que los niveles de tensión de los pines están comprendidos entre +15 y -15 voltios. Los microcontroladores normalmente trabajan con niveles TTL (0-5v). Es necesario por tanto intercalar un circuito que adapte los niveles: El conector DB9 del PC En los PCs hay conectores DB9 macho, de 9 pines, por el que se conectan los dispositivos al puerto serie. Los conectores hembra que se enchufan tienen una colocación de pines diferente, de manera que se conectan el pin 1 del macho con el pin 1 del hembra, el pin2 con el 2, etc... Los datos y señales en el transmisor sincrónico salen del puerto serial. La transmisión del 9vo bit es opcional.
  • 3. 30 Modulo USART Curso de Hi tech Compiler for PIC18 La información asociada a cada uno de los pines es la siguiente: El chip MAX 232 Este chip permite adaptar los niveles RS232 y TTL, permitiendo conectar un PC con un microcontrolador. Sólo es necesario este chip y 4 condensadores electrolíticos de 22 micro-faradios. El esquema es el siguiente: Funcion en Hi tech compiler Los requerimientos para poder trabajar con el modulo serial que contiene el microcontrolador en modo asincrónico son los siguientes: Esquema de conexión de un MAX232 /////////////////////////////////////////////////////////////////////// // Configuración del USART /// /////////////////////////////////////////////////////////////////////// OpenUSART(USART_TX_INT_OFF &//Interrupción por Transmisión apagado USART_RX_INT_OFF &//Interrupción por Recepción Apagado USART_ASYNCH_MODE &//Modo Asincronico USART_EIGHT_BIT &//8-bit de transmission USART_CONT_RX &//Recepción Continua USART_BRGH_HIGH, //Alta velocidad de baudios 25); //para alta Velocidad: // FOSC / (16 * (spbrg + 1)) // spbrg=(FOS/baud*16)-1 //Para baja Velocidad: // FOSC / (64 * (spbrg + 1)) /*---------------------Fin de Conf. USART----------------------------*/
  • 4. 31 Modulo USART Curso de Hi tech Compiler for PIC18 La primera práctica a realizar es enviar cadenas de caracteres hacia la computadora, teniendo un software que fue realizado en Microsoft Visual C# 2010 Express, guardara todos los caracteres que enviemos en forma de string. Las funciones Básicas de Recibir o enviar datos son las siguientes: char DataRdyUSART(void); Regresa el estado del bit RCIF, si a recibido datos Regresara 1, si no tiene datos regresara 0. void getsUSART(unsigned char * buffer, unsigned char length ); buffer: Apunta a la locación donde caracteres a recibir son para ser guardado. Length: Numero de bytes para leer del USART void OpenUSART(unsigned char config, unsigned char spbrg); config: Interrupción de Transmisión: USART_TX_INT_ON Interrupción por Transmisión ON USART_TX_INT_OFF Interrupción por Transmisión OFF Interrupción por Recepción: USART_RX_INT_ON Interrupción por Recepción ON USART_RX_INT_OFF Interrupción por Recepción OFF Modo del USART: USART_ASYNCH_MODE Modo Asincrónico USART_SYNCH_MODE Modo Sincrónico Tamaño de datos: USART_EIGHT_BIT 8-bit Transmision/recepcion USART_NINE_BIT 9-bit Transmision/recepcion Selector de Maestro/Esclavo USART_SYNC_SLAVE Modo Esclavo Sincrónico Aprenderás hacer la comunicación necesaria para transmitir datos vía serial hacia una computadora. Material necesario: 1 PIC18F2550 1 MAX232 4 Capacitores electrolíticos de 1uF 1 conector DB9 hembra 1 Res. 10Kohm Fuente de 5 volts Cable Protoboard Pagina recomendada: http://ucursos.webs.com Esta página ofrece una variedad de proyectos realizados con microcontroladores PIC, puedes encontrar videos introductorios, imágenes de Robots, Manuales, foros donde puede comentar dudas. Y mucho Mas!!!
  • 5. 32 Modulo USART Curso de Hi tech Compiler for PIC18 USART_SYNC_MASTER Modo Maestro Sincrónico Modo de Recepción: USART_SINGLE_RX Sola Recepción USART_CONT_RX Recepción Continua Baud rate: USART_BRGH_HIGH Alta rate USART_BRGH_LOW Baja rate Spbrg: 0 a 255 Fórmula para Alta Velocidad: Cuando se usa una velocidad de reloj muy alta y se desea tener una alta transmisión de velocidad se usa esta fórmula. ܵܲ‫ܩܴܤ‬ ൌ ൬ ݂‫ܿݏ݋‬ ‫ܦܷܣܤ‬ ∗ 16 ൰ − 1 Fórmula para baja Velocidad: Cuando se usa una velocidad de reloj muy alta y se desea tener una baja transmisión de velocidad se usa esta fórmula. ܵܲ‫ܩܴܤ‬ = ൬ ݂‫ܿݏ݋‬ ‫ܦܷܣܤ‬ ∗ 64 ൰ − 1 Programa que contiene el Microcontrolador PIC18: //////////////////////////////////////////////////////// // USO DEL USART //// //Autor: george.manson.69 //// //Lugar: Mexico //// //Compilador: HI TECH PIC18 (LITE MODE) //// //////////////////////////////////////////////////////// #include<htc.h> #include<stdio.h> ///////////////////////////////////////////////////////////// //Configuracion para trabajar Con oscilador interno de 8Mhz __CONFIG(1,INTIO & FCMDIS & IESODIS & PLLDIV5 & PLLPOSTDIV2 & CPUDIV1 & USBOSC); ///////////////////////////////////////////////////////////// __CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BORV45 & WDTPS32K); __CONFIG(3,PBDIGITAL & LPT1DIS & MCLREN); __CONFIG(4,STVRDIS & LVPDIS & ICPORTDIS & DEBUGDIS); __CONFIG(5,UNPROTECT); __CONFIG(6,UNPROTECT); __CONFIG(7,UNPROTECT); ////////////////////////////// //Frecuencia FOSC 8Mhz ////////////////////////////// #define _XTAL_FREQ 8000000
  • 6. 33 Modulo USART Curso de Hi tech Compiler for PIC18 ////////////////////////////////////////////// //Para usar el printf ////////////////////////////////////////////// void putch(unsigned char byte) { /* Salida de un byte */ while(!TXIF) /* Estbalece que el regitro esta vacio*/ continue; TXREG = byte; } ///////////////////////////////////////////////// //Funcion de interrupcion //Si no se usa simplemente no hacemos nada... //Esto sirve para direccionar lo los datos //en un lugar muy cercano al Inicio de la memoria //de datos //////////////////////////////////////////////// static void interrupt isr(void){} ////////////////////////////// //FUNCION PRINCIPAL ////////////////////////////// void main(void){ //////////////////////////////////////// //Establece Oscilador Interno //// //////////////////////////////////////// OSCCON=0x70; NOP();NOP();NOP();NOP(); ////////////////////////////////////////////////////////////////////// // Configuracion de Puertos /// ////////////////////////////////////////////////////////////////////// TRISC=0x80; /*---------------------Fin de Conf. Puertos-------------------------*/ /////////////////////////////////////////////////////////////////////// // Configuracion del USART /// /////////////////////////////////////////////////////////////////////// OpenUSART(USART_TX_INT_OFF &//Interrupcion por Transmision apagado USART_RX_INT_OFF &//Interrupcion por Recepcion Apagado USART_ASYNCH_MODE &//Modo Asincronico USART_EIGHT_BIT &//8-bit de transmision USART_CONT_RX &//Recepcion Continua USART_BRGH_HIGH, //Alta velocidad de baudios 25); //para alta Velocidad: // FOSC / (16 * (spbrg + 1)) // spbrg=(FOS/baud*16)-1 //Para baja Velocidad: // FOSC / (64 * (spbrg + 1)) /*---------------------Fin de Conf. USART----------------------------*/ printf(" MicroCursos: Disena y Contruyern"); printf("Ejemplo de uso del USARTrn"); printf("Trabajando a una velocidad de: 19200rn"); printf("Con un PIC18F2550 a 8Mhz"); /////////////////////////////////////////////////////////////////////// // FUNCION PRINCIPAL /// /////////////////////////////////////////////////////////////////////// while(1); } /*-------------------------------Fin-----------------------------------*/
  • 7. 34 Modulo USART Curso de Hi tech Compiler for PIC18 Esquema del Circuito: Abra el Programa “Terminal RS232” que está ubicada en la carpeta de los proyectos, y después busque el Puerto y ponga los baudios a 19200, ya que el programa que contiene el Microcontrolador se a puesto a una velocidad de 19200. Al tener ya conectado nuestro software al puerto seleccionado, conecte el circuito para ver los resultados:
  • 8. 35 Modulo USART Curso de Hi tech Compiler for PIC18 La siguiente practica es muy sencilla es transformar el resultado de una operación a formato string para luego ser enviado por el serial, y después visualizarlo en ‘TerminalRS232’ Nuestro programa es muy sencillo, solo falta de modificar el programa anterior para agregar la siguiente línea: Recuerde definir las variables “var,var1,var2” como tipo int. int var,var1,var2; Al compilar y simular podemos apreciar en nuestro software el resultado. printf(" MicroCursos: Disena y Contruyern"); printf("Ejemplo de uso del USARTrn"); printf("Trabajando a una velocidad de: 19200rn"); printf("Con un PIC18F2550 a 8Mhzrn"); var1=50; var2=100; var=var1+var2; printf("var = %u + %urn",var1,var2); printf("var = %urn",var); /////////////////////////////////////////////////////////////////////// // FUNCION PRINCIPAL /// /////////////////////////////////////////////////////////////////////// while(1); } /*-------------------------------Fin-----------------------------------*/ Nota: Con la función printf podemos hacer las conversiones necesarias para mostrarlo como texto, %u corresponde a valores unsigned char, char, unsigned int, int
  • 9. 36 Modulo USART Curso de Hi tech Compiler for PIC18 Ahora haremos un conteo de 0 a 100, en este caso solo agregaremos la sentencia for para realizar un conteo limitado. Usando la misma variable var para usarlo con el for Este programa hará que cuente de 0 a 100 y después visualizarlo en ‘Terminal Rs232’ Nota: Recuerde que la función printf puede causar retraso en el envío, y tardar un poco más tiempo de lo previsto, si usted va enviar datos de tipo byte, se recomienda usar la función WriteUSART. printf(" MicroCursos: Disena y Contruyern"); printf("Ejemplo de uso del USARTrn"); printf("Trabajando a una velocidad de: 19200rn"); printf("Con un PIC18F2550 a 8Mhzrn"); var1=50; var2=100; var=var1+var2; printf("var = %u + %urn",var1,var2); printf("var = %urn",var); printf("Conteo:rn"); for(var=0;var<=100;var++){ printf("%ur",var); __delay_ms(10); } /////////////////////////////////////////////////////////////////////// // FUNCION PRINCIPAL /// /////////////////////////////////////////////////////////////////////// while(1); } /*-------------------------------Fin-----------------------------------*/