por xultz » 24 Abr 2008 13:34
Só complementando: Rebelk, o povo aqui é grosso e mal educado, mas muito competente. É muito comum chamar o outro de viado sem um motivo aparente (sob o ponto de vista de homossexualidade) e no fim das contas todo mundo acha divertido, então, realaxa cara, entra na brincadeira, que você vai ganhar muito mais. Todo mundo aqui sabe que fazer projeto eletrônico estressa, fazer o firmware funcionar é um trauma, mas seja um pouco flexível que você vai obter as informações que necesita.
Outra dica muito importante, muito importante mesmo para obter informações precisas para te ajudar a resolver o teu problema, é dar o mpaximo de detalhes possíveis sobre tua aplicação. Por exemplo, os dois PICs estão na mesma placa, estão em placas diferentes, em equipamentos diferentes? Que meio fisíco elas se comunicam, via cabos, trilhas, RF, infravermelho? Que velocidade de comunicação você precisa, qual o fluxo de dados?
A solução que você tentou implementar não é adequada por vários motivos. Primeiro que você pode obter eco da transmissão de várias maneiras, desde interferência nas linhas de TX e RX, um curto circuito, e coisas do tipo. E você causa um excesso de comunicação desnecessário, a comunicação fica obrigatoriamente simplex, etc. A solução mais usada é implementar um byte de checksum. Uma maneira simples de fazê-lo é usar uma variável de 8 bits e somar todos os bytes transmitidos, e na recepção você deve fazê-lo também, e comparar com o checksum recebido. Se você quer garantir ainda mais a confiabilidade, usa um algoritmo de CRC e mais bits, e você tem uma garantia de que a string chegou intacta no destino, e o receptor quando recebe uma string correta ele manda um comando de aceito (ACK) ou não aceito (nACK).
98% das vezes estou certo, e não estou nem aí pros outros 3%.