Você está na página 1de 51

IInntteerrffaacceess SSeerriiaaiiss

Conteúdo

!

" # !

! !

$ " % " !

Como conectar equipamentos uns aos outros?

" & '

! ! ( !

)

Interface

Paralela

Dados + controle

Equipamento 1
Equipamento 1
Interface Paralela Dados + controle Equipamento 1 Equipamento 2
Interface Paralela Dados + controle Equipamento 1 Equipamento 2

Equipamento 2

Interface

Paralela

Interface Paralela Todos os bits de uma palavra são transmitidos simultaneamente Cada canal necessita de diversos

Todos os bits de uma palavra são transmitidos simultaneamente

Cada canal necessita de diversos fios

VVaannttaaggeennss:: - Maior velocidade. - Simplicidade das interfaces.
VVaannttaaggeennss::
-
Maior velocidade.
-
Simplicidade
das interfaces.

- Muitos fios > custo - Ruído, perda de sincronismo ® Menores distâncias

DDeessvvaannttaaggeennss::

Interface Serial

Equipamento 1
Equipamento 1

Dados

+

controle

Interface Serial Equipamento 1 Dados + controle Equipamento 2 SSíínnccrroonnaa AAssssíínnccrroonnaa IIssóóccrroonnaa

Equipamento 2

SSíínnccrroonnaa AAssssíínnccrroonnaa IIssóóccrroonnaa
SSíínnccrroonnaa
AAssssíínnccrroonnaa
IIssóóccrroonnaa

Tipos de Interfaces Seriais - 1

Síncrona

Transmissor e receptor utilizam o mesmo clock com mesma freqüência e fase

Transferência de blocos Cada bloco:

Caracteres de sincronismo

Dados

Checagem de erro

Pequeno overhead:

para cada bloco: + 3 b ytes (2 sincronismo, 1 checksum)

ex.: bloco=1024 b yt es + 3 b ytes = 1027 b ytes

0,3% de tempo extra !

Tipos de Interfaces Seriais - 2

Tipos de Interfaces Seriais - 2 Assíncrona Clocks do transmissor e do receptor podem estar ligeiramente

Assíncrona

Clocks do transmissor e do receptor podem estar ligeiramente diferentes

ressincronismo a cada byte

Transferência de bytes Para cada b yte mais 2 ou 3 bits:

start bit

bit de paridade

stop bits

(1 a 2)

Grande overhead:

para cada b yte + 3 bits = 11 bits = 37,5% de tempo extra! = < velocidade

Tipos de Interfaces Seriais - 3

Isócrona

Clock incluído ou incorporado ao dado

ressincronismo a cada pacote

Transferência de pacotes Contínuo e sem checagem dos dados

Útil para aplicações de tran sferência de grande quantidade de dados e sem precisão.

Ex: Vídeo conferência

Padrões de Comunicação Serial

(í

í

ó

(- /

*

*

 

(-1

*

*

 

(-13

*

*

 

2()

 

*

*

$$$-./01

 

*

*

& +

 

*

 

( ! ,

 

*

 

Padrões de Comunicação Serial

(í

í

ó

$, $ +$,

*

   

(

*

   

&

*

   

(4#

*

   

4 5( ( !

*

   

EEmmbboorraa aass iinntteerrffaacceess sseerriiaaiiss ssíínnccrroonnaass sseejjaamm mmaaiiss rrááppiiddaass,, aass iinntteerrffaacceess sseerriiaaiiss aassssíínnccrroonnaass ssããoo mmaaiiss uuttiilliizzaaddaass..

Facilidade de implementação Menor Custo

Atualmente alcança velocidades compatíveis com as síncronas

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

Código:

Conjunto de regras pelas quais informações ou dados (ex:

números, letras) podem ser convertidos a u ma representação do código e vice-versa.

Para transmitir a informação atra vés de uma interface é necessário que ela esteja codificada de alguma forma.

A unidade mais básica de informação para nós é o bit, que pode ter valores 0 ou 1. Toda informação utilizada pelos computadores é codificada de alguma forma em seqüências de bits.

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

Código ASCII:

Abreviação de: American Standard Code for Information Interchange.

Código universal para intercâmbio de informações, concebido especialmente para utilização em transmissão, recepção e processamento de dados.

ASCII para 7 bits: 2 7 = 128 caracteres podem ser representados.

ASCII para 8 bits: 2 8 = 256 caracteres diferentes.

ex.: o código ASCII

0100 0001 = 65D = 41H representa o caractere "A" .

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

Paridade:(1)

Bit acrescentado ao dado, destinado à detecção de erros. Paridade par: núme ro par de bits no estado 1. Paridade ímpa r: número í mpa r de bits no estado 1.

ex.: caractere "A”em ASCII de 7 bits: 1 0 0 0 0 0 1. com paridade ímpar:

com o tem-se 2 bits no estado 1, o bit de paridade tam bém ser á 1, de for ma que no total tem-se 3 bits em 1 ( ímpar).

bit de paridade:

1

1

0

0

0

0

0

1.

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

Paridade:(2)

Ex.: dado com bit de paridade:

1 1 0 0 0 0 0 1.

va mos supo r que por u m e rro de transmissão, um dos bits 0 transformou-s e em 1:

1 1 0 0 0 0 0 1 -------> 1 1 0 0 1 0 0 1 . ao verificar a paridade, o receptor p erceberá qu e há um nú me ro par de 1, e indicará que houve algum e rro na trans missão, e que esse byte é inválido. E se houver um nú mero par de mud anças?

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

Transmissão de um Caractere:

Ex.:

T ransmissão do caractere A em ASCII com paridade ímpar e dois stop bits:

1

1

0 0

0 0 0 1 = b7 b6 b5 b4 b3 b2 b1 b0

 

Start

b0 b1

b2

b3

b4

b5

b6

b7

Stop

Stop

   

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

Transmissão de um Caractere:

Quando não há dados sendo transmitidos, a linha fica em nível lógico 1.

Paridade: par, ímpar ou sem paridade.

Normalmente se usa 1 ou 2 stop bits. Estes devem garantir que o receptor terá tempo de receber e armazenar o caractere, antes de receber o próximo.

A quantidade de bits na informação transmitida também pode variar: de 5 a 8 bits.

Obs: Transmissor e receptor devem ter as mesmas configurações quanto a velocidade, tamanho da palavra, paridade e número de stop bits!

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

Transmissão de um Caractere:

O receptor reconhece a borda de descida do Start Bit e sincroniza seu clock.

Após 1 ciclo e meio começa a fazer a leitura dos demais bits a cada clock.

 

Se as freqüências do transmissor e do receptor estiverem perfeitamente sincronizadas, as leituras serão efetuadas exatamente no meio de cada ciclo.

Tolerância a pequenas variações dos clocks de T x e Rx.

Start b0 b1 b2 b3 b4 b5 b6 b7 Stop Stop Sincroniza demais leituras
Start b0
b1
b2 b3
b4
b5
b6
b7 Stop Stop
Sincroniza
demais leituras

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

Bit Rate:

ÉÉ oo nnúúmmeerroo ddee bbiittss ppoorr sseegguunnddoo ttrraannssmmiittiiddooss aattrraavvééss ddaa iinntteerrffaaccee sseerriiaall..

Baud Rate:

É o número de transições (ou eventos) por segundo.

Cada evento pode transmitir mais de 1 bit:

ex.: modems, onde a variação de fase da portadora poderia representar dois ou mais bits.

Quando cada evento representa apenas 1 bit, então o Bit Rate e o Baud Rate são iguais.

RS-XXX

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

RS-232:

Padrão físico e elétrico.

Conector DB25 (no caso dos computadores PC, usa-se normalmente um DB9, com os principais sinais).

6) 6)0 ç ! / , 6 - ,*6 / 7 6 - *6 1 8 9 ( - ,( 3 &! ( - 6,( 6 ( 5- 6(

8 3 . .

( : !; - ;+6 6 & 6 - 6&6 , &! - ,*&

.8 7 &! - *& 1 6 , ! 5- 6,

1 < ! 5&! 0 : -

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa RS-232 Null Modems: Conector simplificado, usado para transferência de dados Hyperterminal do Windows:
CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa
RS-232
Null Modems: Conector simplificado, usado para transferência de dados
Hyperterminal do Windows: permite desabilitar sinais de controle de fluxo.

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

RS-232:

Padrão físico e elétrico

Opera com tensões referenciadas ao terra.

Nível lógico 0 : tensão entre +3 e +15V

Nível lógico 1: tensão entre - 3 e - 15V

Faixas de tensão

inválido

+ 15V nível lógico 0 +3V 0V inválido - 3V nível lógico 1 - 15V
+ 15V
nível lógico
0
+3V
0V
inválido
- 3V
nível lógico
1
- 15V

inválido

Valores típicos: + 12V e - 12V

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

RS-232:

"Single ended": sinal referenciado à terra Tx Rx Terra = 0 V
"Single ended": sinal referenciado à terra
Tx
Rx
Terra
= 0 V

Problemas:

Quedas de tensão ao longo do fio

Susceptível a ruídos e diferenças de potencial de terras

Limite de distância +/- 15m (depende da taxa e qualidade do cabo)

Taxa má xima: 20Kbps

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

RS-422:

"Differencial Voltage Pairs": Sinal Diferencial Tx + Tx - Va - Vb < - 0.2V
"Differencial Voltage Pairs": Sinal Diferencial
Tx +
Tx -
Va - Vb < - 0.2V = 0
Va - Vb > +0,2V = 1

par trançado

Vantagens:

Mais imune a cross-talk

Mais resistente a quedas de tensão

Limite de distância: +/- 1200m (depende da taxa e cabo)

Taxa má xima: 10Mbps

Não define conector

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

RS-485:

Semelhante ao RS-422, mas com drivers tri-state:

Permite topologias de redes multiponto. Rede do tipo “mestre-escravo”. Até 64 dispositivos.

Componentes para RS 422 e RS 485:

Am26LS32 – driver.

Am26LS32 – receiver. MAX 481 / 483 / 485 / 487 / 1487 - transceivers.

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

RS-485:

Exe mplo de topologia de rede co m RS 485

Mestre End. 0 Tx Rx Tx Rx Tx Rx Escravos End. 1 End. n - 1
Mestre
End. 0
Tx
Rx
Tx
Rx
Tx
Rx
Escravos
End. 1
End. n - 1

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

RS-485:

Filosofia Mestre-Escravo:

1 mestre, n - 1 escravos, cada um com o seu endereço.

Mestre: toma a iniciativa da comunicação.

Escravos: só respondem às mensagens a eles endereçadas.

TxD do mestre: Chega a todos RxD dos escravos.

TxD dos escravos:

Em alta impedância, quando um escravo for responder,

conecta seu transmissor. Mestre: fica ciclicamente interrogando um por um os escravos,

que respondem com seus dados, se possuírem. Boa solução para sistemas com poucos dispositivos, baixo tráfego ou onde a velocidade não for crítica.

CCoommuunniiccaaççããoo SSeerriiaall AAssssíínnccrroonnaa

UART:

Universal Asynchronous Receiver / T ransmiter.

Con versão paralela / serial.

Inserção / retirada automática do Start-bit e Parity bit.

Velocidades programáveis.

Interrupções para transmissão / recepção.

Indicação de erros.

Exemplos:

8251 e 82C51, da Intel.

16550 (usado nos PCs).

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

UART intern a:

Muitos microcontroladores possuem U ARTs internas, como o

80C51.

Existem modelos de 80C51 com duas U ARTs, como o DS80C320 da

  • D ALL AS.

U ART do 80C51:

Pode-se facilmente escre ver ou ler dados via interface serial.

Realiza todo o processo de serialização, adição de start bits e stop bit.

Permite transferência via interrupções ou “wait for flag”.

Estrut ura da UART do 80 C51

Estrut ura da UART do 80 C51

Estrut ura da UART do 80 C51

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Usando a UART:

São necessários os seguintes passos para configurar corretamente a U ART interna do 80C51:

Definir a taxa de comunicação.

Definir a origem do clock de comunicação.

Programar o canal serial.

Habilitar / desabilitar interrupções, caso se deseje (a técnica de “wait for flag” também pode ser utilizada).

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Usando a UART:

Modos de Operação:

Modo 0: Shift Register de 8 bits dado: RXD clock: TXD = 1/12 clock do 80C51(fixo)

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Usando a UART:

Modos de Operação:

Modo 1: U AR T de 8 bits com taxa de comunicação variá vel.

dado: TXD e RXD.

clock: ajustá vel atra vés do Timer 1 (não pode ser o Timer 0).

10 bits: 1 start bit, 8 bits de dado, 1 stop bit.

paridade: opcional, por softw are.

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Usando a UART:

Modos de Operação:

Modo 2: U AR T de 9 bits com taxa de comunicação fixa.

dado: TXD e RXD.

clock: 1/32 ou 1/64 clock do 80C51 (fixo).

11 bits: 1 start bit, 8 bits de dado, 9o. bit programável, 1 stop bit.

paridade: opcional, por softw are.

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Usando a UART:

Modos de Operação:

Modo 3: U AR T de 9 bits com taxa de comunicação variá vel.

dado: TXD e RXD.

clock: ajustá vel atra vés do Timer 1 (não pode ser o Timer 0).

11 bits: 1 start bit, 8 bits de dado, 9o. bit programável, 1 stop bit.

paridade: opcional, por softw are.

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Usando a UART:

Modos de Operação:

Modo 2 e Modo 3: permitem comunicação multiprocessadores.

1 mestre, n escravos, cada um com seu endereço.

9o. bit: =1 indica que a mensagem do mestre é de endereço (todos a examinam, e o escra vo selecionado passa a pegar as mensagens seguintes de dados, com o 9o. bit = 0; os demais as ignoram, até o 9o. bit voltar a ser 1).

o escravo pode também transmitir mensagens ao mestre, após estabelecida a conexão, mas para tanto não de ve setar o 9o. bit.

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

C C o o m m u u n n i i c c a a

Usando a UART:

Programar o Timer1 para gerar o "Baud Rate“ (Modo 1 e Modo 3).

C C o o m m u u n n i i c c a a

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Timer

Timer1 no modo 2 (auto-reload) Cálculo:

 

Baud Rate =

k x FreqOsc 32 x 12 x [256 - (TH1 )]

 

se SMOD = 0, k=1 se SMOD = 1, k=2

SMOD = bit 7 de PCON

Ou seja:

 

se SMOD = 0 se SMOD = 1

TH1 = 256 - ((FreqOsc / 384) / Baud) TH1 = 256 - ((FreqOsc / 192) / Baud)

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Timer - exemplo:

Ex.: cristal de 11.0592 Mhz e deseja-se 19200bps.

Supondo SMOD = 0.

TH1 = 256 - ((11059000 / 384) / 19200) TH1 = 256 - 1,5 = 254.5.

Impossí vel! Se usarmos para 254 teremos 14.400bps, se setarmos para 255 teremos 28.800bps! O que fazer?

Basta mudar SMOD para 1.

TH1 = 256 - ((11059000 / 192) / 19200) TH1 = 256 - 3 = 253.

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Timer:

T imer/Counter mode:

TMOD (89h) – bit endereçável 7------T1------4 | 3-----T0--------0 Gate C/T M1 M0
TMOD (89h) – bit endereçável
7------T1------4 | 3-----T0--------0
Gate C/T
M1 M0
  • 1 0 (modo 2)

contador out timer

TH1 (8Dh) = valor de recarga em TL1 TCON (88h) – byte endereçável

---T1---|---T0----|---T1----|---T0 ----

C C o o m m u u n n i i c c a a

TF1 TR1 TF0 TR0 IE1 IT1

IE0 IT0

TF = overflow TR = liga /desliga IE = habilitação de interrupção

Ti mer 1: sem interrupção: 0100 xxxx

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Canal Serial:

Modo Serial:

SCON (98h) – bit endereçável.

7--------------------------------------0

C C o o m m u u n n i i c c a a

SM0 SM1 SM2 REN TB8 RB8

0

1

0

1

TI

RI

modo

enable serial reception

receive interrupt flags transmite interrupt flags (devem ser limpos por softw are).

C C o o m m u u n n i i c c a a

SM 0 e SM 1 definem o modo

  • 0 modo 0 = 8 bit Shift Register = Oscillator / 12

0

  • 0 modo 1 = 8 bit U ART = Baud Rate set by T imer 1

1

  • 1 modo 2 = 9 bit U ART = Oscillator / 32

0

  • 1 modo 3 = 9 bit U ART = Set b y T imer 1.

1

SM 2 = flag para "M ultiprocessor comunication". Caso esteja setada, RI somente será setado caso o nono bit recebido seja 1. Nos usos mais comuns, SM 2 = 0.

REN = deve estar setado para que a recepção seja habilitada.

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Canal Serial:

Modo Serial – continuação:

SCON (98h) – bit endereçável.

 

7--------------------------------------0

 

SM0 SM1 SM2 REN TB8 RB8

TI

RI

0

1

0

1

modo

enable serial reception

receive interrupt flags transmite interrupt flags (devem ser limpos por softw are).

C C o o m m u u n n i i c c a a

T B8 é usado nos modos 2 e 3. O nono bit a ser transmitido é o nele contido.

RB8: idem a T B8 para recepção. O nono bit recebido será nele armazenado.

T I: T ransmit Interrupt

Quando T I está setado, o programa pode assumir que a porta serial está pronta para transmitir o próximo byte. RI: Receive Interrupt Sempre que o 80C51 receber um byte completo, RI será setado, informando ao softw are que o byte precisa ser lido, antes que seja recebido um novo valor.

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Canal Serial:

Modo Serial – continuação:

PCON (87h) – b yte endereçável

7--------------------------------------0 SM0D X X X X X X X
7--------------------------------------0
SM0D X
X
X
X
X
X
X

SMOD = 0: Modo 2: divide clock do 80C51 por 64 SMOD = 0: Modos 1 e 3: di vide saída Timer 1 por 32

SMOD = 1: Modo 2: divide clock do 80C51 por 32 SMOD = 1: Modos 1 e 3: di vide saída Timer 1 por 16

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Canal Serial:

Interrupções.

IE ( A8h) – bit endereçá vel.

7----------------4----------------------0

.

C C o o m m u u n n i i c c a a

EA

ES ET1

EX1 ET0 EX0

Por que usar interrupções?

Qual a alternati va? Um esquema do tipo: wait for flag, onde o programa fica em loop perguntando ao dispositivo: "- Já recebeu dado?“, ou “- Ac abou de transmitir o último dado?”

No caso do w ait for flag, o tempo de processamento gasto no pooling dos dispositi vos é considerá vel: poderia ser usado no caso de programas pequenos e simples.

As interrupções são uma maneira mais simples e limpa de fazer o mesmo ser viço...

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Canal Serial:

Lendo e en viando dados:

Os dados de vem ser lidos ou escritos em SBUF (99h), por exemplo, se quisermos escrever o caractere " A" na porta serial, isso pode ser feito como a seguir:

MOV SBUF,#' A' ou MOV SBUF, #41H

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Programando o Canal Serial:

Exemplo de configuração sem interrupção:

MOV TMOD,#00100000B MOV TH1,#0FDH

; inicializacoes. ; Timer 1 no modo 2 ; configura para 9600bps

MOV TCON,#01000000B ; Ativa Timer 1

MOV PCON,#00000000B MOV SCON,#01000000B MOV IE,#00000000B

; SMOD recebe 0 (Timer 1/32) ; canal serial no modo 1 ; desabilita interrupções

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Usando o Canal Serial com “wait for flag”:

En vio de caracteres - rotina CO (character output):

CO:

JNB TI,$ CLR TI MOV SBUF,B JNB TI,$ RET

; lê estado TI da serial ; Se TI OK, limpa TI ; escreve dado ; espera sua transmissao

Recebimento de caracteres - CI (character input):

CI:

JNB RI,$

MOV B,SBUF

; lê estado RI da serial

CLR RI

RET

; Se RI OK dado está presente, ; limpa RI ; lê dado

CCoommuunniiccaaççããoo SSeerriiaall 8800CC5511

Usando o Canal Serial co m “wait for flag”:

Exemplo de rotina para imprimir uma mensagem (da RO M para a serial):

PRINT:

MOV

A,#00h

MOVC

A,@A+DPTR

JZ

PFIM

MOV

B,A

ACALL

CO

INC

DPTR

SJMP

PRINT

PFIM:

RET

Usando o Canal Serial com interrupções

Recebimento de caracteres

MOV

TMOD,#00100000B

; Timer 1 no modo 2

MOV

TH1,#0FDH

; configura para 9600bps

MOV

TCON,#01000000B

; Ativa Timer 1

MOV

PCON,#00000000B

; SMOD recebe 0 (Timer 1/32)

MOV

SCON,#01010000B ; canal serial no modo 1, com interrupção

MOV

DPTR,#9000H

; ponteiro para dado recebido

MOV

IE,#10010000B

; habilita interrupções

CLR

C

; limpa carry

JNC

$

; aguarda fim de string

LJMP

0000H

; volta ao Programa Monitor...

CIINT: JNB MOV MOVX INC

RI, FIM2 ; se for interrupção de transmissão,

A, SBUF @DPTR, A DPTR

; lê dado ; caso contrário armazena-o ; incrementa ponteiro de dados

FIM1:

CLR

RI ; limpa RI=pedido interrupção de recepção

FIM2:

CLR

TI ; limpa TI=pedido interrupção de transmissão

RETI

FIM3:

SETB

C

; indica fim de string

AJMP

FIM1