Les microcontrôleurs peuvent-ils fonctionner à des fréquences d'horloge arbitrairement basses?

103

La fiche technique du ATTiny13A, par exemple, indique une fréquence minimale de 0 MHz. Cela signifie-t-il que l'horloge peut fonctionner à n'importe quelle fréquence arbitrairement basse sans effets pervers? Je suppose que cela attire moins de courant à des vitesses d'horloge inférieures? Est-ce que 0 MHz signifie que vous pouvez arrêter complètement l'horloge, et tant que le courant reste alimenté, il se souviendra de son état indéfiniment?

endolithe
la source
34
J'aimerais ajouter que c'est une excellente question. La plupart des EE chevronnés ne prennent pas le temps de lire et de penser aux feuilles de données, ce qui est soit un complément pour vous, soit une insulte à eux, je voudrais impliquer les deux.
Kortuk
Je ne suis pas tout à fait sûr que l'oscillateur RC interne soit éteint, sauf indication contraire de votre part (via diverses options d'économie d'énergie). Je ne sais pas pour quoi il est utilisé, mais au moins pour EEPROM et probablement ADC.
Jippie
1
@Jippie quel RC interne vous dites? ATMegaX, par exemple, a le RC interne pour l’horloge système (normalement 8 MHz, avec diviseur optionnel div 8), l’oscillateur de surveillance. L'horloge système est sélectionnée par fusible et est probablement désactivée lors de l'utilisation d'une horloge externe. Les autres, comme vous l'avez dit, peuvent être désactivés par les modes d'économie d'énergie, mais je doute que le système s'arrête.
Diego C Nascimento

Réponses:

73

Oui. Si la fiche technique dit "fonctionnement entièrement statique", vous pouvez l'horloge à n'importe quelle vitesse, même à 0 Hz. Une puce "dynamique" doit avoir une horloge à un taux spécifique ou elle perd son état.

todbot
la source
1
Avez-vous un exemple de micro qui permet cela?
MrEvil
4
Les microcontrôleurs qui contiennent un flash intégré peuvent spécifier une vitesse d'horloge minimale (et maximale) lors de l'écriture sur le flash. Cependant, lors de la lecture de flash, cela ne s'applique pas.
Steve Melnikoff
8
Monsieur Evil, la série Atmel AVR ATtiny mentionnée dans la question est totalement statique, comme je pense la plupart des puces Atmel AVR. Et je pense à la plupart des microcontrôleurs PIC de Microchip.
todbot
7
En fait, je pense que l'ADC dans l'ATTiny13A ne fonctionne pas aux basses fréquences, peut-être à cause de la décroissance du condensateur bloqueur? "Par défaut, le circuit d'approximation successif nécessite une fréquence d'horloge d'entrée comprise entre 50 kHz et 200 kHz pour obtenir une résolution maximale. ... Le module ADC contient un compteur de réduction, qui génère une fréquence d'horloge ADC acceptable à partir de toute fréquence CPU supérieure à 100 kHz."
endolith
8
endolithe - Je conviens que les convertisseurs ADC ne fonctionnent généralement pas aux basses fréquences. Autant que je sache, tout le reste de la quasi-totalité des microcontrôleurs modernes continue de fonctionner correctement jusqu'à "0 Hz", aussi appelé "pause indéfiniment". En particulier, de nombreux microcontrôleurs ont un mode "veille à faible consommation d'énergie" qui arrête toutes les horloges jusqu'à ce que quelque chose - typiquement une personne qui appuie sur un bouton - le réveille et qu'il reprenne là où il s'était arrêté. en.wikipedia.org/wiki/Static_logic_(digital_logic)
davidcary
23

Je poste une autre réponse, simplement parce que votre dernière question n'avait pas de réponse auparavant.

Todbot est complètement correct. Il utilisera également une puissance inférieure à des vitesses inférieures. Cela signifie également que si vous fournissez son horloge à partir d’un autre processeur, par exemple, vous pouvez arrêter de l’alimenter à tout moment, puis commencer à le chronométrer plus tard, tant que vous n’allez pas plus vite que la vitesse maximale, tout ira bien.

Les puces que j’ai reçoivent un ordre de grandeur entre un oscillateur de 32768Hz et un oscillateur de 1 MHz. J'ai eu des applications où je n'avais pas besoin de vitesse, j'avais juste besoin d'un autre petit gars qui s'occupait de la gestion des données de base pour moi.

J'espère que cela t'aides.

Kortuk
la source
9
J'ai toujours voulu gérer la ligne d'horloge d'un microcontrôleur avec un bouton-poussoir. Laissez l'humain être l'horloge. :) Sur une note plus sérieuse, ces conceptions statiques ont un très bel avantage: leur consommation électrique est linéaire avec la vitesse d'horloge: ralentissez l'horloge et utilisez moins d'énergie. Cela peut être très pratique.
todbot
5
Oui, mais j'aime bien noter que la consommation d'énergie est une fonction linéaire avec un décalage. Même sans horloge, ils consomment encore de l'énergie, en particulier lorsque les sorties sont pilotées. Nous venons de recevoir de nouveaux stagiaires à mon travail, je suggèrerais que nous utilisions un bouton-poussoir pour voir ce qui se passe.
Kortuk
13
@todbot Belle idée. :-) Mais assurez-vous de faire rebondir le bouton-poussoir.
starblue
4
Essayez avec un "grind crank" (comme dans le sens de Jargon: jargon.net/jargonfile/g/grindcrank.html ) :-)) (et oui, il y a de nombreuses années, j'en ai construit un pour passer à travers le code lorsque j'utilisais Turbo Pascal à l'école :-)
Axeman
@todbot Ce n'est pas vraiment exagéré ni difficile, si vous pouvez accepter une abstraction approximative. Il existe plusieurs exemples de personnes utilisant de tels gadgets pour apprendre le fonctionnement des ordinateurs. Myke Predko a un très bon livre, et il est même livré avec des PCB (mais pas pour le projet informatique): amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/…
Lou
17

La plupart des conceptions modernes de microcontrôleurs fonctionnent avec n'importe quel motif sur leur entrée d'horloge, à la condition qu'aucune impulsion haute ne soit en dessous d'une certaine longueur minimale, qu'aucune impulsion basse ne soit en dessous d'une certaine longueur minimale et qu'aucun bas-haut-bas-bas-haut-bas-haut La paire d'impulsions est inférieure à une certaine longueur. En gros, ce qui se passe, c'est qu'après que la puce ait effectué toutes les actions associées à un bord d'horloge particulier, la puce sera dans un état où elle ne fait rien mais attend le prochain bord d'horloge. Si le prochain front d'horloge n'arrive pas avant dix jours, la puce sera dans le même état que si la puce avait un chien de garde externe, comme si le bord était arrivé au moment où elle était prête.

Notez qu'en général, suspendre l'horloge sur un microcontrôleur réduira considérablement la consommation de courant, mais pas autant que l'utilisation de la fonction "veille". La consommation de courant de la plupart des microcontrôleurs en mode "run" peut être assez bien estimée comme un courant de repos constant plus une certaine quantité de courant par cycle par seconde (ce qui pourrait être plus "naturellement" exprimé en charge par cycle). Par exemple, une puce peut avoir un courant de repos de 10uA, plus un courant de 0,1 mA / MHz (100pC / cycle). L'exécution d'une telle puce à 10 MHz donnerait un courant de 1,01 mA. Le faire fonctionner à 1 MHz donnerait 0,11 mA. L'exécuter à 100KHz donnerait 0,02mA. Fonctionnant à 1Hz, le rendement est 0.0100001mA. D'autre part, la puce pourrait offrir un courant de veille de 1uA. Généralement, entrer en mode veille éteindra complètement les zones de la puce qui ne serviront à rien pendant son sommeil, évitant ainsi toute fuite de courant de telles zones. Dans certains cas, cela réduira également la tension dans des zones telles que les fichiers de registre à un niveau où les fichiers de registre peuvent contenir leur contenu, mais ne doivent pas y accéder très rapidement (étant donné qu’ils ne seront pas du tout accessibles, la vitesse d’accès importe peu) .

Certains anciens microprocesseurs, microcontrôleurs et autres périphériques présentaient des durées maximales d'horloge haute et / ou basse. Ces processeurs utilisaient une logique dynamique pour économiser les circuits. Comme exemple de logique dynamique, considérons un registre à décalage: un bit de registre statique typique nécessite un circuit à deux transistors pour conserver la valeur, tandis qu'un bit de registre dynamique conserve la valeur sur la grille d'un transistor de lecture. Un registre à décalage dynamique à deux phases peut être réalisé en NMOS en utilisant quatre NFET et deux résistances par bit. Un registre à décalage statique nécessiterait huit NFET et quatre résistances par bit. Les approches logiques dynamiques ne sont pas aussi courantes aujourd'hui. Dans les années 1970, la capacité de grille était importante et il n'y avait pas moyen de s'en débarrasser. Il n'y avait donc aucune raison particulière de ne pas en profiter. Aujourd'hui, La capacité de grille est généralement beaucoup plus faible et les fabricants de puces essaient activement de la réduire davantage. Pour que la logique dynamique fonctionne de manière fiable, il faudrait souvent travailler délibérément pour augmenter la capacité de la grille. Dans la plupart des cas, la zone de puce supplémentaire nécessaire pour augmenter la capacité pourrait être utilisée de manière tout aussi efficace pour ajouter davantage de transistors, de manière à rendre la capacité inutile.

supercat
la source
Vous mentionnez NMOS et IIRC, il existe un lien entre la popularité de la logique dynamique et les MOS complémentaires (CMOS) qui ne sont pas encore disponibles.
JPC
@jpc: J'ai examiné les schémas de différentes puces NMOS - certaines de manière très détaillée, y compris l'Atari 2600 TIA, qui est un véritable travail de génie - les gens trouvent encore de nouvelles choses à faire avec elle trois décennies plus tard. Je pense que l’un des avantages de la technologie NMOS par rapport à la technologie CMOS, du point de vue de la conception, est que le «tir direct» (activation simultanée accidentelle de la commande côté haut et côté bas) n’est pas un facteur, bien que je sois un peu curieux de savoir pourquoi. Le CMOS ne fonctionne pas à une tension suffisamment basse pour que le point de croisement sur une entrée laisse les drivers de haut et de bas côté, plutôt que d'activer les deux.
Supercat
@jpc: Dans NMOS, il est possible d'implémenter une porte XOR avec deux transistors et deux résistances, si les entrées sont suffisamment "fortes". Même s'il faut ajouter des inverseurs aux deux entrées, une porte xor à quatre résistances à quatre transistors serait préférable à de nombreuses autres approches. Je n'ai toutefois jamais vu l'approche utilisée, même si j'ai conçu un circuit similaire à l'aide de BJT autour de 1978 (le concept de conception fonctionnerait mieux avec MOSFETS, mais je ne connaissais rien d'eux).
Supercat
2
+1 - Je pense que le vrai bijou que vous avez mentionné ici est que des vitesses d'horloge plus faibles permettent d'économiser de l'énergie, mais pas autant que les modes veille spécialement conçus pour optimiser les économies d'énergie. Mon instinct me dit que vous économiserez plus d'énergie avec un oscillateur rapide associé à une utilisation judicieuse du mode veille, en cas de fonctionnement à une fréquence très basse en permanence.
Joel B
@JoelB: Cela dépend de nombreux facteurs. Sur de nombreux processeurs, il y a un délai entre l'activation d'une horloge rapide et la possibilité de l'utiliser. pendant ce temps, on va gaspiller de l'énergie. Si vous devez vous réveiller, par exemple 100 fois par seconde, il peut être préférable de courir lentement de manière continue que de démarrer et d’arrêter constamment. D'un autre côté, si l'on veut démarrer et arrêter une horloge rapide, il peut être judicieux de minimiser la durée de fonctionnement, de manière à pouvoir le faire sans gaspiller d'énergie supplémentaire. Par exemple ...
Supercat
12

Oui, vous pouvez arrêter complètement l’horloge et la redémarrer plus tard sans conséquences. Vous pouvez même remplacer l'horloge par un bouton-poussoir et parcourir votre programme littéralement, étape par étape (fréquence: environ 0,1 Hz).

La puissance est presque linéaire avec la fréquence: à 10 MHz, le microcontrôleur consomme 10 fois plus de puissance qu’à 1 MHz. Cela ne signifie toutefois pas qu’à 0 Hz, la consommation est totalement nulle. Il y a toujours une dissipation statique, mais elle est très faible, généralement inférieure ou égale à 1 µA.

PS: notez que l’ADC a une fréquence de fonctionnement minimale. Si la fréquence est trop basse, le condensateur sur lequel la tension est mesurée se déchargera trop et votre mesure sera fausse.

flup
la source
Bouton? Qu'en est-il du rebond?
Peter Mortensen
1
Le débordement est requis.
Vovanium le