Os microcontroladores podem ser executados em frequências de clock arbitrariamente baixas?


103

A folha de dados do ATTiny13A, por exemplo, lista a frequência mínima de 0 MHz. Isso significa que o relógio pode ser executado em qualquer frequência arbitrariamente baixa sem efeitos negativos? Estou assumindo que ele consome menor corrente em velocidades mais baixas do relógio? 0 MHz significa que você pode parar o relógio completamente e, enquanto a energia ainda for aplicada, ele lembrará seu estado indefinidamente?


34
Gostaria de acrescentar que esta é uma excelente pergunta. A maioria dos EEs seniores não tem tempo para realmente ler e pensar sobre as folhas de dados, o que é um complemento para você ou um insulto a elas, gostaria de sugerir as duas.
Kortuk

Não tenho certeza absoluta de que o oscilador RC interno esteja desligado, a menos que você o instrua especificamente (através de várias opções de economia de energia). Não tenho certeza do que é usado, mas pelo menos para EEPROM e provavelmente ADC.
jippie

1
@jippie que RC interno você está dizendo? O ATMegaX, por exemplo, possui o RC interno para o relógio do sistema (normalmente 8Mhz, com pré-calibrador div 8 opcional) e o oscilador de vigilância. O relógio do sistema está com fusível selecionado e provavelmente está desligado ao usar o relógio externo. Os outros, como você disse, podem ser desativados pelos modos de economia de energia, mas duvido que parem pelo relógio do sistema.
Diego C Nascimento

Respostas:


73

Sim. Se a folha de dados indicar "operação totalmente estática", você poderá cronometrá-la a qualquer velocidade, até 0 Hz. Um chip "dinâmico" precisa ter um relógio a uma taxa específica ou perde seu estado.


1
você tem um exemplo de um micro que permite isso?
21411 MrEvil

4
Microcontroladores que contêm flash no chip podem especificar uma velocidade mínima (e máxima) do relógio ao gravar no flash. No entanto, ao ler a partir do flash, isso não se aplica.
17119 Steve Melnikoff

8
Senhor Deputado, a série Atmel AVR ATtiny mencionada na pergunta é totalmente estática, como eu acho que a maioria dos chips Atmel AVR. E acho que quase todos os microcontroladores PIC da Microchip.
21416 todbot

7
Na verdade, acho que o ADC no ATTiny13A não funciona em baixas frequências, talvez por causa da deterioração do capacitor de amostra e retenção? "Por padrão, o circuito de aproximação sucessivo requer uma frequência de clock de entrada entre 50 kHz e 200 kHz para obter a resolução máxima. ... O módulo ADC contém um pré-calibrador, que gera uma frequência de clock ADC aceitável a partir de qualquer frequência da CPU acima de 100 kHz."
Endolith 17/12/2009

8
endólito - eu concordo, os ADCs geralmente não funcionam em baixas frequências. Até onde eu sei, tudo o resto em praticamente todos os microcontroladores modernos continua funcionando bem até "0 Hz", também conhecido como "pausa indefinidamente". Em particular, muitos microcontroladores têm um modo de "baixo consumo de energia" que interrompe todos os relógios, até que algo - normalmente uma pessoa que aperta um botão - o acorde e ele continue exatamente onde parou. en.wikipedia.org/wiki/Static_logic_(digital_logic)
davidcary 15/06

23

Estou postando outra resposta, apenas porque a última pergunta que você teve não foi respondida antes.

Todbot está completamente correto. Também consumirá menor potência em velocidades mais baixas. Isso também significa que, se você fornecer o relógio de outro processador, por exemplo, poderá parar de fornecê-lo a qualquer momento e depois começar a cronometrar mais tarde, desde que não vá mais rápido que a velocidade máxima, você estará bem.

Os chips que recebo mudam de ordem de magnitude entre o oscilador 32768Hz e o de 1MHz. Eu tive aplicativos em que não precisava de velocidade, só precisava de outro rapaz fazendo um tratamento básico de dados para mim.

Espero que isto ajude.


9
Eu sempre quis rodar a linha do relógio de um microcontrolador com um botão. Deixe o humano ser o relógio. :) Em uma observação séria, uma coisa realmente interessante sobre esses projetos estáticos é que o consumo de energia é linear com a velocidade do relógio: diminua o tempo e use menos energia. Isso pode ser realmente útil.
21420 todbot

5
Sim, mas eu gosto de observar que o consumo de energia é uma função linear com um deslocamento, mesmo sem um relógio, eles ainda consomem energia, especialmente com qualquer saída sendo acionada. Acabamos de receber novos estagiários no meu trabalho, vou sugerir que usemos um botão e ver o que acontece.
Kortuk

13
@todbot Boa ideia. :-) Mas certifique-se de rebater o botão.
Starblue

4
Tente com uma "manivela de moagem" (como no jargão, que significa jargon.net/jargonfile/g/grindcrank.html ) :-)) (e sim, há muitos anos eu criei um passo a passo através do código quando estava usando o Turbo Pascal na escola :-)
Axeman

@todbot Não é realmente absurdo ou difícil, se você pode aceitar uma abstração grosseira. Existem vários exemplos de pessoas que usam esses gadgets para ensinar como os computadores funcionam. Myke Predko tem um livro realmente bom, e até vem com PCBs (embora não seja para o projeto de computador): amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/…
Lou

17

A maioria dos projetos modernos de microcontroladores funciona com qualquer padrão na entrada do relógio, desde que nenhum pulso alto esteja abaixo de um determinado comprimento mínimo, nenhum pulso baixo esteja abaixo de um determinado comprimento mínimo e nenhum baixo-alto-baixo ou alto-baixo-alto par de pulsos está abaixo de um determinado comprimento. Essencialmente, o que acontece é que, após o chip executar todas as ações associadas a um determinado limite do relógio, o chip estará em um estado em que não está fazendo nada além de aguardar o próximo limite do relógio. Se a próxima borda do relógio não chegar por dez dias, então (a menos que o chip possua algum controle externo), o chip estará no mesmo estado como se a borda tivesse chegado no momento em que o chip estivesse pronto para ele.

Observe que, em geral, pausar o relógio em um microcontrolador reduzirá substancialmente o consumo de corrente, mas não tanto quanto o uso do recurso "suspensão". O consumo de corrente da maioria dos microcontroladores no modo "rodar" pode ser muito bem estimado como uma corrente quieta constante mais uma certa quantidade de corrente por ciclo por segundo (que pode ser mais 'naturalmente' expressa como carga por ciclo). Por exemplo, um chip pode ter uma corrente de repouso de 10uA, mais uma corrente de 0,1mA / MHz (100pC / ciclo). A execução desse chip a 10MHz produziria uma corrente de 1,01mA. Executá-lo a 1MHz renderia 0,11mA. Executá-lo a 100KHz renderia 0,02mA. Executá-lo em 1Hz woudl produz 0,0100001mA. Por outro lado, o chip pode oferecer uma corrente de sono de 1uA. Geralmente, entrar no modo de suspensão desligará completamente as áreas do chip que não farão nada de útil enquanto o chip estiver em suspensão, evitando assim qualquer vazamento de corrente que essas áreas possam ter. Em alguns casos, também reduz a voltagem para áreas como arquivos de registro para um nível em que os arquivos de registro podem conter seu conteúdo, mas não os acessam muito rapidamente (já que eles não serão acessados, a velocidade de acesso não importa) .

Alguns microprocessadores, microcontroladores e outros dispositivos mais antigos tinham tempos máximos de clock e / ou clock baixo. Esses processadores fizeram uso da lógica dinâmica para economizar circuitos. Como exemplo de lógica dinâmica, considere um registrador de deslocamento: um bit de registrador estático típico requer um circuito de dois transistores para manter o valor, enquanto um bit de registrador dinâmico mantém o valor na porta de um transistor de leitura. Um registro de deslocamento dinâmico com clock de duas fases pode ser realizado no NMOS usando quatro NFETs e dois resistores por bit. Um registro de deslocamento estático exigiria oito NFETs e quatro resistores por bit. Hoje, abordagens de lógica dinâmica não são tão comuns. Na década de 1970, a capacitância de portas era substancial e não havia como se livrar dela. Portanto, não havia nenhuma razão específica para não tirar proveito disso. Hoje, a capacitância de gate é geralmente muito menor e os fabricantes de chips estão tentando ativamente reduzi-la ainda mais. Para que a lógica dinâmica funcione de maneira confiável, muitas vezes é necessário trabalhar deliberadamente para aumentar a capacitância da porta. Na maioria dos casos, a área extra de chip necessária para aumentar a capacitância poderia ser usada com a mesma eficácia para adicionar mais transistores, de modo a tornar a capacitância desnecessária.


Você menciona o NMOS e o IIRC; existe uma conexão entre a popularidade da lógica dinâmica e o MOS complementar (CMOS) ainda não disponíveis.
JPC

@jpc: Examinei os esquemas de vários chips NMOS - alguns detalhadamente, incluindo o Atari 2600 TIA, que é um verdadeiro trabalho de gênio -, as pessoas ainda estão descobrindo coisas novas três décadas depois. Eu acho que uma vantagem do NMOS versus o CMOS do ponto de vista da conveniência do projeto é que o 'disparo direto' (ativação simultânea acidental da unidade lateral alta e baixa) não é um fator, embora eu confesse alguma curiosidade sobre o porquê O CMOS não é executado em uma voltagem baixa o suficiente para que o ponto de cruzamento de uma entrada deixe os drivers laterais alto e baixo desligados, em vez de ativar os dois.
supercat

@jpc: No NMOS, é possível implementar uma porta XOR com dois transistores e dois resistores, se as entradas forem suficientemente "fortes". Mesmo que seja necessário adicionar inversores às duas entradas, uma porta xor com quatro transistores e quatro resistores seria melhor do que muitas outras abordagens. Eu nunca vi a abordagem usada, apesar de ter projetado um circuito semelhante usando BJTs por volta de 1978 (o conceito de design funcionaria melhor com MOSFETS, mas eu não sabia nada sobre eles).
supercat

2
+1 - Eu sinto que a verdadeira jóia que você mencionou aqui é que velocidades de clock mais baixas economizam energia, mas não tanto quanto os modos de suspensão, projetados especificamente para otimizar a economia de energia. Meu intestino me diz que você economizará mais energia executando um oscilador rápido combinado com o uso criterioso do modo de suspensão, executando constantemente em uma frequência muito baixa.
Joel B

@ JoelB: Isso depende de muitos fatores. Em muitos processadores, existe um atraso entre ativar um relógio rápido e poder usá-lo; durante esse tempo, um desperdiçará energia. Se alguém tiver que acordar, por exemplo, 100x / segundo, talvez seja melhor correr lentamente continuamente do que iniciar e parar constantemente. Por outro lado, se alguém iniciar e parar o relógio rápido, pode ser bom minimizar a quantidade de tempo que está sendo executada, na medida em que é possível fazê-lo sem desperdiçar energia adicional. Por exemplo ...
supercat 28/06/12

12

Sim, você pode parar o relógio completamente e reiniciá-lo posteriormente, sem consequências. Você pode até substituir o relógio por um botão e seguir seu programa literalmente passo a passo (frequência: cerca de 0,1 Hz).

A potência é quase linear com a frequência: a 10 MHz, o microcontrolador consome 10 vezes mais energia que a 1 MHz. Isso não significa que, em 0 Hz, o consumo seja completamente zero. Sempre há dissipação estática, mas é muito baixa, normalmente 1 uA ou menos.

PS: observe que o ADC tem uma frequência operacional mínima. Se a frequência for muito baixa, o capacitor sobre o qual a tensão é medida descarregará demais e sua medição estará errada.


Botão de apertar? E quanto à devolução?
Peter Mortensen

1
É necessário rebater.
Vovanium

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.