You are on page 1of 58

Comunicación Serie

Definición
 Comunicación en la que los bits de datos
se transmiten en forma sucesiva.
 El tiempo de duración de cada bit en la
línea de transmisión se denomina “Tiempo
del bit” y su recíproco es la frecuencia
de transmisión expresada en “bits por
segundo” (o bps)

2
Comunicación en Serie vs.
Comunicación en Paralelo
 Es mas lenta
 No sufre interferencia entre líneas de
datos
 Mayor confiabilidad
 Mas barata
 Adecuada a larga distancia

3
Inconvenientes
 Problemática de relojes: desfases
 Sincronismos:
 de bits
 de caracter
 De bloque
 Soluciones:
 Transmisión Síncrona
 Línea de reloj
 Codificación autorreloj (Manchester)
 Transmisión Asíncrona

4
Comunicación Serie Asíncrona

5
Interface RS232
 Interconexión DTE-DCE punto a punto
 Velocidades hasta 20 kbits (según norma)
 Transmisión síncrona o asíncrona
 Modos Half Duplex y Full Duplex
 Tres especificaciones
 Eléctrica (norma V.28)
 Mecánica (ISO 2110)
 Funcional (norma V.24)

6
Especificación Eléctrica
 Transmisión no
balanceada
 Referencia a 0 volt
 Limitación de
corriente a 0.5 A
 Capacidad Máxima
2500 pF
 Niveles

7
Especificación Mecánica
 Conector ISO 2100 (D25)
 Formato D

 25 terminales (se usan 21 según norma)

 Numeración ISO (AA, BB, etc) o CCITT (101, 102, etc) En la

práctica se usan solo 9


 Conector DB9
 Longitud física máxima del cable 15 m

8
Conectores D25 y DB9

9
Especificación Funcional
 Líneas de Datos
 TxD y RxD
 Líneas de Control de Flujo
 Request Ro Send (RTS)
 Clear To Tend (CTS)
 Data Carrier Detect (CD o DCD)
 Líneas de establecimiento de conexión
 Data Terminal Ready (DTR)
 Data Set Ready (DSR)
 Ring Indicator (RI)
 Líneas de referencia
 GND
 Masa de Conexión SHG

10
Control de Flujo sobre RS232
 Protocolos software
 XON XOFF
 Protocolos Hardware
 RTS-CTS
 DTR-DSR

11
Usos no estándar: Modem Null
 Cruce de líneas

12
Usos no estandar: Modem Null
 Protocolo a tres hilos

13
Norma RS 449

14
Norma RS422
 Especificaciones Eléctricas
 Balanceada (no referida a 0 v)
 Niveles de tensión +6v a -6v
 Sensibilidad 200mv
 Hasta 10 receptores
 Longitud de cable 1200m

15
R2422: Distancia máxima
 Inversamente proporcional a la velocidad

16
Conexiones RS422
 Ventajas
 Rechazo ruido y
crosstalk
 Mayores Distancias
 Mayores Velocidades
 Inconvenientes
 Necesita mas hilos
 Mayor costo
 Mayor complejidad

17
Utilización en ambientes
industriales
 Comunicación punto a punto
 Comunicación maestro / esclavo

18
Norma RS485
 Norma eléctrica
 Multipunto
 Hasta 32 transmisores y 32 receptores
 Posibilidad de alta impedancia
 Par trenzado
 120 ohm con terminadores
 Resistencias pull-up y pull-down
 Tensión de modo común (VCM)
 Variación entre -7v y 12v
 Diferencia 200mv

19
Norma RS485 (II)
 Multipunto
 Unidades de carga 12 ohm
 Impedancia: triple que RS422
 Limitación de intensidad a 250mA
 Distancia máxima 1200m
 Velocidad máxima 10 Mbps

20
Transmisor-Receptor RS485

21
Variante múltiple RS485

22
Utilización en ambientes
industriales
 Comunicación punto a punto
 Comunicación maestro / esclavo
 Comunicación multimaestro

23
Comparación de normas

24
UART
 UART (transmisor receptor asincrono universal)
 Simplifica operaciones Entrada/Salida serie
 Conversión paralelo/serie y viceversa
 Sincronizaciones a nivel de bits y carácter
 Control de errores
 National Semiconductors NS8250
 NS 16450 Mayores velocidades
 NS 1655O Colas FIFO

25
Hardware básico
 Diagrama de conexión

26
Convertidores de Niveles
 TTL / RS232

27
Convertidores de Niveles (II)
 TTL / RS485: Integrado
75SN176

28
 Ejemplo

29
Ejemplos Comunicación RS232

30
31
Bioscom
Syntax

#include <bios.h>
int bioscom(int cmd, char abyte, int port);

Descripción
bioscom realiza varias comunicaciones RS-232 sobre un puerto E/S dado.

 Un valor de port=0 corresponde al COM1, 1 corresponde al COM2, y así


sucesivamente.
 El valor de cmd puede ser uno de los siguientes
Valor Significado
0 Define los parámetros de comunicación de acuerdo al valor en abyte.
1 Envía el carácter en abyte a la línea de comunicación.
2 Recibe un carácter desde la línea de comunicación.
3 Retorna el estado actual del puerto de comunicaciones.

32
Bioscom (II)
abyte es una combinación de los siguientes bits (un valor es
seleccionado de cada uno de los grupos):
 0x02 7 bits datos 0x00 110 bps
 0x03 8 bits datos 0x20 150 bps
 0x40 300 bps
 0x00 1 bit stop 0x60 600 bps
 0x04 2 bits stop 0x80 1200 bps
 0x00 sin paridad 0xA0 2400 bps
 0x08 paridad impar 0xC0 4800 bps
 0x18 paridad par 0xE0 9600 bps

 Ejemplo: un valor de 0xEB (0xE0|0x08|0x00|0x03)


para el byte define la comunicación a 9600 bps, paridad
impary, 1 bit de stop, y 8 bits de datos.
33
Bioscom (III)
 Valor Retornado:
 Para todos los valores de cmd, bioscom returna un entero de 16 bits, de los cuales
los 8 bits superiores son bits de estado y los 8 bits mas bajos varían, dependiendo
del valor de cmd. Los bits mas altos del valor retornado son los siguientes:
 Bit 15Time out
 Bit 14Transmit shift register empty
 Bit 13Transmit holding register empty
 Bit 12Break detect
 Bit 11 Framing error
 Bit 10Parity error
 Bit 9 Overrun error
 Bit 8 Data ready
 Si el valor de abyte no se puede enviar, el bit 15 se pone en 1. De lo contrario, los
restantes bits mas altos y mas bajos se definen correctamente. Por ejemplo, si
ocurre un error de cuadro, el bit 11 se pone en 1.

34
Bioscom (IV)
 Con un valor de cmd de 2, el byte leído se encuentra en los bits mas bajos
del del valor retornado si no hay error. Si ocurre un error, al menos uno
de los bits mas altos se pone en 1. Si ninguno de los bits superiores se
pone en 1, el byte se recibió sin error.
 Con un valor de cmd de 0 o 3, el valor retornado en los bits superiores se
cargan según lo definido, y los bits inferiores se definen como sigue:
 Bit 7 Received line signal detect
 Bit 6 Ring indicator
 Bit 5 Data set ready
 Bit 4 Clear to send
 Bit 3 Change in receive line signal detector
 Bit 2 Trailing edge ring detector
 Bit 1 Change in data set ready
 Bit 0 Change in clear to send

35
Bioscom (V)
 Ejemplo: Comunicación entre dos PCs por medio de un cable modem null.
 El ejemplo es específico para el COM1.
 Se incluyen los valores para el COM2

 #include <bios.h>
 #include <conio.h>
 #include <dos.h>
 #define DTR 0x01 // Data Terminal Ready
 #define RTS 0x02 // Ready To Send
 #define COM1PORT 0x0000 // Pointer to Location of COM1 port
 #define COM2PORT 0x0002 // Pointer to Location of COM2 port
 #define COM1 0
 #define COM2 1
 #define DATA_READY 0x100
 #define FALSE 0
 #define TRUE !FALSE
 #define SETTINGS ( 0xE0 | 0x00 | 0x02 | 0x00) // 9600,N,7,1 36
Bioscom (VI)
 int main( void )
 {
 int in,
 out,
 status,
 DONE = FALSE,
 far *RS232_Addr;
 /* Determine port location of COM1.
 0x40:0x00 = COM1 I/O port address
 0x40:0x02 = COM2 I/O port address
 */
 RS232_Addr = MK_FP( 0x0040, COM1PORT );
 if( !*RS232_Addr )
 return -1;
 bioscom( 0, SETTINGS, COM1 );
 cprintf( "... BIOSCOM [ESC] to exit ...\n" );

37
Bioscom (VII)
 while( !DONE )
 {
 /* Reset DTR and RTS to prepare for send/receive of
 next character.
 */
 outportb( *RS232_Addr + 4, DTR | RTS );
 /* Get status of com port.
 */
 status = bioscom( 3, 0, COM1 );
 if( status & DATA_READY )
 /* There's a character on the port. Get it and echo.
 */
 if( (out = bioscom( 2, 0, COM1 ) & 0x7F) != 0 )
 putch( out );

38
Bioscom (VIII)
 if( kbhit() )
 /* Key has been struck. Get it and send to port.
 */
 if( (in = getch()) == '\x1B' )
 /* User pressed ESCAPE. Don't send to port.
 */
 DONE = TRUE;
 else
 /* Send character to com port.
 */
 bioscom( 1, in, COM1 );
 }
 return 0;

39
Comunicación serie en el
microcontrolador 8051
MODOS DE COMUNICACIÓN
Se seleccionan con los bits 6=SM1 y bit 7=SM2 del registro
SCON
 Modo 0
 Transmisión o Recepción por línea RXD
 Pulsos de sincronismo por línea TXD
 8 bits de datos (primero el menos significativo)
 Velocidad igual a 1/12 frecuencia del reloj
 Modo 1
 Transmisión por TXD
 Recepción por RXD
 10 bits de datos
 1 bit de start (0)
 8 bits de datos (menos significativo primero)
 1 bit de stop (1)
 La velocidad puede ajustarse en un amplio rango
40
Modos de comunicación (II)
 Modo 2
 Transmisión por TXD
 Recepción por RXD
 11 bits
 1 bit start (0)
 8 bits de datos (menos significativo primero)
 1 bit programable (TB8 SCON en Tx, RB8 en Rx )
 1 bit de stop (1)
 Velocidad 1/32 o 1/64 de la frecuencia reloj
 Modo 3
 Transmisión por TXD
 Recepción por RXD
 11 bits
 1 bit start (0)
 8 bits de datos (menos significativo primero)
 1 bit programable (TB8 SCON en Tx, RB8 en Rx )
 1 bit de stop (1)
 Velocidad se puede ajustar en un amplio rango

41
Inicio de la comunicación
 Transmisión
 Cualquier instrucción que use SBUF
(dirección 99H del SFR) como registro
destino
 Recepción
 Modo O: condición RI=0 y REN=1
 Modos 1, 2 y 3: Recepción bit de start y
REN=1

42
Comunicación en el entorno
multiprocesador
 Permitido en los Modos 2 y 3
 Recepción: Puede programarse (activando SM2 en SCON) que la interrupción serie
se produzca solo si el 9° bit almacenado en RB8=1
 Modo de Operación:
 Esclavos: Activan SM2=1. Reciben interrupción recepción serie solo si 9° bit dato=1
 Maestro envía primero dirección esclavo: Noveno bit=1. Este dato lo reciben todos los
esclavos
 El esclavo direccionado coloca SM2=0 para recibir datos
 Maestro: Envía datos con9° bit=0. Solo se produce interrupción de recepción serie en el
esclavo direccionado.
 Al finalizar la comunicación el esclavo direccionado coloca nuevamente SM2=1

43
Registro de control del puerto
serie (SCON)

44
Registro de control del puerto
serie (SCON) (II)

45
Velocidad de Comunicación
 Modo 0

 Modo 2

 Modos 1 y 3: Determinado por sobrepasamiento timer 1. En 8052


por sobrepasamiento Timer 1 o Timer 2

46
Timer 1 como generador de
“baudios”
 Definidos por el valor de carga del Timer y el valor de
SMOD
 Programar Timer como “temporizador” en modo

autorrecarga (TMOD20H)
 Velocidad comunicación serie:

 SMOD:bit 7 registro PCON

47
Timer 1 como generador de
“baudios” (II)

48
Timer 2 como generador de
“baudios”

49
Comunicación en Modo 0
 Longitud de palabra de dato: 8 bits. Primero el bit menos significativo
 Formato palabra de datos

 Velocidad de comunicación

 Transmisión
 Comienza: Escribiendo en SBUF
 Termina: Activando flag TI
 Recepción
 Comienza: Cuando REN=1 y RI=0
 Termina: Activando flag RI

50
Ejemplo: Transmisión en Modo 0

OBJETIVO
-Programar el puerto serie
en Modo 0
-Transmitir por el perto
serie el byte que se
itroduce por el puerto
paralelo
-Obtener la señal de
sincronismo y visualizarla
por el pin TXD

51
Ejemplo: Recepción en Modo 0

-Vectorización de la interrupción

-Habilitación del puerto serie


-Programación del SCON como receptor

52
(Continuación)
-Rutina de retardo

-Rutina de Interrupción

53
Comunicación en Modo 1
 Longitud de palabra de dato: 10
bits. Primero el menos  Velocidad de comunicación:
significativo
Modo de carga y sobrepasamiento
Formato palabra de dato:


Timer 1:

 Timer 1 como temporizador con


“autorrecarga”:
 Esquema de la comunicación:

 También utilizando el Timer 2

 Transmisión
 Comienza: Escribiendo el dato en
SBUF
 Termina: Activando el flag TI
 Recepción
 Comienza: Cuando REN=1 y se detecta
un flanco descendente (bit start) en
RXD
 Termina: Activando el flag TI

54
Cominicación en Modos 2 y 3
Velocidad de comunicación:
 Longitud de palabra de datos: 11 bits 

 Se puede utilizar el Timer 1 o el Timer 2


 Formato palabra dato:  Para el modo 2

 Para el modo 3

 Esquema simplificado de la
comunicación
 Transmisión:
 Comienza: Escribiendo en SBUF
 Termina: Activando el flag TI
 Recepción:
 Comienza: Cuando REN=1 y se detecta fla
descendente (bit start) en RXD
 Termina: Activando el flag RI

55
Interrupciones en el 8051

56
Registro Prioridad de
Interrupciones

57
Prioridades y Vectores de
Interrupción

58

You might also like