Cursos / Eletrônica / Projeto de Sistemas RF / Aula 07

arrow_back Aula 07 - Transmissão de Dados Através do Protocolo RS232 - Parte I

Parte I (Software)

Protocolo

É importante lembrar que, embora simples, este programa que iremos usar possui as características de uma transmissão serial. Neste caso, quando definimos que o byte que iremos transmitir para sinalizar o acendimento do LED é o byte 0x55, estamos definindo nosso próprio protocolo (que irá estar posicionado dentro de outro protocolo, que é o RS232). Ao final da aula, existe uma atividade que irá incrementar este protocolo, fazendo com que existam mais LEDs e mais botões.

Software do Transmissor

Como explicamos anteriormente, este programa inicial é super simples. Ele apenas irá verificar o estado de uma chave e caso esta chave seja pressionada um byte será enviado para a porta serial.

A seguir está a listagem. Iremos comentar passo a passo as partes do código para entendermos o que se passa.


Essa linha inclui no programa o arquivo com as funções que o PIC possui e define as variáveis que serão nomes dos registradores. Observe que ela tem o nome exato do PIC que iremos usar, pois os registradores e funções variam de PIC para PIC.

Nesse block, estamos definindo uma função que configura os parâmetros da porta serial. A primeira coisa a fazer é configurar a transmissão (ver datasheet do PIC) no registrador TXSTA. É aí que definimos que não vai haver bit de paridade e que teremos apenas um stop bit. Em uma transmissão serial, temos que configurar também o registrador de recepção (embora não seja utilizado aqui) e isso é feito no registrador RCSTA. Após isso, temos que ajustar o divisor de clock que fará com que a taxa de transmissão seja a que desejamos. Isso é feito no registrador SPBRG.

Se Liga!

Para calcular o valor a ser colocado no registrador SPBRG, temos que ter a frequência de clock do PIC e a taxa de transferência desejada. Dessa forma, fazemos o seguinte:

$$ SPBRG = \frac{F_{clock}}{64 \cdot BPS} - 1 $$

No caso do nosso exemplo, como queremos 1200bps e iremos usar um cristal de 1MHz (na verdade é a frequência do oscilador interno do microcontrolador), temos:

$$ SPBRG = \frac{1000000}{64 \cdot 1200} - 1 = 12$$

Aqui começa a execução. Definimos uma variável para receber o estado da chave (que iremos pressionar para enviar o byte), definimos a porta que a chave está ligada (no caso a porta B do PIC) como entrada, chamamos a função que configura a porta serial (que comentamos há pouco) e por fim, configuramos a porta D (onde o led de indicação de transmissão está conectado) como saída para podermos acendê-lo quando realizar uma transmissão.

Aqui é o laço principal do programa. Ele repetirá para sempre e a primeira coisa que faz é ler o estado da porta B (e, consequentemente, da chave).

Caso a chave seja pressionada, um valor que não é zero (e que depende de qual bit a chave esteja conectada) irá aparecer na variável chave. Então, nós acendemos o led para indicar a transmissão, transmitimos o byte (bastando escrever no registrador TXREG) e depois esperamos a transmissão terminar (testando o 5º bit do registrador PIR1), além de esperar meio segundo para então apagar o led.

Versão 5.3 - Todos os Direitos reservados