por xultz » 04 Nov 2007 15:22
Eu só não entendi se você tratou a serial por interrupção também ou não.
Eu tive esse problema até com o fato de conectar e desconectar o cabo, o ruído enganava a usart, e entupia o buffer. Eu tinha um flag, que se estivesse baixo a ISR lia o byte e jogava fora, para tratar esse problema. Depois, quando realmente queria tratar os bytes recebidos, eu siba o flag. O que eu aprendi é que com CCS, serial tem que ser tratada sempre por interrupção.
Uma outra solução jaguara é usar uma usart em firmware (ou seja, na declaração da serial forçar para não usar hardware). Para você receber um byte, tem que fazer pooling para ver se está recebendo um startbit (passou do startbit e não fez o pooling, dançou), dessa maneira não tem buffer, mas tem que fazer um pooling no mínimo 10x mais rápido que a serial (de preferência, por interrupção de timer, o que no fim dá na mesma).
98% das vezes estou certo, e não estou nem aí pros outros 3%.