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.