AVR: overclocking ADC

8

Esta é uma citação da folha de dados do ATmega32 :

By default, the successive approximation circuitry requires an input clock frequency between
50kHz and 200kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the
input clock frequency to the ADC can be higher than 200kHz to get a higher sample rate.

Estou planejando usar 8 bits de ADC. A questão é: quanto mais de 200kHz posso ir? Não encontrei nenhuma informação sobre isso na folha de dados. É possível usar um pré-calibrador de 64 ou 32 e, portanto, executar o ADC a 250kHz ou 500kHz, respectivamente, sem erros de conversão quando o uC estiver funcionando a 16MHz? E quais são as possíveis conseqüências de deixar o ADC fora das especificações?

Ashton H.
fonte

Respostas:

12

A frequência máxima do ADC é especificada como 1 MHz.

O problema real não é exatamente o ADC em si, mas o dispositivo de amostra e espera, que nos 2 primeiros relógios do ADC precisa obter uma amostra da tensão de entrada.

Quando esses 2 relógios são curtos, o capacitor de armazenamento do S / H não consegue seguir o sinal de entrada com precisão suficiente.

Aliás, é por isso que também há frequência mínima. Nesse caso, o enorme tempo de conversão permite que o capacitor de armazenamento descarregue durante a conversão.

No relógio de 1 MHz, você terá 13us de tempo de conversão ou aproximadamente 77kps. No relógio de 200kHz - 15ksps.

johnfound
fonte
boa resposta cara +1. Gostaria de saber se o S&H interno pode ser deixado em execução livre e usar o S&H externo que é muito mais rápido?
Andy aka
1
@ Andyaka - provavelmente não. O S / H interno é controlado apenas pelo hardware. Talvez algum hack seja possível alterando o divisor de frequência durante a conversão - make é lento nos 2 primeiros relógios e depois é mais alto ... Mas é preciso verificar o manual, é possível e depois fazer um experimento.
johnfound
Obrigado pela resposta. Então, basicamente, é seguro subir até 1 MHz quando usar 8 bits de ADC?
Ashton H.
@AshtonHearts - Sim, acho que sim. Por que não fazer alguns testes? É apenas uma questão de programa.
johnfound
2
@AshtonHearts - não é overclock. É um comportamento documentado. Você só terá menor precisão.
johnfound