Página 1 de 1

Oscilador Interno X USART

MensagemEnviado: 17 Fev 2011 18:49
por fabio_
Companheiros,

A tolerância de +- 1% dos osciladores internos dos PICs é suficiente para trabalhar com o modulo USART ou EUSART nos PICs mais novos sem problemas, mantendo o Baud Rate estável?

Já tem um tempo, mas acho que li num dos livros do Fábio Pereira que mesmo com osciladores internos disponíveis, é aconselhável utilizar cristais externos quando usar o módulo USART para garantir o Baud Rate estável. Isso está correto? Alguém tem alguma experiência sobre este ponto?

até

MensagemEnviado: 18 Fev 2011 00:24
por jorgeluiz
eu nao confio muito nos osciladores internos dos pics. Toda vez que fui conferir, estava bem longe do que diz o datasheet. Excessao pra esses que tem um registrador de ajuste fino. Dai' da' pra calibrar, mas e' sempre melhor usar cristal.

MensagemEnviado: 18 Fev 2011 08:58
por Guri
Eu concordo, cristal é a melhor opção.

Ainda mais se o seu projeto pedir confiabilidade, eu sempre digo que economizar demais no hardware poderá gerar dores de cabeça num futuro próximo....

MensagemEnviado: 18 Fev 2011 19:24
por MOR_AL
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

MensagemEnviado: 19 Fev 2011 16:10
por luisf.rossi
Realmente não é nada de outro mundo. Eu ja fiz projetos que precisavam de um custo MUITO baixo e utilizei um MSP430 apenas com os 1Mhz internos dele (que podem ser calibrados para outras frequencias). Funcionou muito bem. Apenas um comentario. Se você estiver tabalhando com baud rates muito altas (perto de 1Mbps), a sua onda quadrada não sera mais TÃO quadrada assim, o que começa a trazer mais erros ainda. Isso pode ser contornado um um layout da placa bem feito.

MensagemEnviado: 24 Fev 2011 11:37
por fabio_
Estou trabalhando com 4800bps e 9600bps.

luisf.rossi,
Voce poderia nos fornecer as dicas de layout?