980 likes | 1.15k Views
PROGRAMAÇÃO DE PERIFERICOS. NOMES: Marcos Goulart Paulo Weiss. Protocolos de comunicação RS-232C, RS-422 RS-485. O QUE É RS-232C.
E N D
PROGRAMAÇÃO DE PERIFERICOS NOMES: Marcos Goulart Paulo Weiss
O QUE É RS-232C • O standard RS-232C define interfaces mecânicas, elétricas e lógicas entre o dispositivo terminal, onde estão os dados(DTE/PC), e o dispositivo que transporta os dados (DCE/modem).
SERIAL X PARALELA As portas série são: • mais lentas (a porta série é oito vezes mais lenta do que a porta paralela) • podem comunicar a distâncias muito maiores • mais flexíveis no que respeita a transferência de dados bidirecionais.
Taxa de Transferência (Baud Rate) • Refere-se a velocidade com que os dados são enviados através de um canal e é medido em transições elétricas por segundo. • Na norma EIA232, a taxa de transferência e a taxa de bit (bit rate) são idênticas. Nesse caso, uma taxa de 9600 bauds corresponde a uma transferência de 9600 dados por segundo, ou um período de 104 ms (1/9600 s). • Outro conceito é a eficiência do canal de comunicação que é definido como o número de bits de informação utilizável (dados) enviados através do canal por segundo. Ele não inclui bits de sincronismo, formatação, e detecção de erro,
IDENTIFICAÇÃO DE ERROS • Ruídos e distúrbios elétricos momentâneos podem causar mudanças nos dados quando estão trafegando pelos canais de comunicação. Se o receptor falhar ao detectar isso, a mensagem recebida será incorreta, resultando em conseqüências possivelmente sérias. • Dois metodos usados: • Paridade • Checksun
PARIDADE O bit de paridade é adicionado ao pacote de dados com o propósito de detecção de erro. EX.: ADOTADO PARIDADE PAR • Dado Bit de Paridade • 1 0 1 1 0 0 1 0 0 • 1 0 0 0 1 0 1 0 1 • Na recepção do pacote, a paridade do dado precisa ser recomputada pelo hardware local e comparada com o bit de paridade recebido com os dados. • Se apenas 1 bit mudar de estado, a paridade não irá coincidir, e um erro será detectado. • Se um número par de bits for trocado, a paridade coincidirá e o dado com erro será validado. • Contudo, uma análise estatística dos erros de comunicação de dados tem mostrado que um erro com bit simples é muito mais provável que erros em múltiplos bits na presença de ruído randômico. Portanto, a paridade é um método confiável de detecção de erro.
CHECKSUM Outro método de detecção de erro envolve o cálculo de um “checksum” quando mensagens com mais de um byte são transmitidas pelo canal de comunicação. Um número de checksum é adicionado a seqüência do pacote de dados de tal forma que a soma dos dados mais o checksum é zero. • 1 0 1 1 0 0 0 1 • 1 0 0 0 0 1 1 0 • + 0 1 0 0 1 1 0 0 dados • 1 1 1 1 1 1 1 1 • 1 0 1 0 0 0 0 0 • ________________________ 1 1 0 0 1 0 0 0 1 0 soma aritmética • 0 0 1 0 0 0 1 0 Soma truncada – 8 bits • + 1 1 0 1 1 1 1 0 Checksum (complemento de 2) • ____________________ • 0 0 0 0 0 0 0 0 Soma + Checksum = 0 A correção de erros em uma transmissão, contudo, abaixa a eficiência do canal, e o resultado é uma queda na transmissão.
SISTEMAS SINCRONOS • Em sistemas síncronos, canais separados são usados para transmitir dados e informação de tempo. Como o transmissor é responsável pelos pulsos de dados e de temporização, o receptor irá ler o canal de dados apenas quando comandado pelo transmissor, e portanto a sincronização é garantida.
SISTEMAS ASSINCRONOS • A informação trafega por um canal único. • O transmissor e o receptor devem ser configurados antecipadamente. Um oscilador preciso no receptor irá gerar um sinal de clock interno que é igual (ou muito próximo) ao do transmissor. • O comprimento do pacote de dados é pequeno em sistemas assíncronos para minimizar o risco do oscilador do transmissor e do receptor variar. Quando osciladores a cristal são utilizados, a sincronização pode ser garantida sobre os 11 bits de período.
Exemplo do envio do caracter 'A': • A UART programada para uma palavra de tamanho 8 bits, com 1 stop bit, paridade impar e com uma velocidade de 300 bps. • Como a letra ‘A’ na tabela ASCII possui 2 bits em 1 e os demais em 0, o bit de paridade esta em 1 de forma a gerar um numero impar de bits em 1.
TIPOS DE LIGAÇÕES • Simplex pode haver transferência de dados do DTE para o CDE, ou vice-versa. • Half-duplex apenas uma linha de dados está disponível, e é usada alternadamente • Full-duplex atuam simultaneamente como receptores e transmissores. Existem fisicamente duas linhas de dados,
Características dos Sinais • Todas as linhas, sejam elas de informações de dados, temporização ou controle, podem ser representadas pelo mesmo circuito elétrico equivalente da figura acima • Este circuito equivalente aplica-se aos sinais originados tanto no DTE quanto no DCE. • A capacitância “Co” deve assumida como pequena e consistir apenas de elementos parasitas. “Ro” e “Vo” são escolhidos de forma tal que a corrente de curto-circuito não exceda a 500 mA.
Conversores de nível TTL – RS232 A maioria dos equipamentos digitais utilizam níveis TTL ou CMOS. Portanto, o primeiro passo para conectar um equipamento digital a uma interface RS232 é transformar níveis TTL (0 a 5 volts) em RS232 e vice-versa. Isto é feito por conversores de nível.
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. • 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 QUE É A 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. Adiciona-se também o start bit, stop bit e bit de paridade.
FUNCIONAMENTO DA UART MODO DE TRANSMISSÃO • A UART (8250) recebe dados em paralelo do PC, converte para serial e envia para outro dispositivo. • Depois de programada a UART executa este processo automaticamente. O microcomputador passa o Byte para a UART, ela automaticamente transforma para serial, acrescenta os bits de inicio, fim e paridade e transmite o dado.
REGISTRADOR DE DADOS • REGISTRADOR DE RECEPÇÃO: obtem-se o byte contido nesses registrador proveniente da conversão serial para paralelo dos bits de entrada • REGISTRADOR DE TRANSMISSÃO: uma operação de escrita carrega um byte nesse registrador para ser convertido de paralelo para serial
REGISTRADOR DE STATUS • REG. DE STATUS DE LINHA • REG. DE STATUS DO MODEM • REG. IDENTIF. DE INTERRUPÇÃO
Registrador de Status de Linha: utilizado para indicar condições de operação da linha. • Bit 0: 1 = existe byte pronto para ser lido no registrador de recepção. • Bit 1: 1 = um byte no registrador de recepção foi sobre escrito por um novo byte. 0 primeiro byte foi perdido. • Bit 2: 1 = erro de paridade. • Bit 3: 1 = stop bit invalido • Bit 4: 1 = interface detecta a linha em zero durante um tempo maior que a duração de um byte assincrono. • Bit 5: Buffer de transmissão vazio. 1 = um byte e movido do buffer de transmissão para o registro de deslocamento, onde o byte e transmitido serialmente. • Bit 6: Transmissor vazio. 1 = registro de deslocamento vazio.
Registrador de Status do Modem: utilizado para indicar o status do modem. • Bits 0 – 3: 1 = ocorreu uma mudanca no respectivo pino desde a ultima leitura na porta. • Bit 4 - 7: indica o status dos pinos da porta.
Registrador de Identificação de Interrupção: Apos uma interrupção, o bit 0 recebe 0, e os bits 1 e 2 determinam a fonte da interrupção.
Registradores de controle • REG. CONTROLE DE LINHA • REG.CONTROLE DE INTERRUPÇÃO • REG.CONTROLE MODEM
Registrador de Controle de Linha: utilizado para formatação dos dados. • Bits 0 - 1 : quantidade de bits por caracter. (00 = 5 bits, 01 = 6 bits, 10 = 7 bits, 11 = 8 bits) word • Bit 2 : quantidade de bits por caracter. (0 = 1 stop bit, 1 = 2 stop bits) Obs. Se a quantidade de bits por caracter for igual a 5, o numero de stop bits será automaticamente 1 ½ stop bits. • Bits 3 - 5 : determinam a paridade. (000 = sem paridade, 001 = paridade impar, 011 = paridade par, 101 = marca (mark), 111 = espaco (space) ) • Bit 6 : 1 = saida Tx vai para o nível lógico 0. • Bit 7 : 1 = registro de transmissão recebe o byte de menor ordem (LSB) da taxa de transmissão e o registro de controle de interrupção recebe o byte de maior ordem (MSB).
Registrador de Controle de Interrupção: utilizado para habilitar os quatro tipos de interrupção do 8250. • Bit 0: 1 = uma interrupção e gerada quando um byte estiver disponível no registrador de recepção. • Bit 1: 1 = uma interrupção e gerada quando a 8250 puder receber um novo byte para trasnmissão. • Bit 2: 1 = uma interrupção e gerada quando ocorrer um erro de paridade, overrun (sobre escrita) ou stop bit. • Bit 3: 1 = uma interrupção e gerada quando qualquer entrada da porta serial mudar de estado.
Registrador de Controle do Modem • Bit 0: 1 = ativa a saida DTR. • Bit 1: 1 = ativa a saida RTS. • Bit 2: Saida definida pelo usuário. Normalmente em 0. • Bit 3: Saida definida pelo usuário. Normalmente em 0.
Finalmente, para programar a taxa de transferencia (velocidade da comunicacao), e preciso utilizar o bit 7 (DLAB) do Registrador de Controle de Linha, em conjunto com o Registradores de Controle de Interrupcao e com o Registrador de Dados, da seguinte forma: • 1. Colocar o bit DLAB em 1 para indicar que a parte baixa (LSB) da programacao velocidade sera colocada no Registrador de Dados, e a parte alta (MSB) no Registrador de Controle de Interrupcao. • 2. Escrever no Registrador de Controle de Interrupcao o valor desejado de acordo com a tabela a seguir (00H para 9600bps, por exemplo). • 3. Escrever no Registrador de Dados o valor desejado de acordo com a tabela a seguir (0CH para 9600bps, por exemplo).
Dados(escrita/leitura) 03F8H Reg.Contr.Interrupção 03F9H Reg.Identif.Interrupção 03FAH Reg.Contr.Linha 03FBH Reg.Contr.Modem 03FCH Reg.Status Linha 03FDH Reg.Status Modem 03FEH ENDEREÇOS DA UART8250(COM1)
CONTROLE DO FLUXO DE DADOS • QUANDO É USADO? Quando a conexão entre um DTE e um DCE for superior à velocidade entre os DCES, haverá perda de dados no DTE. • COMO É FEITO O CONTROLE DO FLUXO DE DADOS? O controle de fluxo pode ser feito por hardware ou por software. • O controle do fluxo de dados por software, também conhecido como XON/XOFF utiliza 2 Caracteres ASCII; VANTAGEM: de não necessitar linhas adicionais, às linhas TxD e RxD. DESVANTAGEM: está no protocolo de comunicação que não poderá utilizar os caracteres ASCII 17 e 19 em suas mensagens. • O controle do fluxo de dados por hardware, também conhecido como RTS/CTS utiliza 2 linhas extras em seu cabo serial além das 2 linhas para transmissão de dados.
Evolução do RS232 • Resumindo o RS232 define os níveis de tensão, a temporização, o protocolo de troca de dados e a disposição mecânica dos conectores.
A interface RS232 tem como principal atrativo a sua implementação simples e barata.
Principais limitações • Operação por níveis de tensão, sendo extremamente suscetível a ruídos; • Utilização ponto a ponto, não permitindo que mais de dois dispositivos; usem a mesma “linha de dados”.
RS422 • Devido as limitações, foi desenvolvido o RS422 que é uma evolução do padrão RS232
A principal novidade é a implementação de linhas de transmissão balanceadas unidirecionais,não reversíveis, o que torna a comunicação extremamente imune a ruídos, permitindo maiores distancias.
Não permite múltiplos drivers somente múltiplos receivers • O principal uso do padrão RS422 é para estender a comunicação RS232 a grandes distâncias.
Características gerais: • Sinais: A RS422 possui sinais de comunicação Tx+, Rx+, Tx- e RX-, 4 fios. O modo de transmissão é por diferencial elétrico. Pode utilizar outros sinais para controle.