por MOR_AL » 18 Fev 2011 19:24
Acho que o problema da comunicação USART é que o sincronismo só ocorre na transição do primeiro bit transmitido do byte. Para os próximos bits o sincronismo se baseia na taxa dos dados (baud rate), que já deve ser previamente programada no receptor. Se houver um pequeno período de erro, por exemplo Te, esse período, no oitavo bit de dado será propagado para 8 vezes Te. Isso pode fazer com que o momento de identificação do bit fique fora do momento certo. Por exemplo. Para se transmitir um byte e receber sem erro, o desvio, ou o período de transmissão de um bit, menos o período de recepção de um bit (em módulo), deve ser menor que 1/16 do período do bit de transmissão. Pois se o instante de leitura do bit ocorre no meio do período do bit, então o erro propagado para o oitavo bit só terá meio período para ser lido corretamente.
Então o erro total deve ser menor que 1/16, ou 6,25%. Se considerarmos que mesmo com um cristal, por seu valor de frequência não ser múltiplo da taxa de dados, já estaremos introduzindo um erro. Imagine que, sem o cristal, usando o oscilador interno, dependendo se a frequência for maior ou menor que a considerada, esse erro pode ser maior ainda. Também poderá ser menor, mas o problema é que não haverá nenhuma garantia.
Por outro lado, se o próprio bit contivesse o sincronismo (transmissão no padrão bi-phase mark, bi-phase space ou Manchester, por exemplo), então o erro poderia ser bem maior. Algo no máximo com 25% ainda permitiria identificar o bit no receptor. O outro lado da moeda é que esse formato de transmissão requer o dobro da taxa, pois, dependendo do valor do bit, pode haver um período de meio bit entre duas transições. No formato da USART, o período mínimo entre duas transições pode ser de até um bit.
Finalmente e resumindo: Se for usar o cristal, pode transmitir pela USART com o sincronismo apenas no primeiro bit do byte. Se não for usar o cristal, deve transmitir com sincronismo a nível de bit.
(Já tive que usar esse artifício para transmitir dados. A base de tempo era gerada via oscilador resistor/capacitor).
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain