You are on page 1of 11

Aula 09 Porta Serial

1. Alguns tpicos sobre Comunicao Serial

O canal serial permite que exista comunicao bilateral entre o microcontrolador e outro dispositivo. denominada serial por enviar bit a bit, o byte desejado. O receptor ir tambm receber o referido byte, bit a bit. Os bits so transmitidos iniciando do bit menos significativo e por ltimo o bit mais significativo.

Figura 1

Canal de Comunicao Serial

Um conceito fundamental em comunicao serial a distino entre comunicao sncrona e comunicao assncrona.

Comunicao Serial Sncrona Existe um sinal que marca o instante em que cada bit disponibilizado no canal serial. Esse sinal recebe o nome de relgio (clock). O cabo necessrio bem simples e faz uso de trs fios: um para o canal de dados, outro para o relgio e o terceiro (terra) para a referncia das tenses. A validao de cada bit pode ser marcada pela borda positiva ou negativa do relgio, ou quando o relgio permanecer em nvel alto, ou ainda, enquanto o relgio permanecer em nvel baixo. O mais comum empregar uma das bordas do relgio. A figura 2 apresenta um exemplo de comunicao serial sncrona, onde foram transmitidos os bytes 97H (1001 0111b) e B6H (1011 0110b) onde a validao de cada bit feita atravs da borda de subida do relgio.

Figura 2

Exemplo de transmisso serial sncrona.

Pgina 1 de 11

Aula 09 Porta Serial

Comunicao Serial Assncrona J na comunicao serial assncrona, no existe o relgio para validar os bits de dados. Na sua forma mais simples, so necessrios apenas trs condutores: um para transmisso, outro para recepo e um terceiro para ser a referncia da terra. Como no existe relgio, preciso que, antes de se iniciar a comunicao, se saiba quantos bits sero transmitidos por segundo, pois isto define a janela de tempo na qual o transmissor envia (e o receptor recebe) cada bit. O nome correto baud rate, que abreviaremos por BR. costume usar tambm as expresses taxa de bits ou velocidade de transmisso. As taxas mais comuns esto resumidas na Tabela 1. Para que o receptor possa reconhecer o inicio de uma transmisso, usa-se um bit especial, denominado bit de partida. O final indicado com um ou outro bit especial, denominado bit de parada. A Figura 3 apresenta o exemplo de uma transmisso serial assncrona. Uma velocidade de 9.600 bauds significa que so transmitidos 9.600 bits por segundo. Assim, cada bit tem uma janela de tempo de 1 9.600 segundos (104,17 s).

Tabela 1

Taxas de comunicao mais comuns

Taxa (Bauds) 110 150 300 600 1200 2400 4800 9600 19200 9,1 ms 6,66 ms 3,33 ms 1,66 ms 833 s 416 s 208 s 104 s 52 s

Janela

importante olharmos com um pouco de ateno para entendermos o que significam os bits de partida e parada. Note que, de acordo com a Figura 3, a comunicao inativa (ociosa), indicada pela linha em 5 V. Quando o transmissor vai iniciar, ele coloca a linha em nvel baixo por um intervalo de tempo igual a 1 BR, sinalizando o bit de partida. Logo em seguida, o transmissor coloca a linha em nvel alto ou nvel baixo, de acordo com os valores dos bits, em intervalos de 1 BR. Note que o bit menos significativo (bit 0) transmitido primeiro e, em conseqncia, o bit mais significativo (bit 7) transmitido por ltimo. Aps transmitir o ltimo bit, o transmissor deixa a linha em nvel alto por um intervalo de tempo igual a 1 BR, gerando assim o bit de parada. Note que o bit de parada indistinto da linha inativa (ociosa). Essa a finalidade do bit de parada: garantir que a linha fique algum tempo em estado ocioso, para assim assegurar que o prximo bit de partida seja percebido. Em verdade, os bits de partida e parada nada tm de especial. A Figura 4 apresenta o exemplo de transmisso dos bytes 97H e B6H.

Pgina 2 de 11

Aula 09 Porta Serial

Figura 3

Esquema para uma transmisso serial assncrona.

Figura 4

Exemplo da transmisso serial assncrona dos bytes 97H e B6H.

Direo da Transferncia de Dados Quando se trabalha com a comunicao serial, importante caracterizar se o canal serial empregado permite a transmisso e a recepo ao mesmo tempo, ou se permite a transmisso ou a recepo em instantes diferentes. No exemplo apresentado na Figura 2, vemos que a comunicao sempre unidirecional, ou seja, no possvel fazer a transmisso e a recepo ao mesmo tempo. J no caso da comunicao assncrona, dado o fato de haver duas linhas de dados, possvel transmitir e receber ao mesmo tempo. A Figura 5 ilustra esses dois casos.

Figura 5

Exemplos de comunicao unidirecional (half-duplex) e bidirecional (full-duplex).

Note que, na Figura 5(a), o equipamento E1 transmite para o equipamento E2 atravs da linha de dados D, ao mesmo tempo em que envia o relgio pela linha R. A Figura 5(b) apresenta a transmisso no sentido inverso. J na Figura 5(c), ambos os equipamentos transmitem e recebem ao mesmo tempo. Quando o canal de comunicao, apesar de ser bidirecional, s pode ser usado em um sentido por vez, ele recebe o nome de halfduplex. J o canal que permite simultaneidade na transmisso e recepo recebe o nome full-duplex. Para tornar completo o conceito, falta abordarmos o termo simplex, que usado para indicar situaes onde exista apenas um transmissor e um receptor, ou seja, o canal de comunicao usado num nico sentido apenas. Pgina 3 de 11

Aula 09 Porta Serial

2. A Porta Serial da Famlia 8051 A famlia 8051 oferece uma porta serial que pode trabalhar de forma sncrona ou assncrona em full-duplex. A recepo feita pelo pino P3.0 (RXD) e a transmisso pelo pino P3.1 (TXD). Toda vez que o circuito serial recebe um byte, ele o apresenta no registrador SBUF e, por sua vez, todo byte escrito no SBUF imediatamente transmitido. Existem na realidade dois registradores SBUF, um que funciona apenas para leitura e armazena o byte recebido e outro registrador SBUF, que s funciona para escrita e recebe o byte a ser transmitido. A construo de uma porta serial muito simples, envolvendo um relgio e um registrador de deslocamento. A cada batida do relgio, o registrador de deslocamento recebe um bit ou transmite um bit. A presena do registrador SBUF permite que o registrador de deslocamento inicie a recepo do prximo byte mesmo que o anterior ainda no tenha sido lido. A Figura 6 apresenta um diagrama em blocos da porta serial da famlia 8051. Devem ser notados os dois registradores com nome SBUF.

Figura 6

Diagrama em blocos da porta serial da famlia 8051.

3. Os Registradores SCON e PCON

O registrador SCON, que permite controlar os principais recursos da porta serial, est apresentado na Figura 7. Logo a seguir, feita uma descrio detalhada da finalidade e emprego de cada bit.
7 SM0 6 SM1 5 SM2 4 REN 3 TB8 2 RB8 1 TI 0 RI

Flag Recepo Flag Transmisso Nono bit / Recepao Nono bit / Transmisso Habilitador da recepo Habilita comunicao multiprocessador Bit1 para seleo do modo Bit0 para seleo do modo

Figura 7

Descrio dos bits do registrador SCON.

Pgina 4 de 11

Aula 09 Porta Serial

Os bits SM0 e SM1 servem para selecionar um dos quatro modos de operao, como mostrado na Tabela 2.

Tabela 2 SM0 0 0 1 1

Modos de operao da porta serial. Modo Modo 0 Modo 1 Modo 2 Modo 3 Descrio Registrador de deslocamento UART de 8 bits UART de 9 bits UART de 9 bits Baud Rate Fc 12 Programvel Fc 32 ou Fc 64 Programvel

SM1 0 1 0 1

Modo 0 Modo Sncrono: O dado serial (de 8 Bits com LSB primeiro) transmitido e recebido atravs de RXD. O TXD envia o clock. A Taxa de Comunicao (BR) fixa em 1/12 da freqncia do cristal oscilador. Modo 1 Modo Assncrono: 10 Bits so transmitidos (via TXD) ou recebidos (via RXD): 1 Start Bit(0), 8 Bits de dados com LSB primeiro e um Stop Bit (1). O BR varivel e determinado pelo overflow do Timer 1. Modo 2 Modo Assncrono: 11 Bits so transmitidos (via TXD) ou recebidos (via RXD): 1 Start Bit (0), 8 Bits de dados com LSB primeiro, um nono Bit programvel, e um Stop Bit (1) . O BR programvel para 1/32 ou 1/64 da freqncia do cristal oscilador. Modo 3 Modo Assncrono: 11 Bits so transmitidos (via TXD) ou recebidos (via RXD): 1 Start Bit(0), 8 Bits de dados com LSB primeiro, um nono Bit programvel, e um Stop Bit(1). O BR varivel e determinado pelo overflow do Timer 1. RI flag para indicar que a porta serial terminou de receber um byte setado por hardware e deve ser zerado por software. Pode ser usado para provocar interrupo. Quando no modo 0, esse flag ativado ao final do oitavo bit. Nos demais modos, na metade do bit de parada. TI flag para indicar que a porta serial terminou de transmitir um byte setado por hardware e deve ser zerado por software. Pode ser usado para provocar interrupo. Quando no modo 0, esse flag ativado ao final do oitavo bit. Nos demais modos, no comeo do bit de parada. RB8 uma cpia do nono bit recebido, quando nos modos 2 e 3. Pode ser usado como indicador na paridade recebida. Quando se trabalha com dois bits de parada, ele pode ser ignorado.

Pgina 5 de 11

Aula 09 Porta Serial

TB8

com esse bit o usurio especifica o valor do nono bit a ser transmitido, quando nos modos 2 e 3. Pode ser usado como indicador da paridade do byte transmitido ou, se colocado em nvel alto, permite gerar dois bits de parada. quando ativado, habilita a recepo serial. quando ativado, habilita a comunicao multiprocessador e, se no modo 1, RI ativado quando se recebe o bit de parada ou, se nos modos 2 e 3, RI ativado por ocasio da recepo do oitavo bit. bit menos significativo para especificar o modo de operao da porta serial. bit mais significativo para especificar o modo de operao da porta serial.

REN SM2

SM1 SM0

Como foi visto anteriormente, existe um nico vetor para atender interrupo da porta serial, o que significa que a interrupo ser provocada tanto na recepo de um byte quanto no trmino do envio de um byte. Para que o programador possa distinguir que situao provocou a interrupo, existem os flags RI e TI. Por isso, eles no so apagados automaticamente por ocasio da vetorizao da interrupo, mas sim devem ser apagados pelo programador. A verso CHMOS deste microcontrolador possui um registrador, denominado PCON, destinado a controlar seu consumo de energia. Entretanto, um desses bits, o bit mais significativo de nome SMOD, usado na gerao do baud rate da porta serial. Esse bit, quando colocado em nvel alto, serve para dobrar o baud rate gerado pelo contador temporizador 1 (CT1). Deve ser observado que esse registrador no enderevel bit a bit, por isso, qualquer atualizao feita sobre todos seus bits. 4. Modos de Operao 4.1. Modo 0 Esse modo recebe o nome de registrador de deslocamento, pois simplesmente apresenta, no pino RXD, o acesso ao registrador de deslocamento e, no pino TXD, o relgio que comanda esse registrador. O pino RXD pode ser usado para transmitir ou receber os bits seriais. So sempre transmitidos e recebidos 8 bits de dados e o BR fixo em 1 12 da freqncia oscilador.

Pgina 6 de 11

Aula 09 Porta Serial

Figura 8

Porta Serial no modo 0.

4.2. Modo 1 Neste modo, possvel programar a taxa de transmisso atravs do overflow do CT1. Para cada byte, transmitido um trem de 10 bits, como mostrado na Figura 9. Note que o primeiro bit o de partida (nvel lgico zero), que o dcimo bit o de parada (nvel lgico um) e que a ordem do bit menos significativo para o mais significativo. Por ocasio da recepo, o bit de parada copiado para o bit RB8, do registrador SCON.

Pt

Pr

Pt = Bit de Partida

Pr = Bit de Parada

Figura 9

Porta Serial no Modo 1.

A gerao do baud rate toma como base o overflow do CT1. Assim atravs de sua programao, possvel atender a diversas taxas de transmisso. Note que o relgio dividido por 12 antes de chegar ao CT1, que por sua vez, efetua uma diviso por N, sendo que N programvel pelo usurio. Em seguida, de acordo com o estado do bit SMOD, pode ser feita uma diviso por 2. Aps uma diviso por 16, chega-se ao valor do baud rate que ser entregue aos registradores de deslocamento de transmisso e recepo.

Pgina 7 de 11

Aula 09 Porta Serial

O valor do baud rate (BR) facilmente calculado com o uso da Expresso 1. Com uma pequena manipulao, podemos explicitar o valor de N em funo do baud rate (Expresso 2). Normalmente, programa-se o CT1 para operar no modo 2, que o modo com auto recarga. Lembre-se que o contador temporizador no modo 2 deve ser programado com 256-N.

[1]

[2]

4.3. Modo 2 Quando opera no modo 2, a porta serial transmite, para cada byte, um trem de 11 bits com o baud baud rate fixo em 1 32 ou 1 64 da freqncia do relgio (de acordo com o bit SMOD). O trem de bits est apresentado na Figura 10, onde se pode notar a existncia do nono bit. No caso da transmisso, o nono bit a ser transmitido copiado do bit TB8 do registrador SCON. J no caso de recepo, o nono bit recebido copiado em RB8. Esse nono bit pode ser usado para transmitir ou receber o bit de paridade. Numa outra situao, pode-se optar por dois bits de parada. Neste caso, possvel simular o segundo bit de parada colocando TB8 em nvel alto, pois assim ele passa a ter mesmo nvel lgico que o bit de parada. Como vimos, o baud rate fixo em 1 32 ou 1 64 do relgio do microcontrolador.

Pt

Pr

Pt = Bit de Partida

Pr = Bit de Parada

Figura 10

Porta Serial no Modo 2.

4.4. Modo 3 O modo 3 semelhante ao Modo 1, porm faz uso do trem de bits apresentado na Figura 10. Com o emprego do Modo 3, resolve-se a maioria dos casos de comunicao serial.

Pgina 8 de 11

Aula 09 Porta Serial

5. Taxa de Comunicao (Baud Rate) Aqui, vamos apontar um problema muito comum quando se emprega a porta serial do 8051. Partimos com a suposio de que estamos usando um microcontrolador com relgio (cristal) de 12 MHz e que desejamos nos comunicar com um PC usando modo 1, a 9.600 bauds. Com o emprego da Equao 2 e considerando SMOD = 0, calculamos: [3]

Como no podemos programar valores fracionrios, arredondamos o valor calculado e trabalhamos com N = 3. Programamos ento 256 3 = 253 no CT1. Parece que tudo est certo, mas h possibilidade de erros na comunicao serial com o PC. Como j estamos percebendo, o erro deve-se ao arredondamento do valor de N. Vejamos o que obtemos com o uso da equao. [4]

O valor do baud rate est diferente dos 9.600 desejados. Vem agora a pergunta: ser que essa diferena grande o suficiente para inviabilizar a comunicao serial ? Para responder, vamos olhar com um pouco mais de cuidado a comunicao assncrona. Apesar do nome assncrono, o bit de partida pode ser encarado como um sinal de sincronismo, para indicar a janela temporal dos bits. O problema que, quando existe um erro no baud rate, os bits no ocupam a janela temporal desejada e surge um erro. Esse erro se acumula ao longo do trem de bits, ou seja, se houver problemas, ele ser cumulativo e se manifestar de forma pior nos ltimos bits. Vejamos a durao de um bit para os dois casos: BR = 9.600 BR = 10.416,7 cada bit dura 104,17 s cada bit dura 96,0 s

Como pode facilmente ser concludo, temos o erro de 104,17 96 = 8,17 s a ser acumulado em cada bit. Como no Modo 1 so transmitidos 10 bits, o erro ao final do ultimo bit ser 81,7 s, o que corresponde a 78% da durao do ltimo bit. No nosso exemplo, o PC transmite a 9.600 bauds para o 8051 que, devido ao arredondamento, est preparado para receber a 10.416,7 bauds, como mostrado na Figura 11. Pode-se notar claramente a diferena ao final dos dois trens de bits. Isto resulta que a recepo no 8051 praticamente perde o bit de parada. bem provvel que essa comunicao no funcione. A deficincia semelhante no caso do 8051 transmitir para o PC.

Pgina 9 de 11

Aula 09 Porta Serial

Figura 11

Problema provocado por diferena no baud rate.

Fazemos agora a pergunta: at quanto podemos tolerar de diferena no baud rate? Para respond-la, preciso analisar como trabalha o receptor serial, ou seja, em que instante o receptor amostra cada bit. Existem diversas maneiras de se construir uma lgica para recepo serial. claro que, na recepo do bit, devemos fugir dos extremos da janela temporal, ou seja, evitamos amostrar o bit no inicio e no final da janela temporal. intuitivo que o melhor momento para ler-se o bit bem no meio da janela. Entretanto, uma nica leitura perigosa e extremamente vulnervel a rudos. Assim, h receptores que fazem trs leituras seguidas e, logo aps, uma votao para decidir o valor do bit a ser aceito. Podemos imaginar um receptor que faa trs leituras, uma no primeiro quarto, outra na metade e a ltima no quarto final, como mostrado na Figura 12(a).

Figura 12

Diferentes solues para amostrar um bit durante uma recepo serial.

J o receptor 8051 divide a janela temporal do bit em doze partes e amostra nas partes de nmero 5, 6 e 7, como mostrado na Figura 12(b). Tomando como base o pior caso, fica claro que, para se ter completa certeza da comunicao serial, no devemos tolerar um erro total maior que 1 4 da janela de um bit. Entretanto, possvel sugerir uma regra mais otimista que possa ser empregada quando no existe muito rudo nas linhas. A sugesto tolerarmos um erro total de at 50% da janela de um bit, pois, mesmo com esse erro, ainda teremos duas leituras corretas. Como resposta pergunta inicial, afirmamos que, se o erro total for superior a 50% da durao de um bit, a comunicao dever apresentar muitos erros. Vimos que o baud rate impreciso surgiu pela necessidade de arredondarmos o valor a ser programado no CT1. Para terminar esse assunto, fazemos ainda mais uma pergunta: qual deve ser o cristal, mais prximo de 12 MHz, que permite gerar baud rate Pgina 10 de 11

Aula 09 Porta Serial

corretamente. A soluo uma conta muito simples, usando a Expresso 1, onde explicitamos o valor do relgio e, claro, usamos N = 3. A resposta um cristal de 11,0592 MHz, como calculado na Expresso 5. Esse valor de cristal bastante conhecido e comum vermos sistemas com 8051 trabalhando nessa freqncia. [5]

Pgina 11 de 11

You might also like