Arquivos do Blog

Utilizando a Porta Serial do PIC – Linguagem C

As interfaces entre dispositivos e/ou com o PC em determinadas aplicações se faz extremamente necessária. Seja para transmissão e monitoramento, comunicação com módulos remotos, gerenciamento de periféricos, etc.

Vou abordar aqui a utilização da comunicação serial do PIC, o velho e já consagrado padrão RS 232. Este tipo de protocolo de comunicação ainda é bastante utilizado hoje em dia, seja para envio de dados a supervisórios, recebimento de dados via BARCODE e comunicação entre dispositivos.

A maioria dos MicroControladores PIC possui um hardware especifico para estabelecer e controlar a comunicação serial, a USART. Este controle é feito sob um modo Assíncrono, isto é, toda a tratativa de recebimento é feita quando é recebido algum pacote de dados ou quando é enviado, independente da posição em que o programa está rodando, ele é parado, sua posição é armazenado na pilha e após finalizar a tratativa da USART ele é então retomado e partirá do ponto gravado na pilha.

Não entrarei no mérito da descrição do protocolo RS 232 até por que o mesmo já se encontra amplamente difundido. Caso você ainda tenha alguma dúvida recomendo os links abaixo:

www.rogercom.com

http://pt.wikipedia.org/wiki/RS-232

OK vamos direto ao código! Uma vez que habilitamos o a USART no inicio do código através da seguinte diretiva:

#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7)

Uma vez definida e habilitada a USART, o Compilador irá ativar a interrupção de tratamento da Serial, em seu modo Assíncrono. Nesse ponto, toda a rotina irá parar para tratar os dados que chegarão ou serão enviados pela porta serial.

O PIC terá então como saída padrão a USART. Dessa forma, toda vez que utilizarmos a função printf(“TEXTO”); a mensagem que estiver entre as “ ” será enviada pela serial.

E sempre que uma informação estiver sendo recebida pela serial, o PIC irá tratar esta interrupção da seguinte forma: A diretiva #int_rda indica ao compliador que sempre que o PIC setar a flag de recpção serial, o MicroControlador irá executar o trecho de código, função, que estiver imediatamente seguinte à diretiva #int_rda. Uma vez recebido e finalizado o protocolo de envio, o PIC retona de onde parou.

Abaixo estou colocando um exemplo simples de tratamento de recepção de dados do tipo String. Bom lembrar que existem funções especificas para cada tipo de dados que queiramos receber!

Abaixo, um exmplo para montagem do esquema elétrico para teste:

esquema elétrico

Valeu e até a próxima!!

https://mega.co.nz/#!CJxjRIwJ!rH7uSrtljqSSaEji_0E1pDDdje51_wo5RiQHtq-hRU0