Ccs Rs232 y String

35
GAMA ALTA DE MICROCONTROLADORES COMPILADOR C CCS SISTEMAS EMBEBIDOS DIGITALES III: 1

description

Electrónica programación pic 16f877A

Transcript of Ccs Rs232 y String

Page 1: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

COMPILADOR C CCS SISTEMAS EMBEBIDOS

DIGITALES III: 1

Page 2: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

PIC18F4550

LIBRERIA DE COMUNICACIONES

DIGITALES III: 2

Page 3: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

3

RS232La librería RS232 permite la comunicación del microcontrolador con cualquier dispositivo que maneje este protocolo.Recuerde el formato de datos del protocolo trabajado en otras oportunidades el cual se conforma por:•Bit de Start•7 u 8 bits de datos•Bit de paridad(opcional)•Bits de paradaCon este tipo se puede utilizar una comunicación Full-duplex en la cual se tiene una línea para transmisión y otra para recepción y las dos trabajando al tiempo.

El compilador CCS cuenta con una librería que cuenta con funciones que permiten leer desde el puerto RS232 y escribir en el cadenas o caracteres. Antes de continuar recuerde los formatos de RS232:

Page 4: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

4

Los microcontroladores se deben acoplar a circuitos integrados que realicen la conversión TTl para ello se utiliza el MAX232.

Page 5: Ccs Rs232 y String

MAX232

GAMA ALTA DE MICROCONTROLADORES - COMPILADORES

Existe un circuito integrado que permite la conversión de voltajes de RS232 a TTL uno de ellos se denomina el MAX232, el diagrama de pines se ilustra en la siguiente figura.

Page 6: Ccs Rs232 y String

MAX3232

GAMA ALTA DE MICROCONTROLADORES - COMPILADORES

Existe un circuito integrado que permite la conversión de voltajes de RS232 a TTL/CMOS , para este caso especial se utiliza el MAX3232, el cual cuenta con características como:•Cumple con los requerimientos de TIA/EIA-232-F and ITU v.28•Opera con una fuente Vcc de 3-V a 5.5-V •Opera hasta 250 kbit/s•Dos Drivers y 2 canales de entrada.•Bajo consumo de corriente, tipico en 300 μA •Capacitores externos de 0.1 μF•Accepta 5-V Logicos de entrada con 3.3-V de alimentación.•Diseñado para ser intercambiado con el MAX232•Aplicaciones: sistemas con poder de baterías, PDAs, Notebooks, Laptops, Palmtop PCs, y equipos de mano

Page 7: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 7

El siguiente es el diagrama de conexiones del circuito integrado:

Page 8: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 8

Librería RS232Se la agrega al programa en la parte inicial por medio de las instrucciones:

#use rs232 (BAUD=9600,PARITY=N, XMIT=PIN_C2, RCV=PIN_C4, BITS=8,stream=HOSTPC,STOP=1)

De esta se observa que:BAUD: Hace referencia a los bits por segundo para RS232 Existen diferentes velocidades, como: 1200,2400,4800,9600,19200, entre otras

PARITY: Hace referencia a la paridad, este puede tener tres valores:N: sin paridadO: paridad Impar(odd)E= Paridad par (even)

Page 9: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 9

#use rs232 (BAUD=9600, PARITY=N, XMIT=PIN_C2, RCV=PIN_C4, BITS=8,stream=HOSTPC,STOP=1)

XMIT: Hace referencia al pin utilizado para transmitir información.

RCV: Hace referencia al pin utilizado para la recepción de datos.

BITS: Se utiliza para indicar el tamaño de la palabra, este puede ir de 5 a 9, pero no se utiliza del 5 al 7.

Stream: Es utilizado para asignarle un nombre a la conexión, este hace que las funciones de lectura y escritura empleen una configuración propias.Le permite manejar diferentes configuraciones en un solo programa, basta con llamarla y el micro reconfigura sus valores.

Page 10: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 10

#use rs232 (BAUD=9600,PARITY=N, XMIT=PIN_C2, RCV=PIN_C4, BITS=8,stream=HOSTPC,STOP=1)

STOP: Hace referencia a los bits de parada, este puede ser 1 ó 2.

A diferencia de las subrutinas conocidas en la asignatura de domótica o en digitales 2, se encuentran otros modificadores como:

TIMEOUT: Permite establecer el tiempo en milisegundos que tiene que esperar un carácter la función GETC(), si no se recibe un caracter el RS232_ERRORS se pone en 0.ERRORSSi se utiliza el compilador envia los errores generados a la variable RS232_ERRORS y resetea los errores cuando esto ocurre.LONGDATA: Admite que getc() reciba datos en INT16 solo cuando se utiliza 9 bits como formato de datos.

Page 11: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 11

Funciones de la librería:Para manejar eventos como la recepción y el envió de datos por RS232 se cuenta con las siguientes funciones:

1) Leer un dato por rs232getc( )

getch( ) getchar( ) fgetc( )

gets( )fgets( )

2) Escribir un dato por RS232:putc( )putchar( )fputc( )

puts( ) fputs( )

Page 12: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 12

1) Leer un dato por rs232Syntaxis:

value = getc() value = fgetc(stream)

value=getch() value=getchar()Parámetros:

stream es un identificador de una configuraciónRetornos:

Un carácter de 8 bitsFunción:Esta función espera hasta que un carácter llegue por la línea de recepción de RS232.   Si no se quiere quedar esperando un largo tiempo se puede utilizar kbhit() para testear un carácter disponible. Si emplea fgetc() entonces debe especificar un stream, si no asigna un parámetro de configuración por defecto utiliza como el empleado por getc().

Page 13: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 13

1) Leer un dato por rs232kbhit( ) Sintaxis:

value = kbhit() value = kbhit (stream) Parametros:stream es un identificador de un puerto RS232 .  Si el parametro streamno esta incluido, la función usa la primary stream empleada por getc. Retorna:0 (o FALSO) si getc() necesitara esperar por un caracter de entrada, 1 (o VERDAD) si un caracter esta listo para utilizar getc() 

Page 14: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 14

1) Leer un dato por rs232Ejemplo de kbhit( ):char timed_getc() {  long timeout;   timeout_error=FALSE;   timeout=0;   while(!kbhit()&&(++timeout<50000)) // 1/2 second          delay_us(10);   if(kbhit())          return(getc());   else {          timeout_error=TRUE;          return(0);   }}Este ejemplo anterior se encuentra en la ayuda de CCS, este espera medio segundo hasta que llegue un dato, en caso contrario retorna.

Page 15: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 15

1) Leer un dato por rs232gets( ) y fgets( ) Syntax:gets (string)value = fgets (string, stream) Parámetros:string es un apuntador a un array de caracteres. Stream es un identificador corriente (una constante de tipo byte) Retorna: IndefinidoFunción:Lee caracteres de entrada tipo cadena, emplea GETC() este proceso se ejecuta hasta que ingrese el valor 13.  La cadena la termina con cero. Si fgets() es empleado entonces se debe especificar el stream, en caso contrario gets() emplea el último valor por defecto para RS232.

Page 16: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 16

Ejemplo de gets:char cadena[30];

 printf("Password: ");gets(cadena);if(strcmp(cadena, password))   printf("OK");else   printf(“Clave incorrecta");

La anterior función compara una cadena leida con otra que se llama password.

Page 17: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 17

Escribir un dato por rs232 putc( ), putchar( ) y fputc( )

Sintaxis:putc (cdata) putchar (cdata)fputc(cdata, stream)

Parámetros: stream es un identificador de una, Cdata

es una variable de 8 bits.Función:Esta función envía un dato por la línea de transmisión de RS232.   Si emplea fputc() entonces debe especificar un stream, si no asigna un parámetro de configuración por defecto utiliza como el empleado por putc() la última ocasión.

Page 18: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 18

1) Escribir una cadena por rs232puts( ) y fputs( ) Syntax:puts (string).  fputs (string, stream) Parámetros:string es un apuntador a un array de caracteres. Stream es un identificador corriente (una constante de tipo byte) Retorna: IndefinidoFunción:Escribe caracteres tipo cadena, emplea PUTC(), este proceso se ejecuta hasta que encuentra el valor 0 y después envia el valor 13. 

Si fputs() es empleado entonces se debe especificar el stream, en caso contrario fputs() emplea el último valor por defecto para RS232.

Page 19: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 19

Ejemplos de leer: dato_leido=0; contador=0; puts("Ingrese una cadena de 10 caracteres:"); do { dato_leido=getc(); putc(dato_leido); cadena[contador]=dato_leido; if (dato_leido==13) break;

contador++; } while(dato_leido!=13 || contador<=10);

cadena[contador]=0;

Page 20: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 20

CSS permite formatear los datos para enviar por RS232 para ello cuenta con la instrucción print y Sprint

Printf le permite enviar datos por RS232 y transformarlos al formato requerido.printf(funcion, cadena, "n=%u”,n);printf(funcion, cadena);La línea anterior indica que n es una variable de tipo entero; observe que aparece el símbolo porcentaje seguido de un carácter , este lleva una estructura: %NT , N es opcional y corresponde al numero de caracteres a visualizar y T es el tipo de datos.N:1-9: Indica cuantos caracteres se deben especificar01-99: Indica la cantidad de ceros a la izquierda1.1-9.9 Para indicar caracteres flotantes

Page 21: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 21

T el tipo de variable:c: Caracters: Cadena de caracteres

u: Entero sin signod: Entero con signo

Lu: Entero largo sin signoLd: Entero largo con signo

x: Entero Hexadecimal en minúsculasX: Entero Hexadecimal en mayúsculas

Lx: Entero largo Hexadecimal en minúsculasLX: Entero largo Hexadecimal en mayúsculas

Page 22: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 22

T el tipo de variable:f: Flotante con truncadog: Flotante con redondo

e: Flotante con formato exponencial

w: Entero sin signo con decimales insertados, la primer cifra indica el total y la segunda los decimales

Recordemos las sintaxis de printf:printf (string)   oprintf (cstring, values...)   oprintf (fname, cstring, values...)fprintf (stream, cstring, values...)

SPRINTF también tiene la misma función.

Page 23: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 23

SPRINTF:Sintaxis:sprintf(string, cstring, values...);bytes=sprintf(string, cstring, values...) Parametros:string es un arreglo de caracteres. cstring es una constante cadena o un cadena de caracteres terminado con un valor nulo. 

Values es una lista de variables separadas por comas. Retorna: Bytes es el número de bytes escritos en la string. Función: Opera similar a printf excepto que la salida es colocada al interior de una cadena específica.  La salida de cadena debe ser terminada con un nulo. 

Page 24: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 24

Ejemplo SPRINTF:

contador=strlen(cadena);// strlen funcion para conocer la longitud de

una cadenaif (contador>0) contador--;

sprintf(mycadena,"%u caracteres",contador);

puts("la cadena tiene una longitud de: ");puts(mycadena);

Page 25: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 25

Aplicaciones: Observe la siguiente diagrama de conexiones para un velocímetro básico leyendo la velocidad desde un GPS

4800 baud• 8 data bits• No parity• 1 stop bit• No flow control

Page 26: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 26

Aplicaciones: Observe la siguiente diagrama de conexiones para un matricial que lee mensajes SMS desde un celular y los almacena en memoria externa.

Page 27: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 27

PROTEUS

En Proteus puede utilizar el Virtual terminal y también COMPIM, este último para conectar el microcontrolador con un puerto RS232 del PC, en caso de conectar con otro puerto no existente puede utilizar el virtual port.

El COMPIN se debe conectar de forma directa a las líneas de transmisión y recepción designadas en el microcontrolador.

Page 28: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 28

COMPIM

COMPIM requiere una configuración para establecer los parámetros como: velocidad, paridad, tamaño de la palabra, bits de parada, paridad y control de flujo.

Virtual serial Port le permite simular la existencia de puertos RS232.

Page 29: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 29

Virtual serial Port se puede descargar desde internet, es muy importante para verificar el funcionamiento del programa del microcontrolador acoplándolo con otros módulos de software como los desarrollados con Visual Basic.NET. Este módulo se puede utilizar para enviar códigos binarios por ejemplo a una aplicación de software que los decodifique y los almacene en una base de datos. Este software se puede descargar desde Internet en la dirección: http://www.virtualserialport.com/

Page 30: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 30

Cables USB-RS232:Debido a la falta de puertos RS232 en los equipos portatiles se puede adquirir en el mercado los cables que permiten conectar módulos con puertos RS232 a puertos USB.

Los cables cuentan con in circuito integrado denominado FT232BM el cual se encarga de las conversiones respectivas. El fabricante es FTDI y en su página web se encuentran los drivers y el diseño del circuito.Este cuenta con drivers para:- Windows 98 and Windows 98 SE - Windows 2000 / ME / XP- Windows CE **-MAC OS-8 and OS-9 - MAC OS-X **- Linux 2.40 and greater

Page 31: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 31

Diagramas de conexiones propuestos:

Información adicional para fabricarlo se encuentra en la página:http://www.folcom.cz/?page=english/usb_enhttp://www.voti.nl/usb-1/index_1.html

Page 32: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 32

Impresos:

Fuente. http://www.voti.nl/usb-1/index_1.htmlEn sigmalectronica una empresa dedicada al comercio de componentes electrónicos cuentan con la tarjeta para su facil adquisición.

Fuente.http://www.sigmaelectronica.net/tarjeta-ft232-pi-1110.html

Page 33: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 33

Page 34: Ccs Rs232 y String

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 34

EJERCICIO:Construya una aplicación que lea desde un modulo celular como el Enfora 1208 un mensaje de texto SMS y lo visualice en la pantalla LCD de 4 filas. El mensaje que se visualiza es el numero 1.

Page 35: Ccs Rs232 y String

35