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

PDF
Compare capture pwm mode 5
PDF
Proyecto2
PDF
Mm card 7
PDF
Proyecto1
PDF
Timers 2
PDF
Introduccion a la programacion en c 18
PDF
PDF
Proyecto3
Compare capture pwm mode 5
Proyecto2
Mm card 7
Proyecto1
Timers 2
Introduccion a la programacion en c 18
Proyecto3

La actualidad más candente (20)

PDF
Proyecto4
PDF
Adc y usart pic16 f887
PDF
Curso de microcontroladores capitulo 03
DOCX
Ejemplos pic c
PDF
PROYECTOS CON PIC 16F84
PDF
Curso de microcontroladores capitulo 04
PDF
Taxímetro con Pic16F887
PDF
Curso de microcontroladores capitulo 02
PDF
Micro2 tema 5
PDF
Curso de microcontroladores capitulo 08
PDF
Curso de microcontroladores capitulo 07
PDF
Curso de microcontroladores capitulo 01
PDF
programacion con microcontrolador pic 16f84
PDF
Curso de microcontroladores capitulo 06
PPT
Curso Micro Tema 1
PDF
Curso de microcontroladores capitulo 05
PDF
Curso de microcontroladores capitulo 12
PPTX
Presentacion pic 16f887 y 18f4550
PDF
Curso de microcontroladores capitulo 09
PDF
El PIC16F84
Proyecto4
Adc y usart pic16 f887
Curso de microcontroladores capitulo 03
Ejemplos pic c
PROYECTOS CON PIC 16F84
Curso de microcontroladores capitulo 04
Taxímetro con Pic16F887
Curso de microcontroladores capitulo 02
Micro2 tema 5
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 01
programacion con microcontrolador pic 16f84
Curso de microcontroladores capitulo 06
Curso Micro Tema 1
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 12
Presentacion pic 16f887 y 18f4550
Curso de microcontroladores capitulo 09
El PIC16F84
Publicidad

Similar a Usart 3 (20)

PPT
Puertoserial[1]
PDF
Microcontroladores: mikroBasic para microcontroladores PIC 2da parte
PDF
Comunicación Serie
PPTX
PPTX
Comunicación Serial
PPT
PDF
Módulo EUSART del PIC16F887
PPT
Comunicación RS-232
DOC
Conectores
PDF
Usart PIC config LANDA
PDF
Funcionamiento del USART
DOC
Previo9- Dispos E/S
DOC
Puerto serial
 
PDF
Interfaces de Comunicación del IBM PC:
PDF
Comunicación Serial Asíncrona con el Stellaris
PPTX
Protocolo comunicación serial
PPTX
Arquitectura decomputadoras
PPTX
Apunt2d
Puertoserial[1]
Microcontroladores: mikroBasic para microcontroladores PIC 2da parte
Comunicación Serie
Comunicación Serial
Módulo EUSART del PIC16F887
Comunicación RS-232
Conectores
Usart PIC config LANDA
Funcionamiento del USART
Previo9- Dispos E/S
Puerto serial
 
Interfaces de Comunicación del IBM PC:
Comunicación Serial Asíncrona con el Stellaris
Protocolo comunicación serial
Arquitectura decomputadoras
Apunt2d
Publicidad

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-----------------------------------*/