I microcontrollori possono funzionare a frequenze di clock arbitrariamente basse?


103

Il foglio dati di ATTiny13A, ad esempio, elenca una frequenza minima di 0 MHz. Questo significa che l'orologio può essere eseguito a qualsiasi frequenza arbitrariamente bassa senza effetti negativi? Suppongo che assorba una corrente inferiore a velocità di clock inferiori? 0 MHz significa che puoi fermare completamente l'orologio e fino a quando la potenza è ancora applicata, ricorderà il suo stato indefinitamente?


34
Vorrei aggiungere, questa è un'ottima domanda. La maggior parte degli EE senior non si prende il tempo di leggere e pensare effettivamente ai fogli di dati, che sono un complemento per te o un insulto per loro, vorrei implicare entrambi.
Kortuk,

Non sono del tutto sicuro che l'oscillatore RC interno sia spento a meno che tu non lo istruisca specificamente (attraverso varie opzioni di risparmio energetico). Non sono sicuro di cosa venga utilizzato, ma almeno per EEPROM e probabilmente ADC.
jippie,

1
@jippie quale RC interno stai dicendo? ATMegaX, ad esempio, ha l'RC interno per l'orologio di sistema (normalmente 8Mhz, con prescaler div 8 opzionale), ha l'oscillatore watchdog. L'orologio di sistema è selezionato con fusibile ed è probabilmente spento quando si utilizza l'orologio esterno. Gli altri, come hai detto, potrebbero essere disabilitati dalle modalità di risparmio energetico, ma dubito che si fermerà dall'orologio di sistema.
Diego C Nascimento,

Risposte:


73

Sì. Se il foglio dati indica "funzionamento completamente statico", è possibile sincronizzarlo a qualsiasi velocità, anche a 0 Hz. Un chip "dinamico" deve avere un clock a una velocità specifica o perde il suo stato.


1
hai un esempio di un micro che lo consente?
MrEvil,

4
I microcontrollori che contengono flash su chip possono specificare una velocità di clock flash minima (e massima) durante la scrittura sul flash. Tuttavia, quando si legge dal flash, questo non si applica.
Steve Melnikoff,

8
MrEvil, la serie Atmel AVR ATtiny menzionata nella domanda è completamente statica, poiché penso che la maggior parte di tutti i chip Atmel AVR. E penso soprattutto a tutti i microcontrollori PIC di Microchip.
todbot del

7
In realtà, penso che l'ADC nell'ATTiny13A non funzioni alle basse frequenze, forse a causa del decadimento del condensatore di campionamento e mantenimento? "Per impostazione predefinita, i circuiti di approssimazione successivi richiedono una frequenza di clock in ingresso tra 50 kHz e 200 kHz per ottenere la massima risoluzione. ... Il modulo ADC contiene un prescaler, che genera una frequenza di clock ADC accettabile da qualsiasi frequenza della CPU superiore a 100 kHz."
endolith il

8
endolith - Sono d'accordo, gli ADC di solito non funzionano a basse frequenze. Per quanto ne so, praticamente tutto il resto su tutti i moderni microcontrollori continua a funzionare bene fino a "0 Hz", noto anche come "pausa indefinitamente". In particolare, molti microcontrollori hanno una modalità di "sospensione a basso consumo" che arresta tutti gli orologi, fino a quando qualcosa - in genere una persona che preme un pulsante - lo sveglia e riprende da dove era stato interrotto. en.wikipedia.org/wiki/Static_logic_(digital_logic)
davidcary

23

Sto pubblicando un'altra risposta, solo perché l'ultima domanda che hai avuto non ha avuto risposta prima.

Todbot è completamente corretto. Assorbe anche una potenza inferiore a velocità inferiori. Significa anche che se si fornisce l'orologio da un altro processore, ad esempio, è possibile interrompere la fornitura in qualsiasi momento e quindi iniziare a sincronizzarlo in un secondo momento, purché non si vada più veloce della velocità massima, andrà tutto bene.

I Chips I ottengono un ordine di variazione della grandezza tra l'oscillatore 32768Hz e uno 1MHz. Ho avuto applicazioni in cui non avevo bisogno di velocità, avevo solo bisogno di un altro ometto che gestisse i dati di base per me.

Spero che sia di aiuto.


9
Ho sempre desiderato eseguire una linea di clock di un microcontrollore con un pulsante. Lascia che l'uomo sia l'orologio. :) Una cosa seria, una cosa davvero bella di questi design statici è il loro consumo di energia è lineare con la velocità di clock: rallenta il clock e consuma meno energia. Questo può essere davvero utile.
todbot del

5
Sì, ma mi piace notare che il consumo di energia è una funzione lineare con un offset, anche senza un orologio consumano ancora energia, in particolare con qualsiasi uscita pilotata. Abbiamo appena ricevuto nuovi stagisti nel mio lavoro, suggerirò di usare un pulsante e vedere cosa succede.
Kortuk,

13
@todbot Bella idea. :-) Ma assicurati di rimbalzare il pulsante.
Starblue,

4
Prova con una "grind crank" (come nel significato del gergo: jargon.net/jargonfile/g/grindcrank.html ) :-)) (e sì, molti anni fa ne ho costruito uno per passare il codice quando stavo usando Turbo Pascal a scuola :-)
Axeman il

@todbot Non è davvero inverosimile o difficile, se puoi accettare un'astrazione approssimativa. Esistono diversi esempi di persone che utilizzano tali gadget per insegnare come funzionano i computer. Myke Predko ha davvero un buon libro e viene fornito anche con PCB (anche se non per il progetto informatico): amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/…
Lou

17

La maggior parte dei moderni progetti di microcontrollori funzionerà con qualsiasi modello sull'ingresso del clock, a condizione che nessun impulso alto sia inferiore a una determinata lunghezza minima, nessun impulso basso sia inferiore a una determinata lunghezza minima e nessun basso-alto-basso o alto-basso-alto la coppia di impulsi è inferiore a una certa lunghezza. In sostanza, ciò che accade è che dopo che il chip esegue tutte le azioni associate a un determinato fronte di clock, il chip si troverà in uno stato in cui non sta facendo altro che attendere il successivo limite di clock. Se il successivo limite di clock non arriva per dieci giorni (a meno che il chip non abbia qualche watchdog esterno) il chip sarà nello stesso stato come se il edge fosse arrivato nel momento in cui il chip era pronto per esso.

Si noti che, in generale, mettere in pausa l'orologio su un microcontrollore ridurrà sostanzialmente il consumo di corrente, ma non tanto quanto l'utilizzo della funzione "sleep". Il consumo di corrente della maggior parte dei microcontrollori in modalità "run" può essere piuttosto stimato come una corrente di riposo costante più una certa quantità di corrente per ciclo al secondo (che potrebbe essere più "naturalmente" espressa come carica per ciclo). Ad esempio, un chip potrebbe avere una corrente di riposo di 10uA, più una corrente di 0,1 mA / MHz (100pC / ciclo). L'esecuzione di un chip di questo tipo a 10 MHz produrrebbe una corrente di 1,01 mA. Eseguirlo a 1MHz produrrebbe 0,11mA. L'esecuzione a 100 KHz produrrebbe 0,02 mA. Eseguendolo a 1Hz woudl produce 0,0100001 mA. D'altra parte, il chip potrebbe offrire una corrente di sonno di 1uA. Generalmente, entrando in modalità sleep spegnerà completamente le aree del chip che non faranno nulla di utile mentre il chip sta dormendo, evitando così qualsiasi corrente di dispersione che tali aree potrebbero avere. In alcuni casi ridurrà anche la tensione ad aree come i file di registro a un livello in cui i file di registro possono contenere i loro contenuti, ma non accedervi molto rapidamente (poiché non saranno accessibili affatto, la velocità di accesso non importa) .

Alcuni vecchi microprocessori, microcontrollori e altri dispositivi avevano tempi di clock massimo e / o minimo. Tali processori hanno fatto uso della logica dinamica per salvare i circuiti. Come esempio di logica dinamica, prendere in considerazione un registro a scorrimento: un tipico bit di registro statico richiede un circuito a due transistor per contenere il valore, mentre un bit di registro dinamico contiene il valore sulla porta di un transistor di lettura. Un registro a spostamento dinamico con clock a due fasi può essere realizzato in NMOS utilizzando quattro NFET e due resistori per bit. Un registro a scorrimento statico richiederebbe otto NFET e quattro resistori per bit. Gli approcci di logica dinamica non sono così comuni oggi. Negli anni '70, la capacità del gate era notevole e non c'era modo di liberarsene. Pertanto, non vi era alcun motivo particolare per non trarne vantaggio. Oggi, la capacità del gate è generalmente molto più bassa e i produttori di chip stanno attivamente cercando di ridurla ulteriormente. Far funzionare la logica dinamica in modo affidabile richiederebbe spesso un lavoro deliberato per aumentare la capacità del gate. Nella maggior parte dei casi, l'area aggiuntiva del chip necessaria per aumentare la capacità potrebbe essere utilizzata altrettanto efficacemente per aggiungere più transistor in modo da rendere superflua la capacità.


Citi NMOS e IIRC che esiste una connessione tra la popolarità della logica dinamica e il MOS complementare (CMOS) non ancora disponibili.
jpc,

@jpc: ho esaminato gli schemi di vari chip NMOS - alcuni in grande dettaglio, tra cui l'Atari 2600 TIA, che è un vero lavoro geniale - le persone stanno ancora trovando nuove cose da fare tre decenni dopo. Penso che un vantaggio di NMOS rispetto a CMOS dal punto di vista della convenienza del design sia che lo "shoot-through" (attivazione simultanea accidentale di unità high-side e low-side) non è un fattore, anche se confesserò qualche curiosità sul perché Il CMOS non funziona a una tensione sufficientemente bassa che il punto di crossover su un ingresso lascerebbe spenti i driver lato alto e basso, anziché attivare entrambi.
supercat

@jpc: in NMOS, è possibile implementare una porta XOR con due transistor e due resistori, se gli ingressi sono sufficientemente "forti". Anche se si devono aggiungere inverter ad entrambi gli ingressi, una porta xor a quattro transistor a quattro resistori sarebbe meglio di molti altri approcci. Non ho mai visto l'approccio usato, anche se ho progettato un circuito simile usando BJT intorno al 1978 (il concetto di design avrebbe funzionato meglio con MOSFET, ma non ne sapevo nulla).
supercat

2
+1 - Sento che il vero gioiello che hai menzionato qui è che le basse velocità di clock fanno risparmiare energia, ma non tanto quanto le modalità di sospensione che sono specificamente progettate per ottimizzare il risparmio energetico. Il mio istinto mi dice che risparmierai più energia eseguendo un oscillatore veloce combinato con un uso giudizioso della modalità di sospensione, oltre a correre costantemente a una frequenza molto bassa.
Gioele B,

@JoelB: dipende da molti fattori. Su molti processori, c'è un ritardo tra l'attivazione di un orologio veloce e la possibilità di utilizzarlo effettivamente; durante questo periodo, si sprecherà energia. Se uno dovrebbe svegliarsi, ad es. 100x / secondo, potrebbe essere meglio correre lentamente continuamente piuttosto che iniziare e fermarsi costantemente. D'altra parte, se si sta per avviare e arrestare l'orologio veloce, può essere utile ridurre al minimo il tempo che corre nella misura in cui si può farlo senza sprecare energia aggiuntiva. Ad esempio ...
supercat,

12

Sì, puoi fermare completamente l'orologio e riavviarlo in un secondo momento senza conseguenze. È anche possibile sostituire l'orologio con un pulsante e scorrere letteralmente il programma passo dopo passo (frequenza: circa 0,1 Hz).

La potenza è quasi lineare con la frequenza: a 10 MHz il microcontrollore consumerà 10 volte più potenza di 1 MHz. Ciò non significa che a 0 Hz il consumo sia completamente zero, però. C'è sempre dissipazione statica, ma è molto bassa, in genere 1 uA o meno.

PS: notare che l'ADC ha una frequenza operativa minima. Se la frequenza è troppo bassa, il condensatore su cui viene misurata la tensione si scaricherà troppo e la misurazione sarà errata.


Premi il bottone? Che dire del rimbalzo?
Peter Mortensen,

1
Debouncing è richiesto.
Vovanium

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.