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

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

Registradores de Status e Controle

Os dois principais registradores de controle da transmissão e recepção USART são o TXSTA e o RCSTA. É interessante entender os nomes: 'STA' vem de status, 'TX' se relaciona com transmitter e 'RC' com receiver. Como você pode ver, o nome do registrador já diz muito sobre o que ele é. Alguns dos bits dos registradores TXSTA e RCSTA são usados para a configuração, enquanto outros são utilizados para verificar o status atual dos módulos (se ocorreram erros, se houve interrupções etc.). Vamos dar uma olhada mais a fundo nos bits do registrador TXSTA.

Atenção!

Esses bits podem mudar dependendo do microcontrolador que está sendo utilizado! Portanto, mais uma vez, não se esqueça de checar o datasheet do seu microcontrolador!

  • CSRC – Esse bit não tem importância quando utilizado em comunicações assíncronas. Nas comunicações síncronas, ele informa se o PIC vai funcionar no modo Mestre (bit setado em '1'), que significa que o sinal clock vai ser gerado por ele a partir do BRG, ou se ele vai funcionar no modo Escravo (bit setado em '0') que significa que o clock vai ser gerado por uma fonte externa.
  • TX9 – Informa se a transmissão é de 9 bits (TX9 setado em '1') ou 8 bits (TX9 setado em '0'). Faz com que o bit armazenado em TX9D seja transmitido após os 8 bits de dados que foram escritos no TXREG.
  • TXEN – Bit responsável por habilitar as transmissões. Uma vez setado em '1', o registrador TXREG vai resultar em uma transmissão sendo iniciada, se a porta serial estiver habilitada.
  • SYNC – Bit utilizado para escolher entre o modo síncrono (SYNC em '1') ou assíncrono (SYNC em '0'). Deve ser modificado para o valor desejado tanto quando estiver configurando um transmissor como quando estiver configurando um receptor.
  • SENDB (Send Break Character bit) - Envio do caractere ‘Break’ (Somente modo assíncrono). Quando setado em "1" envia o caractere de sincronismo após o envio do caractere break; Já, quando setado como "0" significa que a transmissão do caractere de sincronismo foi completada.
  • BRGH – Define se vai ser utilizada uma alta taxa de transmissão (valor em '1') ou baixa taxa de transmissão (valor do bit em '0'). Não é utilizado no modo síncrono.
  • TRMT – Bit para indicar que existem dados no registrador de deslocamento de transmissão, ou seja, tem uma transmissão em andamento (utiliza valor '0' para isso). Esse bit é usado internamente pelo PIC e logo não pode ser lido pelo programa que você criar.
  • TX9D – É onde fica armazenado o nono bit utilizado em uma comunicação que utilize 9 bits por pacote transmitido.

Agora, vamos dar uma olhada nos bits do registrador RCSTA. Ele é principalmente usado para configurar a recepção, mas tem também outras funções como, por exemplo, a do bit SPEN.

  • SPEN – Setar esse bit para '1' configura todos os pinos do PIC associados à USART para as suas funções. Ele é utilizado para habilitar a porta serial do PIC, tanto no transmissor quanto no receptor.
  • RX9 – Habilita a recepção do nono bit. Faz com que o nono bit recebido seja armazenado no bit RX9D do registrador RCSTA.
  • SREN – Esse bit habilita a recepção de um dado ('SR' de single reception) quando funcionando no modo mestre em uma transmissão síncrona. Não é utilizado no modo escravo ou em uma transmissão assíncrona.
  • CREN – Habilita a recepção contínua ('CR' de continuous reception) quando setado e desabilita a recepção quando resetado.
  • ADDEN – Habilita o uso do nono bit como um bit indicador de endereço. Se ADDEN = 1, os 8 bits recebidos só serão colocados no buffer de recepção se o nono bit for igual a 1. Caso ADDEN = 0, todos os bits recebidos podem utilizar o nono bit como bit de paridade. O valor de ADDEN não importa se RX9 = 0.
  • FERR – Bit que indica um erro de framming, que significa que o stop bit não foi detectado. Esses erros são geralmente causados por taxas de transmissão incorretas.
  • OERR – Bit que indica um erro de overrun, que significa que um novo dado foi recebido enquanto a fila de recepção estava cheia. O dado sendo recebido vai ser perdido e o PIC não vai receber mais nenhum dado até que o CREN seja resetado e setado pelo seu programa.
  • RX9D – Espaço que vai armazenar o nono bit recebido em transmissões que usem um pacote com tamanho de 9 bits.

Ufa! Parece muita coisa, mas não precisa se preocupar: assim que você começar a programar vai perceber que é fácil configurar a USART do jeito que você quiser. A boa notícia é que você só precisa fazer isso mesmo uma vez no transmissor e uma no receptor e pronto. Caso precise fazer outra comunicação, pode usar o mesmo trecho de código para configuração, fazendo as adaptações necessárias. Além disso, muitos compiladores vêm com códigos exemplos de configuração da USART. Ou seja, você só vai precisar modificar os valores, ao invés de digitar todo o código novamente.

Versão 5.3 - Todos os Direitos reservados