Вы находитесь на странице: 1из 12

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE MATO GROSSO

CAMPUS OCTAYDE JORGE DA SILVA

COMUNICAO SERIAL
AUSART e MSSP no PIC16F876

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE MATO GROSSO


CAMPUS OCTAYDE JORGE DA SILVA

COMUNICAO SERIAL
AUSART e MSSP no PIC16F876

MICAEL B. GAIER
RAPHAEL SANTOS SILVA

Relatrio apresentado como avaliao ao


Curso de Tecnologia em Automao
Industrial, 5 Semestre, Perodo Noturno,
Disciplina
de
Microcontroladores,
ministrada
pelo
Professor
Victor
Yoshimura.

1. Addressable Universal Synchronous Asynchronous


Receiver Transmitter (USART)

O mdulo USART, tambm conhecido como SCI ou Interface de


Comunicao Serial, um dos dois mdulos seriais de entrada e sada de dados
contido no PIC16F876.
O mdulo USART pode ser configurado de duas maneiras:

Sistema assncrono full-duplex: pode se comunicar tanto com dispositivos


perifricos como com computadores pessoais;

Sistema sncrono half-duplex: pode se comunicar com dispositivos perifricos


como circuitos integrados analgico/digitais (A/D) ou digital/analgicos (D/A),
EEPROMs, etc.
O USART pode ser configurado atravs dos modos:

Assincrono: full-duplex

Sincrono (mestre): half-duplex

Sncrono (escravo): half-duplex

Alm disso, o mdulo USART tambm possui um multiprocessador de


comunicao com capacidade de deteco de endereamento de 9 bits.
O PIC16F876 possui dois registradores de controle dos dados USART:

TXSTA (Registrador de controle e status de transmisso)

R/W-0

R/W-0

R/W-0

R/W-0

U-0

R/W-0

R-1

R/W-0

CSRC

TX9

TXEN

SYNC

--

BRGH

TRMT

TX9D

Bit 7

Bit 6
Bit 5
Bit 4

CSRC: bit de seleo de origem do clock


Modo assncrono: no importa
Modo sncrono:
1 = modo mestre
0 = modo escravo
TX9: ativa transmisso de nono bit
TXEN: bit de ativao de transmisso
SYNC: bit de seleo do modo USART
1 = modo sncrino

0 = modo assncrono
No implementado
BRGH: Bit de seleo de alta taxa de transmisso
1 = alta velocidade
0 = baixa velocidade
TRMT: bit de status de transmisso de deslocamento
1 = TSR vazio
0 = TSR cheio
TX9D: nono bit de transmisso de dados

Bit 3
Bit 2

Bit 1

Bit 0

RCSTA (Registrador de controle e status de recepo)

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R-0

R-0

R-x

SPEN

RX9

SREN

CREN

ADDEN

FERR

OERR

RX9D

Bit 7

SPEN: bit de ativao de porta serial


1 = porta serial ativada
0 = porta serial desativada
RX9: ativa recepo de nono bit
SREN: bit de ativao de recepo simples
Modo assncrono: no importa
Modo sncrono, mestre: (1) ativa recepo simples
Modo sncrono, escravo: no importa
CREN: bit de ativao de recepo contnua
Modo assncrono: (1) ativa recepo contnua
Modo sncrono: (1) ativa recepo contnua
ADDEN: bit de ativao de detectao de endereo
FERR: bit de erro de construo
1 = erro de construo
0 = nenhum erro
OERR: erro de overflow: (1) ocorreu erro
RX9D: nono bit de recepo de dados

Bit 6
Bit 5

Bit 4

Bit 3
Bit 2

Bit 1
Bit 0

1.1.

Gerador de Taxa de Transmisso USART (BRG)

O Gerador de taxa de transmisso suporta tanto os modos sncrono como


assncrono. So reservados 8 bits para a taxa de gerao. Um registrador
denominado SPBRG controla o perodo de funcionamento do temporizador do
mdulo, j o bit BRGH controla a taxa de transmisso. Para obter a taxa de
transmisso do mdulo e necessrio seguir as seguintes frmulas:

X= valor contido em SPBRG (de 0 a 255)


1.2.

Modo assncrono

Neste modo, o formato de dados mais comum de 8 bits e a transmisso e


recepo de dados comeam a partir do bit menos significativo. A recepo e
transmisso de dados ocorrem de modos independentes, porm, utilizam o mesmo
formato de dados e taxa de transmisso. O modo assncrono detectado se o bit
SYNC estiver com valor 0 e durante o modo sleep o modo assncrono desativado.
Transmisso em modo assncrono
O modo de transmisso de dados assncrono se entende pelo seguinte
diagrama:

a.
b.
c.
d.
e.
f.
g.
h.

A transmisso assncrona obedece aos seguintes passos:


Inicializa o registrador SPBRG com a taxa de transmisso apropriada
Ativa a porta serial assncrona limpando o bit SYNC e setando o bit SPEN.
Se desejar ativar interrupes pelo modo USART, deve-se ativar o bit TXIE
Se for desejado a transmisso de 9 bits, o bit TX9 dever ser setado.
Inicializa a transmisso setando o bit TXEN, no qual tambm setar o bit
TXIF.
Se a transmisso de 9 bits for selecionada, o nono bit ser armazenado em
TX9D.
Armazena os dados no registrador TXREG
Se estiver usando interrupes, verifica se os devidos bits de configuraes
esto setados.
Recepo em modo assncrono
A recepo de dados em modo assncrono obedece aos seguintes passos:

a. Inicializa o registrador SPBRG com a taxa de transmisso apropriada. Se a


transmisso de dados em alta velocidade for desejada, deve-se setar o bit
BRGH.
b. Ativa a porta serial assncrona limpando o bit SYNC e setando o bit SPEN.
c. Se for desejado interrupes deve-se setar o bit RCIE.
d. Para ativar recepo de 9 bits, se seta o bit RX9.
e. Ativa a recepo setando o bit CREN.
f. Flag RCIF ser setado quando a recepo estiver completa e a interrupo
ser ativada, se RCIE estiver setado.
g. L o registrador RCSTA para obter o nono bit, se for desejado, e para
determinar se ocorreu algum erro durante a recepo.
h. L os bits de dados recebidos lendo o registrador RCREG.
i. Se ocorreu algum erro o bit CREN ser limpo.
j. Se estiver usando interrupes, verifica se os devidos bits de configuraes
esto setados.

1.3.

Modo sncrono mestre

Em conexo USART sncrona, modo mestre, a conexo de dados halfduplex e a transmisso e recepo no ocorrem ao mesmo tempo. O modo sncrono
ativado setando o bit SYNC e ativando o bit SPEN, configurando os pinos RC6
como CK (clock) e RC7 como DT (data, dados). O modo mestre indica que o
processador transmite o clock mestre, principal, em CK.
Transmisso em modo sncrono - mestre
Para voc realizar a transmisso USART sncrona em modo mestre voc
deve obedecer aos seguintes passos:
a. Inicializa o registrador SPBRG com a taxa de transmisso apropriada.
b. Ativa o modo de sincronizao mestre setando os bits SYNC, SPEN e CSRC.
c. Se as interrupes so desejadas deve-se setar o bit TXIE.
d. Se o modo de transmisso de 9 bits for desejado, deve-se setar o bit TX9.
e. Ativa a transmisso setando o bit TXEN.
f. Se o modo de 9 bits foi selecionado, o nono bit deve ser carregado no bit
TX9D.
g. Inicia a transmisso carregando os dados para o registrador TXREG.
h. Se interrupes esto sendo usadas, verifica se GIE e PEIE de INTCON
esto setados.
Recepo em modo sncrono - mestre
Para voc realizar a recepo USART sncrona em modo mestre voc deve
obedecer aos seguintes passos:
a. Inicializa o registrador SPBRG com a taxa de transmisso apropriada.
b. Ativa a sincronizao setando os bits SYNC, SPEN e CSRC.

c.
d.
e.
f.

Verificar se bits CREN e SREN esto zerados.


Ativar RCIE se for desejado interrupes.
Ativar RX9 se recepo de 9 bits for desejada.
Para recepo simples deve-se setar o bit SREN. Para recepo contnua
seta-se o bit CREN.
g. Se a interrupo estiver ativada o bit RCIF do flag de interrupo ser setado
quando a recepo estiver completa.
h. L o registrador RCSTA para obter o nono bit, se ele estiver ativado, e
determinar se ocorreu algum erro durante a recepo.
i. L os 8 bits de dados recebidos contido no registrador RCREG.
j. Se havia ocorrido algum erro, ir limpar o registrador CREN, eliminando-o.
k. Se estiver utilizando interrupes verifica se os bits GIE e PEIE esto
setados.
1.4.

Modo sncrono escravo

A diferena do modo escravo para o modo mestre que a mudana de clock


fornecida externamente atravs do pino RC6. Isto permite que o dispositivo receba
ou transmita dados durante o modo sleep. O modo escravo pode ser ativado
zerando o bit CSRC.
Transmisso em modo sncrono - escravo
A operao de sincronismo para os modos mestre ou escravo feita da
mesma maneira, com exceo caso esteja no modo sleep. Se duas palavras forem
escritas em TXREG a instruo SLEEP executada ir ocorrer:
a. A primeira palavra ser imediatamente transferida para o registrador TSR e
ser transmitida.
b. A segunda palavra permanecer no registrador TXREG.
O flag do bit TCIF no ser setado.
c. Quando a primeira palavra for movida para fora de TSR, o registradro
TXREG ir transferir a segunda palavra para TSR e o flag de TXIF ser
setado.
d. Se o bit TCIE estiver setado, a interrupo ir acordar o chip, e se GIE
estiver ativado, a rotina de interrupo ir ocorrer.
Recepo em modo sncrono - escravo
A operao de recepo tanto para o modo mestre como escravo idntica,
com exceo quando o modo sleep estiver ativado. Se a recepo for ativada
setando o bit CREN antes de entrar no modo sleep, uma palavra poder ser
recebida durante o processo.
Aps receber toda a palavra, o registrador RSR ir transferir os dados para o
registrador RCREG e se o bit RCIE estiver setado, uma interrupo ser gerada e o
PIC16F876 ir acordar, caso o bit GIE estiver setado, o programa ser
redirecionado para a rotina de interrupo.

2. Master Synchronous Serial Port (MSSP)

O mdulo MSSP (Master Synchronous Serial Port) uma interface serial


utilizada para comunicao com outros perifricos ou outros microcontroladores.
Estes dispositivos podem ser EEPROMS, registradores de deslocamento, drivers de
displays, conversores A/D, etc. O mdulo MSSO possui sois modos de operao>
Serial Peripheral Interface (SPI) e Inter-Integrated Circuit (IC), em modo mestre ou
escravo.
O mdulo MSSP possui trs principais registradores associados a ele:
SSPSTAT, SSPCON e SSPCON2. O uso destes registradores acontecer
diferentemente de acordo com o modo usado em operao.
2.1. Modo SPI
O modo SPI permite que 8 bits de dados sejam sincronizados, transmitidos e
recebidos simultaneamente. Todos os quatro modos de modos SPI so suportados e
a comunicao pode ocorrer por at quatro pinos:
a. Seria Data Out (SDO) RC5/SDO
b. Serial Data In (SDI) RC4/SDI/DAS
c. Serial Clock (SCK) RC3/SCK/SCL
d. Slave Select (SS) RA5 (utilizado apenas quando estiver operando como
modo escravo)
O diagrama de blocos a seguir utilizado para o MODO SPI.

O mdulo SSP possui quatro registradores para o mdulo de operao SPI:


a. SSPCON Registrador de Controle MSSP
b. SSPSTAT Registrador de Status MSSP
c. SSPBUF Registrador Transmissor/Receptor de Buffer
d. SSPSR Registrador de deslocamento de MSSP
Os registradores SSPCON e SSPSTAT realizam o controle e verificam o status
do modo de operao SPI. SSPSR o registrador de deslocamento que utilizado
para entrada ou sada de dados, j o SSPBUF o registrador no qual verifica de
qual byte so lidos ou escritos os dados.
O MSSP consiste na recepo e transmisso de dados atravs dos
registradores SSPBUF e SSPSR, que desloca os dados para dentro ou fora do
PIC16F876. O registrador SSPBUF mantm os dados que foram escritos em SSPSR
at que a recepo de dados esteja completa, quando todos os bits forem recebidos,
o byte em SSRSR movido para SSPBUF, quando for detectado que a operao foi
realizada, o flag de interrupo BF ser setado, e se as interrupes estiverem
ativas, a rotina ser desviada para as interrupes. O registrador SSPSR no pode
ser diretamente acessado, para seu acesso necessrio o endereamento atravs
de SSPBUF.
Para ativar a porta serial o bit SSPEN deve ser setado, este mesmo bit
usado para reconfigurar ou reiniciar o modo SPI. Aps isso, para a porta serial
funcionar corretamente deve-se ajustar a direo de dados dos bits envolvidos no
processo. SDI ser automaticamente controlado pelo processo, enquanto SDO
(TRISC,5) deve ser zerado. Para o modo mestre o bit SCK (TRISC,3) desse ser
zerado e para o modo escravo o mesmo deve ser setado, da mesma forma, SS
(TRISC,4) dever ser setado.

Modo Mestre

O modo mestre pode iniciar a transmisso de dados a qualquer momento,


pois o mesmo que realiza o controle de SCK, ele determina quando o processador
2, o escravo, dever transmitir dados atravs de protocolo.
No modo mestre a transmisso e recepo de dados ocorrem atravs de
SSPBUF. Se o SPI estiver apenas recebendo dados, o bit SDO poder ser
desativado. No modo mestre, a taxa do clock dever ser programada com uma das
seguintes configuraes, pois permite uma mxima taxa de dados de at 40MHz
(10.00 Mbps):
FOSC/4 (or TCY)
FOSC/16 (or 4 TCY)
FOSC/64 (or 16 TCY)
Timer2 output/2
Modo escravo
No modo escravo os dados so recebidos e transmitidos atravs de pulsos de
um clock externo que ir aparecer no bit SCK. Quando o ultimo bit for identificado, o
bit de interrupo SSPIF ser setado.
No modo escravo, a origem do clock externa. Durante o modo sleep, pode
ocorrer transmisso e recepo de dados, dessa forma, quando um byte for
recebido, o dispositivo ir acordar.
2.2. IC Mode
O mdulo MSSP no modo IC possui uma implementao de todas as funes
dos modos mestre e escravo, e pode fornecer interrupes tanto ao iniciar quanto ao
parar. O modo IC pode funcionar em endereamento tanto com 7-bits como em 10bits. So usados os seguintes pinos para a transferncia de dados, que devem ser
configurados em TRISC:
SCL (serial clock): RC3/SCK/SCL
SDA (serial data): RC4/SDI/DAS
O mdulo MSSP possui 6 registradores para operaes de IC:
SSPCON: registrador de controle de MSSP
SSPCON2: registrador de controle de MSSP 2
SSPSTAT: Registrador de status
SSPBUF: Registrador buffer de transmisso/recepo serial
SSPSR: registrador de descolamento
SSPADD: registrador de endereamento
Os registradores SSPCON, SSPCON2 e SSPSTAT do modo IC so os
registradores de controle e status. Todos os bits dos registradores SSPCON e
SSPCON2 so de leitura e escrita, j os seis menores bits de SSPSTAT so de
apenas leitura e os dois superiores so de leitura e escrita.
O registrador SSPRS utilizado para o deslocamento de dados para fora do
PIC16F876, j o registrador SSPBUF o registrador no qual os dados so escritos
ou lidos.

O registrador SSPADD mantm armazenado o endereo do dispositivo


escravo quando est configurado neste modo. Para informaes sobre cada bit dos
registradores, vide datasheet do dispositivo.
O mdulo MSSP ativado setando o bit SSPEN (SSPCON,5). Os bist de 0 a
3 de SSPCON permite o configurao dos modos de conexo mestre ou escravo
para endereamento 7 bits ou 10 bits.

Modo escravo
No modo escravo os pinos SCL e SDA devem ser configurados em TRISC. O
modo escravo sempre gerar uma interrupo. Neste modo pode ser escolhido o
tipo de interrupes, nos bits de inicio ou stop.
O funcionamento bsico do modulo IC depende do clock para sincronizar a
operao, quando o dispositivo mestre e o escravo estiverem sincronizados com o
clock a troca de dados poder ser iniciada pelo mestre, e ficar aguardando a
condio de incio (start).
Quando o mdulo MSSP estiver ativado, ele ir aguardar pela condio de
inicio (start), aps isto 8 bits sero deslocados para o registrador SSPSR. Ento, o
mestre envia o bit de start e depois o endereo do escravo em 7 bits, e depois envia
um bit dizendo se ir ler ou escrever. Depois disso o dispositivo de envio aguardar
o ACK (Acknowledge, confirmao) do escravo, se o dispositivo escravo enviar ACK
com valor 1 a transferncia continua at o mestre mandar um bit para parar.
Modo mestre
Para ativar o modo mestre no PIC16F876 deve ser configurar a taxa de
transmisso no registrador SSPADD, o slew rate no registrador SSPSTAT e
selecionar o modo mestre em SSPCON.
A transmisso de dados iniciar zerando o bit SEN em SSPCON2 e o
dispositivo ficar aguardando por um instante a condio de start, aps certo
tempo, os dados devem ser carregados em SSPBUF e a transmisso ser iniciada.
Cada componente tem um endereo prprio e o mestre enviar o endereo do
dispositivo escravo na qual deseja comunicao, seguido da informao de leitura e
escrita. Ento o mestre deve esperar pelo bit de confirmao que ser feito limpando
bit ACKSTAT em SSPCON2. A transmisso ir terminar quando o bit SEN em
SSPCON2 for setado.
Para a recepo de dados depois de o PIC16F876 receber o endereo e o bit
de incio for ativado, o escravo ir enviar um byte que ser armazenado em SSPSR
e que ser carregado em SSPBUF que poder ser lido. Depois de ler este
dispositivo, o bit ACK ser enviado informando que o PIC esta apto a receber novo
byte.

Gerador de Taxa de Transmisso


Toda a comunicao que acontece no pino DAS dever ser sincronizada com
o clock gerado no dispositivo mestre. A frequncia do clock depende do oscilador e
do valor que for armazenado no registrador SSPADD, assim, a frequncia de
oscilao dada pela formula: