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

arrow_back Aula 06 - Programação para Comunicação Serial

Transmitindo Dados

Então, agora você já sabe como configurar a USART para funcionar do modo que você quiser, basta setar os bits de controle corretamente e pronto! Lembre-se de configurar a velocidade corretamente no registrador SPBRG, de setar o bit TXEN no transmissor e o CREN no receptor (para uma recepção contínua). E também se lembre de setar o SPEN para habilitar a porta serial. Os demais bits são dependentes da sua aplicação e você deve setá-los com o devido cuidado. Agora, vamos ver como realizar efetivamente uma transmissão e uma recepção pela USART.

Para transmitir um dado após as configurações e inicializações do módulo, basta escrever o dado no registrador TXREG que ele vai ser transmitido. Se você configurou para transmitir 9 bits, lembre-se de colocar o nono bit no TX9D antes de colocar o restante no TXREG.

Porém, antes de escrever é importante verificar se o último dado que foi escrito já foi transmitido. E por que isso? O que acontece é o seguinte: um dado escrito no TXREG só é transferido para o registrador de deslocamento quando ele está vazio, ou seja, quando o dado anterior for transmitido completamente pela porta serial. Enquanto um dado estiver sendo transmitido, o próximo dado a ser transmitido vai esperar no registrador TXREG. Se tentarmos enviar outro dado nesse momento, vamos sobrescrever o valor que está em TXREG antes de ele ser transferido para o registrador de deslocamento e transmitido. Ou seja, perderemos um dado!

Podemos evitar esse problema consultando o bit TXIF do registrador PIR1. O bit TXIF é setado sempre que um dado no TXREG é transferido para o registrador de deslocamento. Ou seja, se ele estiver em '0', isso significa que existe algum dado em TXREG esperando para ser transferido. Assim que ele mudar para '1', então significa que TXREG está liberado para ser escrito novamente. Escrever no TXREG vai fazer com que TXIF mude para '0' novamente, até que esse novo dado seja transferido para transmissão. Uma forma simples (e pouco eficiente) de fazer esse teste pode ser visto no pseudocódigo a seguir.

Esse procedimento é chamado de "espera ocupada", porque o PIC está literalmente esperando pela mudança em TXIF para continuar o processamento do programa. Essa solução funciona, mas existem maneiras mais eficientes como, por exemplo, utilizar as interrupções do PIC para isso. Mais uma vez, é comum encontrar bibliotecas em alto nível, que já implementem esses testes para você. Portanto, é importante que você tenha conhecimento do procedimento. A não ser que você esteja criando um código em um nível mais baixo, você provavelmente não vai precisar se preocupar com isso.

Versão 5.3 - Todos os Direitos reservados