Oscilador interno ou externo


22

Eu sempre uso o oscilador interno que as fotos possuem, pois nunca encontrei a necessidade de executar algo a uma frequência maior que 8 MHz (que é a mais rápida que as fotos que eu uso tendem a ser capazes de funcionar). Há alguma razão, além de ultrapassar 8 MHz, que significa que devo usar um oscilador externo? Parece que apenas mais uma coisa deu errado para mim, mas eu estaria interessado em ouvir o que os outros fazem.


Por que às vezes é necessário um cristal externo, mesmo que o MCU tenha uma CPU interna? ” O fato de o MCU ter uma CPU interna não tem quase nada a ver com o motivo pelo qual um relógio interno ou externo é usado. Você está confundindo / confundindo duas questões diferentes?
gbulmer

Pode ajudá-lo a compreender completamente microcontrollerslab.com/oscillator-types-microcontrollers
Bilal Malik

Respostas:


33

Como outros já disseram, frequência precisa e estabilidade de frequência são razões para usar um ressonador de cerâmica ou cristal externo. Um ressonador é várias vezes mais preciso que o oscilador RC interno e bom o suficiente para a comunicação UART. Um cristal é muito mais preciso e necessário se você estiver fazendo outros tipos de comunicação como CAN, USB ou Ethernet.

Outra razão para um cristal externo é a escolha da frequência. Os cristais vêm em uma ampla gama de frequências, enquanto o oscilador interno é geralmente uma frequência com talvez uma opção de 4x PLL ativada. Alguns PICs mais recentes, de 24 bits, têm um multiplicador e um divisor na cadeia de clock, para que você possa atingir uma ampla variedade de frequências a partir da frequência do oscilador interno único.

É claro que existem várias aplicações que exigem inerentemente frequência ou tempo precisos, além das comunicações. O tempo é a propriedade da eletrônica que podemos medir com mais precisão e com menor custo; portanto, às vezes, o problema é transformado em medir o tempo ou produzir pulsos com tempo preciso.

Existem aplicativos que requerem alguma sincronização de longo prazo com outros blocos. Um oscilador a 1% estaria desligado em mais de 14 minutos por dia se usado como base para um relógio em tempo real. Também pode ser necessário um tempo preciso a longo prazo sem ter que saber em tempo real. Por exemplo, suponha que você queira que um grupo de dispositivos de baixa energia acorde uma vez a cada hora para trocar dados por alguns segundos e depois volte a dormir. Um cristal de 50 ppm (muito fácil de obter) não terá mais de 180 ms em uma hora. Um oscilador RC a 1% pode ser desligado em 36 segundos. Isso acrescentaria requisitos de energia significativos no prazo e, portanto, aos dispositivos que precisavam se comunicar apenas por alguns segundos a cada hora.


1
Fora do tópico, mas achei que o CANbus foi projetado para ser robusto o suficiente para lidar com variações nas frequências de clock entre os nós. Estou entendendo mal?
Stephen Collings

1
@Remiel: A CAN possui provisões para nós que estão sincronizados, apesar de alguma diferença na frequência do relógio. Os nós ainda precisam estar razoavelmente próximos. Na maioria dos casos, você basicamente precisa de pelo menos um ressonador de cerâmica em cada nó.
precisa

24
  1. Precisão. Os relógios internos não são precisos, podem ser afetados pelo ruído.

  2. Precisão independente da temperatura. Osciladores típicos podem variar bastante. Osciladores especiais de compensação de temperatura podem ser necessários em aplicações de baixa ou alta temperatura ou se a temperatura variar bastante.

  3. Rapidez. Osciladores internos podem não atingir a velocidade mais alta do IC. Os externos podem ser necessários para isso.

  4. Voltagem. A velocidade de um temporizador interno pode depender da tensão em que ele está sendo executado.

  5. São necessários vários relógios. Alguns aplicativos desejam compartilhar um oscilador.

  6. Aplicações especiais em que o relógio interno pode não ser facilmente utilizado. Dividir o relógio interno pode ser mais difícil do que jogar um cristal barato de 31 kHz para ele, para manter o tempo das aplicações.

Do alto da minha cabeça, o ATMEGA 328 que o arduino usa requer um cristal externo de 5V para sua velocidade máxima. A versão lily pad é executada em 8 MHz, no oscilador interno, porque é limitada à de 3.3v. A barra de lançamento da linha de valor MSP430 é limitada a 10 MHZ em 3V, 8 em 2,5V.


10
Um exemplo de precisão: o USB precisa de um relógio preciso. Microchips O PIC18F2550 pode gerar praticamente qualquer velocidade de clock internamente, mas sua precisão é muito ruim para USB. Quando tentei, havia uma desconexão a cada 10 ou 20 anos. Isso não aconteceu com um oscilador externo. Enquanto isso, eles têm o PIC18F25k50, que pode sincronizar seu relógio com o sinal USB e não requer mais um oscilador externo para USB.
sweber

1
Só para ser pedante, o relógio interno de 8 MHz é um oscilador RC, não um cristal, daí sua baixa precisão.
Austin

@austin corrigiu o comentário.
quer

13

A estabilidade da frequência será maior com a externa. Portanto, se você tem um aplicativo que realmente depende do mcu freq, pode ser necessário usar um externo.

Mas a maioria dos mcu: s modernos tem um oscilador interno bastante estável, portanto, acho que essa era uma questão maior alguns anos atrás. Também há mais e mais maneiras de aparar o interno e compensar a variação de temperatura (etc, etc.).

Por outro lado, existem outras maneiras de garantir que você esteja sincronizado. Em alguns países, a estabilidade da frequência na rede de energia é de 50Hz ± 0,01Hz e outros lugares como a Suécia na verdade têm ± 0,001Hz e já vi projetos usando isso para manter coisas sincronizadas. E então você não é mais tão dependente do mcu freq e pode usar o interno. Mas este é um pouco de tópico :)


3
Observe que esses valores de frequência da rede elétrica são estabilidade a longo prazo . Não há problema em manter o tempo com precisão por semanas ou meses, mas em um curto período (horas) você pode enfrentar sérios desvios. Porém, você raramente precisará ajustar a hora em um relógio digital barato.
stevenvh

@stevenvh good point, observe também que existem outras fontes que podem ser usadas para verificar a estabilidade a longo prazo. Os sistemas gps e gsm têm relógios muito bons, mas é mais complicado usá-los.
Johan

3
Embora existam muitos outros aplicativos que o exigiriam, há um que causa muitos problemas especificamente sem uma base de tempo precisa - comunicações seriais.
JustJeff

Não conheço nenhuma estabilidade de frequência que não seja maior com um cristal de quartzo externo. Você não terá precisão abaixo de 0,1% com um oscilador de silício.
Jason S

1
@Johan - DCF77 / WWVB é tão preciso como GPS ou GSM, e muito mais fácil trabalhar com (1 Hz batimentos cardíacos)
stevenvh

2

A estabilidade da frequência é a principal, principalmente para comunicações seriais em alta velocidade. Mas isso também traz a necessidade ocasional de um cristal em uma frequência aparentemente estranha para obter uma taxa de transmissão exata, devido às opções limitadas que os divisores de clock oferecem a você.


1

Na verdade, me deparei com um cenário em que 1% não era bom o suficiente para o UART.

Se algum de vocês já ouviu falar da placa de desenvolvimento para microcontrolador Teensy ++ v1.0, ela possui um UART extremamente sensível. Meu baud de host estava definido em 115200, e em 115200 e, por um longo período, não consegui descobrir por que não estava lendo os dados corretamente. Acontece que meu host estava enviando mais perto de 114300 baud. (115200 - 114300) / 115200 = erro de ~ 0,9%. Eu tentei com dois MCUs diferentes e eles funcionaram bem.

O ponto é: independentemente da sua aplicação, se uma maior precisão da freqüência do relógio for um benefício, você deve usar um ressonador externo, cristal ou mesmo oscilador se o chip não possuir o circuito de acionamento necessário.

PS Gostaria de saber se alguém tem alguma ideia de qual escolha de design de baixo nível eles fizeram no hardware UART que o torna tão sensível?


O requisito fundamental para um UART é que o receptor faça uma amostragem de cada bit enquanto ele é válido. Idealmente, o receptor notaria o momento exato em que o bit inicial chegaria e coletaria os dados precisamente 1,5 vezes um bit depois, depois 2,5, 3,5 etc. etc. até 8,5 bits depois. Na prática, geralmente há uma queda quando o receptor detecta o pulso de início, e pode haver mais queda depois disso. Por exemplo, pode-se tentar receber 2400 bauds usando um processador executando 8.192 instruções por segundo .... #
687

Isso pode ser feito se o tempo de transmissão estiver perfeitamente limpo, mas a amostragem não ocorrerá em intervalos precisos de 417usec. Em vez disso, ocorrerá em alguns intervalos de 366us e alguns de 488us. Quando um receptor é "exigente", o que isso geralmente significa é que ele está amostrando dados muito mais cedo ou mais tarde do que deveria, mas no momento em que um transmissor ideal emitia o bit de dados esperado.
Supercat

@supercat Por que eles o projetariam para provar mais cedo ou mais tarde? Parece que a amostragem nos .5 como você descreveu sempre seria a melhor. Foi assim que implementei meu software UART alguns anos atrás ... nem me ocorreu fazê-lo de outra maneira. Isso simplesmente permite a maior margem de erro no transmissor.
NickHalden

@JGord: Se a amostragem é controlada por um relógio muito mais rápido que a taxa de transmissão, as coisas são maravilhosas, mas nem sempre é esse o caso. Suponha, por exemplo, que alguém estivesse tentando receber 115.200 bauds usando um 6502 rodando a 1,0 MHz e sem UART. Um loop aguardando o bit inicial levará 7us e as oportunidades de pesquisa serão agendadas em intervalos de 1us. Há uma incerteza 8us a respeito de quando o 6502 seria pesquisar um pouco, mas desde que os bits são 8.6us longo, pode receber dados com êxito se ...
supercat

... a velocidade de transmissão era precisa, os tempos de subida e descida eram uniformes e simétricos e não havia outro tremor. Não conheço a placa Teensy, mas não ficaria surpreso se estivesse usando um UART de software para empurrar o controlador além de suas habilidades normais.
supercat

1

Os osciladores externos de cristal de cristal são mais precisos que os relógios internos e devem ser usados ​​quando o tempo exato for necessário. Às vezes, para economizar dinheiro, os designers usam os internos.


2
Isso não parece acrescentar nada às respostas existentes.
Adam Haun
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.