Usart 3

9
Universal Synchr Los Microcontroladores tienen u comunicaciones seriales llamado Receptor Asincrónico Sincrónico (USART por las siglas en Ingles) o Comunicación Serial (SCI). Este p 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 comu datos bidireccionales simultáneo Esto quiere decir que durante la entre dos dispositivos con USART asincrónico, cada dispositivito pu 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) Sim hac b) Com de ronous Asynchronous Receiver T un Puerto de o Transmisor o Universal o Interfaz de puerto puede unicación de os (full duplex). a comunicación T en modo uede trasmitir y distancia que en modo s un poco más lento. El puerto serial tiene reg manipular los datos para recibidos. Estos son los r RCREG para g transm RCREG guard pata R Modo EL Puerto serial USART e puede ser configurado c COMUNICACION DE DA SIN SIMULTANEADAD. (half duplex). mple comunicación de datos usando dos bit de sta ciendo que los 8 bit sobrantes puedan ser el dato municación de 11 bit haciendo los 9 bit de datos ‘start’ y ‘stop’. Transmitter sincrónico, aunque sea gistros especiales para a ser transmitidos o registros TXREG y G. TXREG es el registro guardar datos para ser mitidos hacia la pata TX. G es el registro que da el dato recibido por la RX. o Sincrónico en modo sincrónico como: -a) ATOS BIDIRECCIONALES b) TRANS MISOR O RECEPT OR DE DATOS art y stop, o y dos de bit

Transcript of Usart 3

Page 1: Usart 3

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 hacRCREG 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) TRANSMISOR O RECEPTOR 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

Page 2: Usart 3

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.

Page 3: Usart 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 Tra nsmisió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---------- ------------------*/

Page 4: Usart 3

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!!!

Page 5: Usart 3

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 & PLL POSTDIV2 & CPUDIV1 & USBOSC); /////////////////////////////////////////////////// ////////// __CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BOR V45 & 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

Page 6: Usart 3

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 vaci o*/ 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 Tr ansmision apagado USART_RX_INT_OFF &//Interrupcion por Recepcio n 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 Contruye\r\n"); printf("Ejemplo de uso del USART\r\n"); printf("Trabajando a una velocidad de: 19200\r\n") ; printf("Con un PIC18F2550 a 8Mhz"); /////////////////////////////////////////////////// //////////////////// // FUNCION PRINCIPAL /// /////////////////////////////////////////////////// //////////////////// while(1); } /*-------------------------------Fin--------------- --------------------*/

Page 7: Usart 3

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:

Page 8: Usart 3

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 Contruye\r\n"); printf("Ejemplo de uso del USART\r\n"); printf("Trabajando a una velocidad de: 19200\r\n"); printf("Con un PIC18F2550 a 8Mhz\r\n"); var1=50; var2=100; var=var1+var2; printf("var = %u + %u\r\n",var1,var2); printf("var = %u\r\n",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

Page 9: Usart 3

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 Contruye\r\n"); printf("Ejemplo de uso del USART\r\n"); printf("Trabajando a una velocidad de: 19200\r\n"); printf("Con un PIC18F2550 a 8Mhz\r\n"); var1=50; var2=100; var=var1+var2; printf("var = %u + %u\r\n",var1,var2); printf("var = %u\r\n",var); printf("Conteo:\r\n"); for(var=0;var<=100;var++){ printf("%u\r",var); __delay_ms(10); } /////////////////////////////////////////////////// //////////////////// // FUNCION PRINCIPAL /// /////////////////////////////////////////////////// //////////////////// while(1); } /*-------------------------------Fin--------------- --------------------*/