Você está na página 1de 8

Programao em BASIC para o PIC

Comunicao Serial
Vitor Amadeu Souza
Introduo
Nesta quarta srie relatando o uso do mikroBASIC para programar o PIC,
veremos como realizar a comunicao serial entre o PC e o microcontrolador. A
idia ser ligar ou desligar um rel instalado na placa didtica, de acordo com o
caracter recebido via comunicao serial. Esta aplicao seria bem interessante
para no caso de alguma automao residencial, onde em determinados momentos
alguma lmpada poderia ligar ou desligar de acordo com o horrio ajustado no
PC. A comunicao utilizada do tipo RS232, e os nveis lgicos associados ao
nvel alto e baixo deste tipo de comunicao e do TTL podem ser observados na
tabela 1.
Nveis / Tipos
TTL
RS232
1
5 Vcc
-3 a 18V
0
0 Vcc
3 a 18 V
Tabela 1 Nveis de comunicao
Note que os nveis utilizados pelo PIC so os nveis TTL enquanto o
utilizado pelo PC, o RS232. Para compatibilizar um nvel ao outro, necessrio
um conversor de nveis de TTL para RS232 e vice-versa. Um conversor muito
popular hoje no mercado o MAX232 desenvolvido pela Maxim. Este conversor
pode ser observado na figura 1.

Figura 1 Conversor TTL RS232 e vice-versa


O esquema bsico de ligao entre o microcontrolador e o PC, de forma
com que os mesmos possam se comunicar est apresentado na figura 2.

TX - 232

TX - TTL

MAX232

RX - 232

RX-TTL

Figura 2 Esquema de ligao bsico para comunicao


Observe que o circuito de converso, que o CI MAX232 e o
microcontrolador ficam ambos colocados na placa PICLAB18F442.
Para entendermos melhor o funcionamento deste tipo de comunicao,
vamos plotar um grfico que ir apresentar a comunicao no nvel TTL e RS232.
Verifique a transmisso do byte 01101010 na figura 3.

TTL

R
e
p
o
u
s
o

S
t
a
r
t

B
i
t
0

B
i
t
1

B
i
t
2

B
i
t
3

B
i
t
4

B
i
t
5

B
i
t
6

B
i
t
7

S
t
o
p

R
e
p
o
u
s
o

RS232

Figura 3 Plotagem do grfico na linha TTL e RS232


Observe que no momento em que no h comunicao, a linha TTL
permanece em nvel alto. Este o conhecido estado de repouso, ou seja, o
momento em que no h comunicao na linha e a mesma est pronta para
comear. Toda vez em que um byte ser enviado, primeiramente temos o bit de

start (incio) e logo em seguida, os oito bits do byte a ser transmitido, comeando
sempre pelo bit menos significativo. Para finalizar a comunicao, temos o bit de
stop (parada) em que neste momento, a linha de dados volta ao seu estado de
repouso.
Toda comunicao serial, seja ela USB, RS485 ou RS232 utiliza uma taxa
de comunicao (baud rate). Com o baud rate, podemos saber quantos bits
podem trafegar pela linha em um intervalo de 1 segundo. Comumente os baud
rates so mltiplos de 300 bps (bits por segundo), encontrando desta forma taxas
de comunicao como por exemplo 2400 bps, 4800 bps e 9600 bps. Em nosso
exemplo, iremos utilizar a taxa de 9600 bps e para acharmos o tempo que 1 bit
demora para ser transmitido nesta taxa, basta dividirmos 1 pelo nmero de bits por
segundo. No grfico plotado na figura 3, considerando o baud rate de 9600 bps,
achamos o tempo de aproximadamente de 104 us, pois 1/9600 igual a este
valor.
Existem basicamente trs modos de comunicao utilizados, sendo estes o
simplex, half duplex e full duplex. A comunicao simplex aquela em que se d
em somente 1 sentido. Um exemplo seria o caso da televiso, em que o usurio
somente consegue receber dados oriundos da central de transmisso e nunca
consegue fazer o processo inverso. Poderamos representar a comunicao
simplex como uma seta de uma s direo, como apresentado na figura 4.

Figura 4 Representao da comunicao Simplex


J a comunicao half duplex se d nos dois sentidos, porm neste caso a
linha de comunicao compartilhada, sendo em instante somente de
transmisso e em outro somente de recepo. Existem aparelhos telefnicos,
como o da operadora NEXTEL que um exemplo deste tipo de comunicao.
Neste caso, poderamos representar este tipo de comunicao como apresentado
na figura 5, com uma seta nica com comunicao bidirecional.

Figura 5 Representao da comunicao Half Duplex


J a comunicao full duplex permite a troca de dados simultaneamente,
pois temos duas linhas, sendo uma de transmisso e outra de recepo. Um
exemplo corriqueiro seria o uso de um celular, em que duas pessoas conseguem
falar no mesmo momento e trocar informaes. A representao desta
comunicao seria como apresentado na figura 6, com uma seta somente de
transmisso e outra somente de recepo.

Figura 6 Representao da comunicao Full Duplex


A comunicao do tipo RS232 do tipo full duplex, pois temos uma linha
somente de transmisso e outra somente de recepo. Desta forma, enquanto
estamos transmitindo um byte pela linha de TX, podemos perfeitamente estar
recebendo outro pela linha de RX.
Recursos de Hardware
O esquema eltrico deste exemplo pode ser observado na figura 7.
Observe que as linhas de comunicao do PIC ficam ligadas ao MAX232 e no
pino RB0 est conectado o rel do nosso exemplo. Alm disso, o microcontrolador
e o MAX232 ficam ambos alimentados atravs de uma fonte de 5 Vcc.

Figura 7 Esquema Eltrico do Exemplo

Fluxograma
O fluxograma que ir reger este exemplo est apresentado na figura 8. Note
que primeiramente feita a configurao do microcontrolador, como a
configurao dos pinos e da USART e logo em seguida o sistema entra em loop
infinito verificando a existncia de algum byte no canal serial. Ao ser verificado que
algum byte foi recebido, checado se o mesmo o caracter A e caso seja, o rel
acionado. Caso o caracter no seja o A, o buffer novamente testado e caso
seja o B, o rel desligado. Quaisquer caracteres diferentes destes dois no
tero efeito sobre o sistema.
Incio

Configuraes Iniciais
Configura USART

Recebeu algum
byte?
No
Sim

Liga o rel

Byte recebido o
A?
No
Sim

Desliga o rel

Byte recebido o
B?
No
Sim

Figura 8 Fluxograma do exemplo

Recursos de Software
Existem basicamente quatro funes disponveis para o acesso a porta de
comunicao serial do microcontrolador. Estas esto apresentadas na tabela 2.
usart_init (baud rate)
usart_read
usart_data_ready
usart_write_text (texto a escrever)
Tabela 2 Funes de acesso a comunicao serial
Atravs da funo usart_init podemos inicializar a mquina de comunicao
serial com um baud rate definido pelo programa. Como no nosso caso a taxa ser
de 9600 bps, este comando ser definido como usart_init (9600). Utilizando a
funo usart_read, podemos ler o byte que foi recebido e est armazenado no
buffer do microcontrolador. J a funo usart_data_ready permite com que
saibamos se existe ou no um byte para ser feita a leitura. Sempre antes de
lermos o buffer de comunicao atravs da funo usart_read, precisamos saber
se existe algum byte l e atravs do teste da usart_data_ready podemos obter
esta informao. Com a funo usart_write_text podemos enviar um dado para o
PC.
Software
O software completo que permitir observar o funcionamento deste
exemplo est apresentado no box 1.
program comunicacao
main:
trisb.0=0
usart_init(9600)
repete:
if usart_data_ready=1 then
if usart_read="A" then
portb.0=1
end if
if usart_read="B" then
portb.0=0
end if
end if
goto repete
end.

Box 1 Programa do exemplo

Vamos entender melhor o cdigo apresentado. Logo destarte observamos o


pino RB0 configurado como sada, atravs do comando trisb.0=0. Esta
configurao feita pois neste pino est ligado o rel. Logo na linha abaixo a usart
configurada para funcionar a 9600 bps atravs da funo usart_init. No ponto
seguinte, o programa fica preso em loop testando continuamente se o existe ou
no um dado no buffer de comunicao. Ao ser detectado a presena de um byte,
verificado se o caracter o A ou o B e caso seja algum deles ser tomada a
ao de acordo com o caracter.
Para que possamos enviar os dados do PC para o microcontrolador,
utilizaremos o software chamado Communication Terminal que j vem no prprio
mikroBASIC. Para acessar este software, v em Tools -> Usart Terminal. Ser
aberta uma tela como apresentado na figura 9.

Figura 9 Utilizando o Communication Terminal


Escolha em Com Port a porta que esteja livre em seu PC para
comunicao. Em seguida, em baud mantenha a taxa de 9600 bps. Configure em
Stop Bit a opo One Stop Bit e em paridade None. Utilizaremos a comunicao
de 8 bits de dados, escolha desta forma esta opo em Data Bits. Muito bem, com
estes parmetros ajustados podemos iniciar a comunicao. Para isso, clique em

Connect. Neste momento a porta estar aberta e pronta para enviar dados. Na
caixa Communication, digite o caracter A e clique em send. Neste momento, o
rel dever ser acionado. Para desativar o mesmo o processo o mesmo,
bastando apenas trocar o caracter para B.
Concluso
A comunicao serial a melhor forma de permitir com que um ou mais
dispositivos possam se comunicar em uma rede. Existem hoje vrios barramentos
seriais disponveis, como por exemplo o CAN, RS485 e USB. Vimos neste artigo
os passos para controlar um rel remotamente e podemos expandir esta idia
para uma placa que em conjunto com um software devidamente configurado no
PC, permita controlar todo o funcionamento de uma casa ou indstria. Aplicaes
como esta, sero corriqueiras em um futuro prximo, em que a domtica cada dia
mais invade as nossas casas. Comentrios, dvidas ou sugestes, deixo
novamente o meu e-mail disponvel para contato, que vitor@cerne-tec.com.br.

Você também pode gostar