Ruído atrapalhando Serial por Software

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ruído atrapalhando Serial por Software

Mensagempor ÁgioFelipe » 07 Abr 2014 23:49

Amigos, estou usando o PIC18F4550 com 2 seriais, 1 por hardware e outra por software. Estou utilizando as funções do C18 nas duas seriais.
O problema está na espera pelo dado que é basicamente um teste se o pino RX está em nivel lógico baixo, que seria o start bit vejam:

Código: Selecionar todos
       if(!PORTBbits.RB5)
      {
         dado_rx2 = Recebe485_2();
      }

char Recebe485_2(void)
{
   //..................Inicio de uma transmissão.........................
    dado_rx=getcUART();




Um ruído causa uma chamada da função Recebe485_2 e uma entrada em getcUART, daí ele fica preso nessa função aguardando um dado que nunca chega.
Já tentei colocar um delay no inicio da função mas nao funcionou, acabou atrapalhando a recepção.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Re: Ruído atrapalhando Serial por Software

Mensagempor andre_luis » 08 Abr 2014 05:39

Se o problema está no ambito do hardware, acredito que qualquer tentativa de minimizar o efeito por firmware será uma solução de contorno. Estou entendendo corretamente, ou é algo diferente disso ?
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Ruído atrapalhando Serial por Software

Mensagempor ÁgioFelipe » 08 Abr 2014 08:51

É isso mesmo, mas tb já tentei colocar capacitores no pino RX e não funcionou.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Re: Ruído atrapalhando Serial por Software

Mensagempor cfreund » 08 Abr 2014 10:56

Tente postar essa parte do circuito.
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: Ruído atrapalhando Serial por Software

Mensagempor ze2 » 08 Abr 2014 12:00

voce pode tentar p.ex. medir meiabocamente se o pino fica certo tempo em no nível 0 por x tempo. Se menos, é ruído e ignora.
Código: Selecionar todos
char dl=0;
  if(!PORTBbits.RB5)
      {
      while ((!PORTBbits.RB5) && (dl++<20)); //um timeout pra não ficar preso
   if (dl>5) dado_rx2 = Recebe485_2(); //Se menos, é ruído e ignora.
      }

Coloque um timeout semelhante na função Recebe485_2()
ze2
Byte
 
Mensagens: 193
Registrado em: 09 Fev 2009 13:37

Re: Ruído atrapalhando Serial por Software

Mensagempor edsont » 08 Abr 2014 14:54

Será que um resistor de terminação não resolveria o problema? O resistor de terminação normalmente é para evitar reflexão. Com impedância alta o circuito pode ficar muito sensível a interferências. O resistor aqui seria para absorver estas interferências.
Avatar do usuário
edsont
Word
 
Mensagens: 555
Registrado em: 22 Mai 2007 17:19
Localização: Araraquara-SP Brasil - Terra - Sistema Solar - Via Láctea

Re: Ruído atrapalhando Serial por Software

Mensagempor andre_luis » 08 Abr 2014 21:33

Felipe,


Conforme sugerido pelo ze, o que você precisa fazer é de certo modo, um debouncing para a leitura do pino de entrada. Observe que mesmo os módulos de UART de alguns microcontroladores, somente consideram válido a leitura de um bit se houver 3 leituras consecutivas confirmando o mesmo valor.

De qualquer modo, você também precisa inserir um controle de timeout na sua rotina, para garantir que se receber um ruido, após certo tempo a rotina irá encerrar o recebimento.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Ruído atrapalhando Serial por Software

Mensagempor ÁgioFelipe » 09 Abr 2014 15:11

Pessoal, obrigado pelas contribuições, vou tentar cada uma e vou postando os resultados.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Re: Ruído atrapalhando Serial por Software

Mensagempor ÁgioFelipe » 14 Abr 2014 11:38

Por hora resolvi fazer um protocolo com respostas para confirmação do recebimento do dado, vamos ver se funciona.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x