Você está na página 1de 30

Introdução

Comunicação Serial Síncrona


Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Comunicação Serial
PIC16F877A

Leandro Resende Mattioli

Centro Federal de Educação Tecnológica de Minas Gerais – Unidade Araxá

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Sumário

1 Introdução

2 Comunicação Serial Síncrona

3 Comunicação Serial Assíncrona

4 Porta Serial no PIC16F877A

5 Interface com PC

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Tipos de Comunicação
Direção do Fluxo de Dados

Simplex: Comunicação unidirecional


Half-Duplex: Comunicação bidirecional não simultânea
Full-Duplex: Comunicação bidirecional simultânea

(a) Simplex (b) Half-duplex (c) Full-duplex


Figura: Classificação quanto à direção do fluxo

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Tipos de Comunicação
Quantidade de Vias de Dados por Fluxo

Transmissão Paralela: Várias vias de dados para um único fluxo


Transmissão Serial: Apenas uma via de dados para cada fluxo

(a) Paralela (b) Serial


Figura: Classificação quanto ao número de vias de dados por fluxo

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Comunicação Síncrona
Mestre: Sistema responsável pela geração do sinal de clock
Escravo: Sistema que monitora o sinal de sincronismo,
reagindo nas transições relevantes.

Atenção
O mestre não é, necessariamente, o transmissor. Ele apenas gera o
sinal de sincronismo. O escravo deve diferenciar, de alguma forma,
as requisições de escrita das requisições de leitura.

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Comunicação Síncrona
Exemplo: Mestre recebendo dados

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Comunicação Síncrona
Exemplo: Mestre enviando dados

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Comunicação Assíncrona

Sem via dedicada ao sincronismo (clock implícito)


Condições START e STOP

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Visão Geral

RCSTA

SPBRG

USART TXSTA

RCREG

TXREG

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Configuração

Porta serial é habilitada por meio do bit RCSTAbits.SPEN


Bit TXSTAbits.SYNC define a comunicação assíncrona
(SYNC = 0) ou síncrona (SYNC = 1)
No modo síncrono, TXSTAbits.CSRC define a operação
como mestre (CSRC = 1) ou escravo (CSRC = 0)
Bit TXEN do registrador TXSTA habilita a transmissão serial
No modo síncrono mestre, o bit SREN do registrador RCSTA
habilita a recepção de um único byte, voltando para zero
automaticamente uma vez que o byte foi recebido.
Bit CREN do registrador RCSTA habilita a recepção
contínua (prioritário em relação a SREN)

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Configuração
Pacotes de 9 bits

Transmissão de 9 bits é ativada por TXSTAbits.TX9


Recepção de 9 bits é ativada por RCSTAbits.RX9
No bit TXSTAbits.TX9D o 9◦ bit é escrito.
O bit RCSTAbits.RX9D armazena o 9◦ bit recebido.

Bit de Paridade
O 9◦ bit pode ser o bit de paridade, mas a verificação de
integridade é feita por software.

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Configuração
Baud Rate

Baud Rate: taxa de transmissão em bits por segundo (bps)

Registrador SPBRG usado para a base de tempo necessária

Bit BRGH do registrador TXSTA seleciona o modo de alta


velocidade (BRGH = 1) ou baixa velocidade (BRGH = 0)

BRGH = 0 BRGH = 1
fOSC fOSC
Assíncrono Baud = Baud =
64(X + 1) 16(X + 1)
fOSC
Síncrono Baud = –
4(X + 1)
SPBRG = round(X ) 0 ≤ SPBRG ≤ 255
Sistemas Microprocessados Comunicação Serial
Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Configuração
Baud Rate

Erro relativo (devido ao arredondamento de X )

|BaudIDEAL − BaudREAL |
Erro% =
BaudIDEAL

Configurações Típicas para fOSC = 4 MHz

Baud (kbps) BRGH SPBRG Erro%

9.6 1 25 0.16

19.2 1 12 0.16

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Configuração
Resumo

Registrador RCSTA
SPEN Ativa porta serial
SREN Habilita recepção singular
CREN Habilita recepção contínua
RX9 Habilita recepção de 9 bits
RX9D Nono bit recebido
Registrador TXSTA
SYNC Comunicação síncrona (1) ou assíncrona (0)
CSRC Mestre (1) ou escravo (0) ; SYNC=1 apenas
TXEN Habilita a transmissão
BRGH Modo alta velocidade (1) ou baixa velocidade (0)
TX9 Habilita transmissão de 9 bits
TX9D Nono bit a ser enviado
Registrador SPBRG: Baud Rate
Sistemas Microprocessados Comunicação Serial
Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Recepção
Recepção serial usa um registrador de deslocamento, RSR, não
acessível para leitura e escrita
Byte recebido vai para um fila de 2 bytes, acessada pelo
registrador RCREG
Quando o software lê RCREG, a CPU é notificada que o byte
recebido será processado e então o registrador aponta para o
próximo byte da fila (caso exista)
Flag RCSTAbits.OERR (somente leitura) indica erro por
Overrun, situação onde já existem 2 bytes na fila e o bit de
parada de um terceiro pacote é detectado
nesse caso, o byte mais recente não sai do registrador RSR e é
descartado
na ocorrência desse erro, o flag deve ser zerado, indiretamente,
fazendo CREN = 0
Sistemas Microprocessados Comunicação Serial
Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Recepção

Flag RCSTAbits.FERR indica erro de janela, percebido


quando o sistema receptor não detecta um bit de parada (nível
1; condição STOP) após o último bit do pacote
Tanto FERR quando RX9D são enfileirados em sincronia com
RCREG

Rotina de Tratamento de Erros


O sistema de recepção deve ler FERR e RX9D antes de ler RCREG

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Recepção
Detecção de Endereços

Usado no modo de 9 bits


Útil quando um sistema deve especificar o destinatário da
mensagem (arquitetura multiponto)
Quando RCSTAbits.ADDEN=1
pacotes com 9◦ bit em nível baixo são ignorados
pacotes com 9◦ bit em nível alto são acessados por RCREG

Quando RCSTAbits.ADDEN=0
todos os pacotes são recebidos e acessados por RCREG

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Recepção
Detecção de Endereços

Cada receptor tem seu próprio endereço de 8 bits

Receptor inicia com ADDEN = 1


pacotes de endereço de outros destinatários são ignorados
quando recebe seu próprio endereço, passa para o modo
normal (ADDEN = 0)

Uma vez no modo normal, pacotes com 9◦ bit em nível alto


são analisados:
se contiverem endereço de outros destinatários, byte lido é
ignorado e o receptor volta para o estado ADDEN = 1

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Transmissão

Transmissão serial também usa um registrador de


deslocamento, TSR, não acessível para leitura e escrita

Transmissão é disparada pela escrita no registrador TXREG


para a transmissão de 9 bits, TX9D deve ser preparado antes
de se escrever em TXREG

Bit TXSTAbits.TRMT indica se o registrador de


deslocamento está vazio (TRMT = 1) ou cheio
(TRMT = 0)

Ao transmitir um novo byte, TSR deve estar vazio


Sistemas Microprocessados Comunicação Serial
Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Interrupção e Flags de Eventos

Flag PIR1bits.RCIF indica recepção de um byte e é


automaticamente zerado após a leitura de RCREG

Flag PIR1bits.TXIF indica início da transmissão de um novo


byte

Chaves individuais PIE1bits.RCIE (recepção) e


PIE1bits.TXIE (transmissão)

Chave de grupo INTCONbits.PEIE

Chave global INTCONbits.GIE


Sistemas Microprocessados Comunicação Serial
Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Exemplo
Programa Echo

1 #include "config877a.h"
2 #include <xc.h>
3 void main() {
4 TRISCbits.TRISC6 = 1; //para usar o periférico,
5 TRISCbits.TRISC7 = 1; //RC6 e RC7 devem ser entradas
6 TXSTAbits.TXEN = 1; //ativa transmissão
7 TXSTAbits.BRGH = 1; //Modo de alta velocidade
8 SPBRG = 25; //BaudRate = 9600bps
9 RCSTAbits.SPEN = 1; //ativa porta serial
10 RCSTAbits.CREN = 1; //habilita recepção contínua
11 INTCONbits.GIE = 1; //chave global
12 INTCONbits.PEIE = 1; //chave de grupo
13 PIE1bits.RCIE = 1; //chave individual (recepção)
14 while(1); //loop infinito
15 }
Sistemas Microprocessados Comunicação Serial
Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Exemplo
Programa Echo (continuação)

16 void interrupt isr() {


17 TXREG = RCREG; //envia o que recebeu
18 while(!TXSTAbits.TMRT); //aguarda que o byte seja enviado
19 }

Algumas configurações foram omitidas por coincidirem com o


valor padrão após o RESET
Flag da interrupção de recepção é zerado automaticamente
após a leitura de RCREG

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Características Elétricas

Padrão Nível Lógico 0 Nível Lógico 1

TTL 0 ≤ vLOW ≤ 0, 8V 0 ≤ vHIGH ≤ 0, 8V

RS-232 +3V ≤ vLOW ≤ +15V −3V ≤ vHIGH ≤ −15V

RS-485 Voa − Vob < +200mV Voa − Vob < −200mV

USB 2.0 Low Speed D+ − D− = +200mV D+ − D− = −200mV

USB 2.0 Full Speed D+ − D− = +200mV D+ − D− = −200mV

USB 2.0 High Speed D+ − D− = −200mV D+ − D− = +200mV

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Interface RS-232

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Interface RS-232

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Interface RS-485

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Interface RS-485
Tensão Diferencial e Resistência a Ruídos

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Interface RS-485

Sistemas Microprocessados Comunicação Serial


Introdução
Comunicação Serial Síncrona
Comunicação Serial Assíncrona
Porta Serial no PIC16F877A
Interface com PC

Interface USB

Sistemas Microprocessados Comunicação Serial


Bibliografia

Datasheet do PIC16F877A
http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
PICmicro Mid-Range MCU Family Reference Manual
http://ww1.microchip.com/downloads/en/DeviceDoc/31000a.pdf
Desbravando o PIC - Ampliado e Atualizado para PIC 16F628A
David José de Souza

Você também pode gostar