Sunteți pe pagina 1din 35

GAMA ALTA DE MICROCONTROLADORES

COMPILADOR C CCS
SISTEMAS EMBEBIDOS

DIGITALES III:
1

GAMA ALTA DE MICROCONTROLADORES

LIBRERIA DE
COMUNICACIONES

PIC18F4550

DIGITALES III:
2

GAMA ALTA DE
MICROCONTROLADORES

RS232
La librera RS232 permite la comunicacin 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 parada
Con este tipo se puede utilizar una comunicacin Fullduplex en la cual se tiene una lnea para transmisin y
otra para recepcin y las dos trabajando al tiempo.
El compilador CCS cuenta con una librera que cuenta
con funciones que permiten leer desde el puerto
RS232 y escribir en el cadenas o caracteres. Antes de
3
continuar recuerde los formatos de RS232:

GAMA ALTA DE
MICROCONTROLADORES

Los microcontroladores se deben acoplar a circuitos


4
integrados que realicen la conversin TTl para ello se

MAX232

GAMA ALTA DE MICROCONTROLADORES COMPILADORES

Existe un circuito integrado que permite la conversin


de voltajes de RS232 a TTL uno de ellos se denomina
el MAX232, el diagrama de pines se ilustra en la
siguiente figura.

GAMA ALTA DE MICROCONTROLADORES COMPILADORES

MAX3232
Existe un circuito integrado que permite la conversin
de voltajes de RS232 a TTL/CMOS , para este caso
especial se utiliza el MAX3232, el cual cuenta con
caractersticas
Cumple con loscomo:
requerimientos de TIA/EIA232-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 alimentacin.
Diseado para ser intercambiado con el
MAX232
Aplicaciones: sistemas con poder de
bateras,
PDAs,
Notebooks,
Laptops,

GAMA ALTA DE MICROCONTROLADORES

El siguiente es el diagrama de conexiones del circuito


integrado:

DIGITALES III: 7

GAMA ALTA DE MICROCONTROLADORES

Librera RS232
Se 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 paridad
DIGITALES III:
O: paridad Impar(odd)

GAMA ALTA DE MICROCONTROLADORES

#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
informacin.
RCV: Hace referencia
recepcin de datos.

al

pin

utilizado

para

la

BITS: Se utiliza para indicar el tamao 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
conexin, este hace que las funciones de lectura y
escritura empleen una configuracin propias.
Le permite manejar diferentes configuraciones en un
III:
solo programa, basta con llamarla y DIGITALES
el micro

GAMA ALTA DE MICROCONTROLADORES

#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 domtica o en digitales 2, se encuentran
otros modificadores como:
TIMEOUT:
Permite
establecer
el
tiempo
en
milisegundos que tiene que esperar un carcter la
funcin GETC(), si no se recibe un caracter el
RS232_ERRORS se pone en 0.
ERRORS
Si se utiliza el compilador envia los errores generados a
DIGITALES
III: 10
la variable RS232_ERRORS y resetea los errores
cuando

GAMA ALTA DE MICROCONTROLADORES

Funciones de la librera:
Para manejar eventos como la recepcin y el envi
de datos por RS232 se cuenta con las siguientes
funciones:
2) Escribir un dato por
1) Leer un dato por rs232
RS232:
getc( )
putc( )
getch( )
putchar( )
getchar( )
fputc( )
fgetc( )
gets(
fgets( )

puts( )
fputs( )

DIGITALES III: 11

GAMA ALTA DE MICROCONTROLADORES

1) Leer un dato por rs232


Syntaxis:
value = getc()
value = fgetc(stream)
value=getch()
value=getchar()
Parmetros:
stream es un identificador de una
configuracin
Retornos:
Un carcter de 8 bits
Funcin:
Esta funcin espera hasta que un carcter llegue
por la lnea de recepcin de RS232. Si no se quiere
quedar esperando un largo tiempo se puede utilizar
kbhit() para testear un carcter disponible.
Si
emplea fgetc() entonces debe especificar un stream,
si no asigna un parmetro de configuracin por
defecto utiliza como el empleado por getc(). DIGITALES III:

12

GAMA ALTA DE MICROCONTROLADORES

1) Leer un dato por rs232


kbhit( )
Sintaxis:
value = kbhit()
value = kbhit (stream)

Parametros:
stream es un identificador de un puerto RS232 . Si el
parametro streamno esta incluido, la funcin 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()

DIGITALES III: 13

GAMA ALTA DE MICROCONTROLADORES

1) Leer un dato por rs232


Ejemplo 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
DIGITALES III: 14
dato, en caso contrario retorna.

GAMA ALTA DE MICROCONTROLADORES

1) Leer un dato por rs232


gets( ) y fgets( )
Syntax:
gets (string)
value = fgets (string, stream)

Parmetros:
string es un apuntador a un array de caracteres.
Stream es un identificador corriente (una constante de
tipo byte)

Retorna: Indefinido
Funcin:
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
DIGITALES
III: 15
stream, en caso contrario gets() emplea el ltimo
valor

GAMA ALTA DE MICROCONTROLADORES

Ejemplo de gets:
char cadena[30];

printf("Password: ");
gets(cadena);
if(strcmp(cadena, password))
printf("OK");
else
printf(Clave incorrecta");
La anterior funcin compara una cadena leida con
otra que se llama password.

DIGITALES III: 16

GAMA ALTA DE MICROCONTROLADORES

Escribir un dato por rs232


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

putchar (cdata) fputc(cdata,

Parmetros:
stream es un identificador de
una, Cdata
es una variable de 8 bits.
Funcin:
Esta funcin enva un dato por la lnea de
transmisin de RS232. Si emplea fputc() entonces
debe especificar un stream,
si no asigna un
parmetro de configuracin por defecto utiliza como
el empleado por putc() la ltima ocasin.
DIGITALES III: 17

GAMA ALTA DE MICROCONTROLADORES

1) Escribir una cadena por rs232


puts( ) y fputs( )
Syntax:
puts (string).
fputs (string, stream)

Parmetros:
string es un apuntador a un array de caracteres.
Stream es un identificador corriente (una constante de
tipo byte)

Retorna: Indefinido
Funcin:
Escribe caracteres tipo cadena, emplea PUTC(), este
proceso se ejecuta hasta que encuentra el valor 0 y
despus envia el valor 13.
Si fputs() es empleado entonces se debe especificar el
III: 18
stream, en caso contrario fputs() emplea el DIGITALES
ltimo valor

GAMA ALTA DE MICROCONTROLADORES

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;
DIGITALES III: 19

GAMA ALTA DE MICROCONTROLADORES

CSS permite formatear los datos para enviar por


RS232 para ello cuenta con la instruccin 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 lnea anterior indica que n es una variable de
tipo entero;
observe que aparece el smbolo
porcentaje seguido de un carcter , 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
especificar
DIGITALES III:

20

GAMA ALTA DE MICROCONTROLADORES

T el tipo de variable:
c: Caracter
s: Cadena de caracteres
u: Entero sin signo
d: Entero con signo
Lu:
Ld:

Entero largo sin signo


Entero largo con signo

x: Entero Hexadecimal en minsculas


X: Entero Hexadecimal en maysculas
Lx:
LX:

Entero largo Hexadecimal en minsculas


Entero largo Hexadecimal en maysculas
DIGITALES III: 21

GAMA ALTA DE MICROCONTROLADORES

T el tipo de variable:
f: Flotante con truncado
g: 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) o
printf (cstring, values...) o
printf (fname, cstring, values...)
fprintf (stream, cstring, values...)
SPRINTF tambin tiene la misma funcin.

DIGITALES III: 22

GAMA ALTA DE MICROCONTROLADORES

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 nmero de bytes escritos en la


string.

Funcin: Opera similar a printf excepto que la


DIGITALES III: 23

GAMA ALTA DE MICROCONTROLADORES

Ejemplo SPRINTF:
contador=strlen(cadena);
// strlen funcion para conocer la longitud de una
cadena
if (contador>0)
contador--;
sprintf(mycadena,"%u caracteres",contador);
puts("la cadena tiene una longitud de: ");
puts(mycadena);

DIGITALES III: 24

GAMA ALTA DE MICROCONTROLADORES

Aplicaciones: Observe la siguiente diagrama de


conexiones para un velocmetro bsico leyendo la
velocidad desde un GPS

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

DIGITALES III: 25

GAMA ALTA DE MICROCONTROLADORES

Aplicaciones: Observe la siguiente diagrama de


conexiones para un matricial que lee mensajes SMS
desde un celular y los almacena en memoria
externa.

DIGITALES III: 26

GAMA ALTA DE MICROCONTROLADORES

PROTEUS
En Proteus puede utilizar el
Virtual terminal y tambin
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 lneas
de transmisin y recepcin
designadas
en
el
microcontrolador.

DIGITALES III: 27

GAMA ALTA DE MICROCONTROLADORES

COMPIM
COMPIM
requiere
una
configuracin
para establecer
los parmetros
como: velocidad,
paridad, tamao
de la palabra,
bits de parada,
paridad y control
de flujo.
Virtual
serial
Port le permite
simular
la

DIGITALES III: 28

GAMA ALTA DE MICROCONTROLADORES

Virtual serial Port se puede descargar desde internet,


es muy importante para verificar el funcionamiento
del programa del microcontrolador acoplndolo con
otros mdulos de software como los desarrollados con
Visual Basic.NET. Este mdulo se puede utilizar para
enviar cdigos binarios por ejemplo a una aplicacin
de software que los decodifique y los almacene en
una base de datos. Este software se puede descargar
desde
Internet
en
la
direccin:
http://www.virtualserialport.com/

DIGITALES III: 29

GAMA ALTA DE MICROCONTROLADORES

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 mdulos 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 pgina web se encuentran los drivers y el diseo
Este cuenta con drivers para:
del circuito.
- 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
DIGITALES III: 30

GAMA ALTA DE MICROCONTROLADORES

Diagramas de conexiones propuestos:

Informacin adicional para fabricarlo se encuentra


en la pgina:
http://www.folcom.cz/?page=english/usb_en
http://www.voti.nl/usb-1/index_1.html DIGITALES III: 31

GAMA ALTA DE MICROCONTROLADORES

Impresos:

Fuente. http://www.voti.nl/usb-1/index_1.html
En sigmalectronica una empresa dedicada al
comercio de componentes electrnicos cuentan con
la tarjeta para su facil adquisicin.

Fuente.http://www.sigm
aelectronica.net/tarjeta
-ft232-pi-1110.html
DIGITALES III: 32

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 33

GAMA ALTA DE MICROCONTROLADORES

EJERCICIO:
Construya una aplicacin 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.
DIGITALES III: 34

35

S-ar putea să vă placă și