aula teóricaw3.ualg.pt/~apcosta/pin/teoricas/teorica16.doc · web viewuma word de 7 bits transmite...

10
Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa Aula Teórica 16 Sumário: As portas série. A interface RS-232C. Parâmetros de comunicação série. Portos e linhas IRQ das portas série. Os registos do UART e sua programação directa. Leitura Recomendada: Capítulo 33 - Hans-Peter Messmer, The Indispensable PC Hardware Book, Addison-Wesley. Capítulos 7 e 13 - Peter Norton, Peter Aitken e Richard Wilton, PC Programmer´s Bible, Microsoft Press. Portas série Uma porta é um canal através do qual um computador pode comunicar com o mundo exterior. Existem dois tipos de portas: Série e paralelas. As portas são ligações físicas que permitem ligar o PC a outros PC's ou a periféricos como impressoras, modems, etc.. Uma porta série transmite dados em série, um bit de cada vez. É também chamada de porta de comunicação assíncrona ou porta RS-232C (protocolo standard para transferência de dados em série). As portas série são bidireccionais. Comparativamente às portas paralelas, que enviam um byte de cada vez, as portas série são mais lentas (para uma mesma velocidade de relógio, a porta série é oito vezes mais lenta do que a porta paralela), mas podem comunicar a distâncias muito maiores e são mais flexíveis no que respeita a transferência de dados bidireccionais. Figura nº 1 – Diagrama de uma porta série. 1

Upload: vocong

Post on 27-Jan-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula Teóricaw3.ualg.pt/~apcosta/pin/Teoricas/Teorica16.doc · Web viewUma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Aula Teórica 16

Sumário:As portas série. A interface RS-232C. Parâmetros de comunicação série. Portos e linhas IRQ das portas série. Os registos do UART e sua programação directa.

Leitura Recomendada:Capítulo 33 - Hans-Peter Messmer, The Indispensable PC Hardware Book, Addison-Wesley. Capítulos 7 e 13 - Peter Norton, Peter Aitken e Richard Wilton, PC Programmer´s Bible, Microsoft Press.

Portas série

Uma porta é um canal através do qual um computador pode comunicar com o mundo exterior. Existem dois tipos de portas: Série e paralelas. As portas são ligações físicas que permitem ligar o PC a outros PC's ou a periféricos como impressoras, modems, etc..

Uma porta série transmite dados em série, um bit de cada vez. É também chamada de porta de comunicação assíncrona ou porta RS-232C (protocolo standard para transferência de dados em série).

As portas série são bidireccionais. Comparativamente às portas paralelas, que enviam um byte de cada vez, as portas série são mais lentas (para uma mesma velocidade de relógio, a porta série é oito vezes mais lenta do que a porta paralela), mas podem comunicar a distâncias muito maiores e são mais flexíveis no que respeita a transferência de dados bidireccionais.

Figura nº 1 – Diagrama de uma porta série.

A interface RS-232C

A maioria das interfaces para comunicação série utilizam o standard RS-232C. O standard define as interfaces mecânicas, eléctricas e lógicas entre o dispositivo terminal, onde estão os dados, chamado DTE – Data Terminal Equipment, que normalmente é o PC, e o dispositivo que transporta os dados, DCE – Data Carrier Equipment, usualmente o modem. O standard RS-232C define 25 linhas para a ligação (25 pins). A maioria está reservada para transferência de dados síncrona. No entanto, a comunicação série num PC é normalmente assíncrona, e para este propósito são apenas necessárias 11 linhas do RS-232C. A IBM ainda tem um tipo de ligação RS-232C que utiliza apenas 9 pins.

1

Page 2: Aula Teóricaw3.ualg.pt/~apcosta/pin/Teoricas/Teorica16.doc · Web viewUma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Tipos de ligações

SimplexNa ligação simplex há duas possibilidades: pode haver transferência de dados do DTE para o CDE, ou vice-versa.

Half-duplexNuma ligação half-duplex tanto o DTE como o DCE podem operar como receptor e transmissor, mas apenas uma linha de dados está disponível, e é usada alternadamente pelo DTE e DCE.

Full-duplexA maioria dos modems são full-duplex e conseguem transferir dados em ambas as direcções simultaneamente, ou seja, o DTE e o DCE actuam simultaneamente como receptores e transmissores. Se existem fisicamente duas linhas de dados, ou se existe apenas uma com dois canais lógicos separados, é irrelevante. O importante é que nem os transmissores nem os receptores necessitam de esperar para realizar a transmissão dos dados. A ligação full-duplex é fácil de usar, porque como programadores, não nos precisamos de preocupar com as regras de recepção e transmissão.

Parâmetros de comunicação série

Para duas portas série comunicarem uma com a outra, a velocidade de comunicação e o modo de codificação dos dados tem que ser idêntica em ambas. Na totalidade, existem quatro parâmetros de comunicação série que é preciso definir:

A velocidade de transmissão da porta (baud rate), que representa o número de bits transmitidos por segundo.

O comprimento da word. Especifica o número de bits que irão compor cada unidade de dados. Pode variar entre 5 e 8 bits, mas o PC suporta apenas comprimentos de 7 e 8 bits. Uma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode transmitir caracteres ASCII entre 0 e 255 ou dados binários.

Verificação da paridade. Quando usada, adiciona um bit a cada word de dados. Este bit de paridade serve para verificar se houve erros na transmissão dos dados. Podemos definir paridade par, ímpar ou sem paridade. Na paridade par, o bit de paridade fica a 0 ou a 1, de modo a que o número de bits a 1 seja par. Se o número de bits a 1 na word de dados é ímpar, o bit de paridade ficará a 1, caso contrário ficará a 0. A paridade ímpar funciona de forma semelhante, mas de maneira a que o número de bits a 1 seja ímpar. Esta técnica não é infalível, por vezes falha.

Stop bit. Indica o fim da transmissão de uma word de dados. Pode-se definir 1, 1.5 ou 2 stop bits (também depende do comprimento da word). Normalmente é definido 1 stop bit.

Exemplo do envio do caracter 'A':

A linha está a 1 quando não há transmissão e passa a 0 para indicar o início da transmissão (start bit). Há dispositivos que têm a lógica inversa - lógica negativa.

Parâmetros definidos para o envio de 'A' (código ASCII 65 - 01000001b):Lógica positiva, baud rate = 300, word = 8 bits, paridade = ímpar, stop bit = 1.

Para a transmissão ter sucesso, os parâmetros de comunicação têm que ser os mesmos na porta que envia e na porta que recebe.

A maioria das linguagens de alto nível oferecem meios para definir os parâmetros de comunicação série. Estes também podem ser configurados usando os serviços BIOS para portas série, ou podem ainda ser programados directamente por acesso aos registos da porta.

2

Page 3: Aula Teóricaw3.ualg.pt/~apcosta/pin/Teoricas/Teorica16.doc · Web viewUma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Figura nº 2 – Parâmetros de comunicação série e exemplo da transmissão de um caracter.

Portos e IRQ's das portas série

Num PC podem existir até 4 portas série, no entanto apenas costumam ser usadas duas (COM1 e COM2). Cada porta série tem 8 portos de E/S alocados (embora utilize apenas 7) e tem ainda uma linha IRQ para interrupções de hardware (COM1 e COM3 - IRQ4, COM2 e COM4 - IRQ3).

Figura nº 3 – Portos série.

Durante o arranque da máquina, a BIOS verifica as portas série instaladas e coloca os seus endereços de portos base numa tabela na área de dados da BIOS. Se o porto não estiver disponível ou se não existir, a entrada respectiva na tabela fica a 0. Para se saber que portas estão instaladas, convém consultar esta tabela e procurar por entradas diferentes de 0.

3

Page 4: Aula Teóricaw3.ualg.pt/~apcosta/pin/Teoricas/Teorica16.doc · Web viewUma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Modos de funcionamento das portas série - polling ou interrupção

A comunicação com uma porta série pode ser feita por polling ou por interrupção. Em polling, é executado um ciclo que repetidamente verifica a porta para ver se existe algum caracter a ser lido. Em caso afirmativo, o caracter é transferido para memória. Esta técnica é simples de programar e funciona bem para velocidades de comunicação baixas (até um baud rate de 1200). Acima deste valor pode haver perda de dados porque a porta série passa a receber caracteres mais rapidamente do que o programa consegue lê-los. Esta técnica tem a desvantagem de consumir mais tempo do processador.

Por interrupção, é mais eficaz mas é mais difícil de programar. Cada porta série está ligada a uma linha IRQ. Uma interrupção é sinalizada nessa linha de cada vez que um caracter é recebido pela porta. O programa ao detectar a interrupção, aponta para uma rotina que vai retirar o caracter da porta e colocá-lo na memória.

O UART

O UART (Universal Asynchronous Receiver Transmitter), é um chip que faz parte da porta série e cuja principal função é converter os dados do formato paralelo para o formato série e vice-versa. Dados a serem enviados pela porta série têm que ser convertidos do formato paralelo usado pelo computador, para o formato série, usado pela porta série, adicionando também o start bit, stop bit e bit de paridade. Do outro lado os dados têm que passar pelo processo inverso, ser convertidos na direcção contrária.

As funções do UART são controladas por dez registos de dados e de controlo, que são acedidos através dos sete portos de E/S atribuídos à porta.

Figura nº 4 – Os registos do UART.

4

Page 5: Aula Teóricaw3.ualg.pt/~apcosta/pin/Teoricas/Teorica16.doc · Web viewUma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Como se consegue aceder a dez registos, tendo apenas sete portos?Existem dois portos (o porto base e o porto base + 1) que estão reservados para mais do que um registo. Para definir que registo será acedido nestes dois portos, temos que controlar o valor do bit 7 do registo Line Control.

Funções de cada um dos registos do UART:

As funções dos registos Transmit Buffer e Receive Buffer são evidentes: Os dados escritos no Transmit Buffer são enviados pelo UART e os dados recebidos pelo UART são colocados no Receive Buffer para acesso. O bit 7 do registo Line Control está a 0.

Os dois registos Latch Divisor são usados para definir o baud rate da porta. Para ter acesso a estes registos o bit 7 do registo Line Control tem que estar a 1.

Os registos Interrupt Enabel e Interrup ID são cruciais quando se pretende programar por interrupções. O registo Interrupt Enable determina em que situações deverá ser activada a interrupção e o registo Interrupt ID identifica que evento originou a interrupção (Se bit 0 = 1, os bits 1 e 2 têm o código do evento).

O registo Line Control é usado para controlar vários aspectos da transmissão dos dados, incluindo a definição de alguns parâmetros de comunicação. Todos os bits ficam a 0 após o reset do UART.

O registo Modem Control controla o estado da ligação entre a porta série e o modem. O bit 3 define o modo de funcionamento da porta (se 0 é por polling, se 1 é por interrupção). Os bits 0 e 1 têm que estar ambos a 1 para que haja transmissão.O bit 4 se estiver a 1, activa um auto-teste do UART, em que este envia um caracter para si mesmo, testando se o recebe.

O registo Line Status contém informação sobre o estado da linha de transmissão dos dados. Indica as operações actualmente em progresso e a ocorrência de erros.Bit 0 = 1, está um caracter à espera de ser lido. Este bit fica automaticamente a 0 quando o caracter é lido.Bits 1 e 2, reportam erros (overrun - foi escrito um caracter antes do último ter sido lido, paridade - ocorreu um erro de paridade).Bit 5 = 1, THR vazio, pode ser lá colocado um caracter para ser enviado. Senão temos que esperar que fique a 0.Bit 6 = 1, TSR vazio, o último caracter foi transmitido na totalidade. Senão o caracter ainda não chegou ao receptor.

No registo Modem Status os últimos 4 bits reportam o estado do modem e os primeiros 4 bits indicam se houve alguma alteração desde a última leitura do registo.

Inicialização do UART

Para que se possa estabelecer a comunicação com outra porta série, o UART tem que primeiro ser inicializado:

I - aceder ao registo Receive Buffer para eliminar possíveis caracteres que tenham ficado da transmissão anterior.II - definir os vários parâmetros de comunicação (baud rate, tamanho da word, tipo de paridade, número de stop bits).

Quando se faz a configuração do baud rate, o UART reinicializa os outros registos, pelo que primeiro deve-se definir o baud rate e só depois os outros parâmetros.

5

Page 6: Aula Teóricaw3.ualg.pt/~apcosta/pin/Teoricas/Teorica16.doc · Web viewUma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Figuras com os registos do UART em detalhe:

6

Page 7: Aula Teóricaw3.ualg.pt/~apcosta/pin/Teoricas/Teorica16.doc · Web viewUma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

7

Page 8: Aula Teóricaw3.ualg.pt/~apcosta/pin/Teoricas/Teorica16.doc · Web viewUma word de 7 bits transmite caracteres ASCII compreendidos entre 0 e 127, enquanto uma word de 8 bits pode

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

8