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

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

Recebendo Dados

A recepção acontece de forma semelhante à transmissão. Depois de configurado um receptor, ele deve ficar esperando um dado chegar, para então processá-lo. Quando o novo dado recebido é colocado no registrador RCREG, o bit RCIF no registrador PIR1 é setado, indicando que existe um novo dado para ser processado. Logo, um código que implementa uma "espera ocupada" pode ser utilizado para receber esse dado, assim como foi utilizado para transmitir. Observe o pseudocódigo a seguir.

Utilizar algum código semelhante ao pseudocódigo anterior vai funcionar, porém existe um problema: se o receptor tiver outras tarefas para processar como, por exemplo, acionar motores e ler sensores, pode acontecer de ele nunca receber um dado e nunca sair da "espera ocupada", e logo nunca vai realizar os outros processamentos. Outro pseudocódigo que não teria esse problema seria o seguinte:

Você consegue ver a diferença? Nesse código, estamos testando se RCIF é igual a '1', ou seja, se tem novo dado, e só fazemos alguma coisa quando existir esse novo dado. Caso não exista novo dado a processar, o programa simplesmente passa para as outras tarefas, ao contrário do programa anterior, que "espera enquanto não tiver um dado para receber". Mesmo assim, essa não é a melhor maneira de receber um dado. Se os "outros processamentos" do programa consumirem muito tempo, pode acontecer de os dados chegarem pela USART mais rapidamente do que o programa vai conseguir processar, e em algum tempo vai ocorrer um erro de overrun. A maneira mais correta de tratar a recepção dos dados é utilizando as interrupções do PIC, como vamos ver a seguir.

Versão 5.3 - Todos os Direitos reservados