Página 1 de 1
Ruído atrapalhando Serial por Software

Enviado:
07 Abr 2014 23:49
por ÁgioFelipe
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.
Re: Ruído atrapalhando Serial por Software

Enviado:
08 Abr 2014 05:39
por andre_luis
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 ?
Re: Ruído atrapalhando Serial por Software

Enviado:
08 Abr 2014 08:51
por ÁgioFelipe
É isso mesmo, mas tb já tentei colocar capacitores no pino RX e não funcionou.
Re: Ruído atrapalhando Serial por Software

Enviado:
08 Abr 2014 10:56
por cfreund
Tente postar essa parte do circuito.
Re: Ruído atrapalhando Serial por Software

Enviado:
08 Abr 2014 12:00
por ze2
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()
Re: Ruído atrapalhando Serial por Software

Enviado:
08 Abr 2014 14:54
por edsont
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.
Re: Ruído atrapalhando Serial por Software

Enviado:
08 Abr 2014 21:33
por andre_luis
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.
+++
Re: Ruído atrapalhando Serial por Software

Enviado:
09 Abr 2014 15:11
por ÁgioFelipe
Pessoal, obrigado pelas contribuições, vou tentar cada uma e vou postando os resultados.
Re: Ruído atrapalhando Serial por Software

Enviado:
14 Abr 2014 11:38
por ÁgioFelipe
Por hora resolvi fazer um protocolo com respostas para confirmação do recebimento do dado, vamos ver se funciona.