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 RS232

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

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