Können Mikrocontroller mit beliebig niedrigen Taktfrequenzen betrieben werden?

103

Das Datenblatt für den ATTiny13A listet beispielsweise eine Mindestfrequenz von 0 MHz auf. Bedeutet dies, dass die Uhr mit einer beliebigen niedrigen Frequenz ohne negative Auswirkungen betrieben werden kann? Ich gehe davon aus, dass es bei niedrigeren Taktraten weniger Strom zieht? Bedeutet 0 MHz, dass Sie die Uhr vollständig anhalten können, und dass sie sich, solange die Spannung noch anliegt, auf unbestimmte Zeit an ihren Zustand erinnert?

Endolith
quelle
34
Ich möchte hinzufügen, das ist eine ausgezeichnete Frage. Die meisten Senior EEs nehmen sich nicht die Zeit, Datenblätter zu lesen und darüber nachzudenken. Dies ist entweder eine Ergänzung für Sie oder eine Beleidigung für sie. Ich möchte beides implizieren.
Kortuk
Ich bin nicht ganz sicher, ob der interne RC-Oszillator heruntergefahren wird, es sei denn, Sie weisen ihn ausdrücklich an (durch verschiedene Energiesparoptionen). Nicht sicher, wofür es verwendet wird, aber zumindest für EEPROM und wahrscheinlich ADC.
jippie
1
@jippie welche interne RC sagst du? ATMegaX verfügt beispielsweise über den internen RC für die Systemuhr (normalerweise 8 MHz, mit optionalem Div-8-Prescaler) und über den Watchdog-Oszillator. Die Systemuhr ist abgesichert und bei Verwendung einer externen Uhr wahrscheinlich ausgeschaltet. Die anderen, wie Sie sagten, können durch Energiesparmodi deaktiviert werden, aber ich bezweifle, dass sie bei der Systemuhr anhalten.
Diego C Nascimento

Antworten:

73

Ja. Wenn das Datenblatt "vollständig statischer Betrieb" anzeigt, können Sie es mit jeder Geschwindigkeit takten, sogar mit 0 Hz. Ein "dynamischer" Chip muss eine bestimmte Taktrate haben, sonst verliert er seinen Zustand.

todbot
quelle
1
Haben Sie ein Beispiel für ein Mikro, das dies ermöglicht?
MrEvil
4
Mikrocontroller, die On-Chip-Flash enthalten, können beim Schreiben in Flash eine minimale (und maximale) Flash-Taktrate festlegen. Dies gilt jedoch nicht beim Lesen von Flash.
Steve Melnikoff
8
Herr Evil, die in der Frage erwähnte Atmel AVR ATtiny-Serie ist vollständig statisch, wie ich finde, die meisten Atmel AVR-Chips. Und ich denke fast alle PIC-Mikrocontroller von Microchip.
Todbot
7
Eigentlich denke ich, dass der ADC im ATTiny13A bei niedrigen Frequenzen nicht funktioniert, vielleicht weil der Sample-and-Hold-Kondensator abfällt? "Standardmäßig benötigt die Schaltung für die sukzessive Approximation eine Eingangstaktfrequenz zwischen 50 kHz und 200 kHz, um die maximale Auflösung zu erzielen. ... Das ADC-Modul enthält einen Vorteiler, der aus jeder CPU-Frequenz über 100 kHz eine akzeptable ADC-Taktfrequenz erzeugt."
Endolith
8
Endolith - Ich stimme zu, ADCs funktionieren normalerweise nicht bei niedrigen Frequenzen. Soweit ich das beurteilen kann, funktioniert alles andere auf praktisch allen modernen Mikrocontrollern bis hinunter zu "0 Hz", auch bekannt als "Pause auf unbestimmte Zeit". Insbesondere verfügen viele Mikrocontroller über einen Energiesparmodus, in dem alle Uhren angehalten werden, bis etwas - normalerweise eine Person, die auf einen Knopf drückt - aktiviert und dort fortgesetzt wird, wo es aufgehört hat. en.wikipedia.org/wiki/Static_logic_(digital_logic)
Davidcary
23

Ich poste eine andere Antwort, nur weil die letzte Frage, die Sie hatten, noch nicht beantwortet wurde.

Todbot ist völlig richtig. Bei niedrigeren Geschwindigkeiten wird auch weniger Strom verbraucht. Dies bedeutet auch, dass Sie, wenn Sie die Uhr von einem anderen Prozessor liefern, die Lieferung jederzeit beenden und später mit der Taktung beginnen können, sofern Sie nicht schneller als mit maximaler Geschwindigkeit arbeiten.

Die Chips, die ich habe, haben eine Größenordnung zwischen 32768Hz Oszillator und einem 1MHz. Ich hatte Anwendungen, bei denen ich keine Geschwindigkeit brauchte. Ich brauchte nur einen anderen kleinen Mann, der die grundlegenden Daten für mich handhabte.

Hoffe das hilft.

Kortuk
quelle
9
Ich wollte schon immer die Clock-Linie eines Mikrocontrollers mit einem Taster bedienen. Lass den Menschen die Uhr sein. :) Ernsthaft ist, dass die Leistungsaufnahme dieser statischen Konstruktionen linear zur Taktfrequenz ist: Verlangsamen Sie die Taktfrequenz und verbrauchen Sie weniger Strom. Das kann sehr praktisch sein.
Todbot
5
Ja, aber ich möchte bemerken, dass der Stromverbrauch eine lineare Funktion mit einem Offset ist, auch ohne eine Uhr verbrauchen sie noch Strom, insbesondere wenn irgendwelche Ausgänge angesteuert werden. Wir haben gerade neue Praktikanten bei meiner Arbeit, ich werde vorschlagen, dass wir einen Druckknopf benutzen und sehen, was passiert.
Kortuk
13
@ todbot Schöne Idee. :-) Entprellen Sie aber unbedingt den Druckknopf.
Starblue
4
Versuchen Sie es mit einer "schleifenden Kurbel" (wie in der Jargon-Bedeutung: jargon.net/jargonfile/g/grindcrank.html ) :-)) (und ja, ich habe vor vielen Jahren einen Code zum Durchschleifen erstellt, als ich Turbo Pascal verwendet habe in der Schule :-)
Axeman
@todbot Es ist nicht wirklich weit hergeholt oder schwierig, wenn man eine grobe Abstraktion akzeptieren kann. Es gibt mehrere Beispiele, in denen Benutzer solche Geräte verwenden, um die Funktionsweise von Computern zu lehren. Myke Predko hat ein wirklich gutes Buch und es wird sogar mit Leiterplatten geliefert (allerdings nicht für Computerprojekte): amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/…
Lou
17

Die meisten modernen Mikrocontroller-Designs funktionieren mit jedem Muster an ihrem Takteingang, vorausgesetzt, kein hoher Impuls liegt unter einer bestimmten Mindestlänge, kein niedriger Impuls liegt unter einer bestimmten Mindestlänge und kein Niedrig-Hoch-Niedrig oder Hoch-Niedrig-Hoch Das Impulspaar liegt unter einer bestimmten Länge. Im Wesentlichen geschieht Folgendes: Nachdem der Chip alle mit einer bestimmten Taktflanke verbundenen Aktionen ausgeführt hat, befindet er sich in einem Zustand, in dem er nur auf die nächste Taktflanke wartet. Wenn die nächste Taktflanke zehn Tage lang nicht eintrifft (es sei denn, der Chip verfügt über einen externen Watchdog), befindet sich der Chip in demselben Zustand, als wäre die Flanke in dem Moment angekommen, in dem der Chip dafür bereit war.

Beachten Sie, dass das Anhalten der Uhr auf einem Mikrocontroller im Allgemeinen den Stromverbrauch erheblich reduziert, jedoch nicht so stark wie das Verwenden der Funktion "Ruhezustand". Der Stromverbrauch der meisten Mikrocontroller im "Run" -Modus kann ziemlich gut als ein konstanter Ruhestrom zuzüglich einer bestimmten Strommenge pro Zyklus pro Sekunde (was natürlicher ausgedrückt als Ladung pro Zyklus sein könnte) geschätzt werden. Beispielsweise kann ein Chip einen Ruhestrom von 10 uA plus einen Strom von 0,1 mA / MHz (100 pC / Zyklus) aufweisen. Wenn ein solcher Chip mit 10 MHz betrieben wird, ergibt sich ein Strom von 1,01 mA. Wenn Sie es mit 1 MHz betreiben, erhalten Sie 0,11 mA. Ein Betrieb mit 100 kHz würde 0,02 mA ergeben. Läuft es bei 1Hz, ergibt es 0.0100001mA. Andererseits könnte der Chip einen Ruhestrom von 1 uA bieten. Allgemein, Wenn Sie in den Ruhemodus wechseln, werden Bereiche des Chips, die im Ruhemodus nichts Nützliches bewirken, vollständig abgeschaltet, wodurch eventuelle Leckströme in diesen Bereichen vermieden werden. In einigen Fällen wird auch die Spannung in Bereichen wie Registerdateien auf ein Niveau reduziert, in dem die Registerdateien ihren Inhalt enthalten können, aber nicht sehr schnell darauf zugreifen können (da auf sie überhaupt nicht zugegriffen werden kann, spielt die Zugriffsgeschwindigkeit keine Rolle). .

Einige ältere Mikroprozessoren, Mikrocontroller und andere Geräte hatten maximale Zeiten für hohe und / oder niedrige Takte. Solche Prozessoren verwendeten dynamische Logik, um Schaltungen einzusparen. Betrachten Sie als Beispiel für eine dynamische Logik ein Schieberegister: Ein typisches statisches Registerbit erfordert eine Zwei-Transistor-Schaltung, um den Wert zu halten, während ein dynamisches Registerbit den Wert am Gate eines Auslesetransistors hält. Ein zweiphasig getaktetes dynamisches Schieberegister kann im NMOS unter Verwendung von vier NFETs und zwei Widerständen pro Bit realisiert werden. Ein statisches Schieberegister würde acht NFETs und vier Widerstände pro Bit erfordern. Dynamische Logikansätze sind heute bei weitem nicht mehr so ​​verbreitet. In den 1970er Jahren war die Gatekapazität beträchtlich und konnte nicht beseitigt werden. Es gab also keinen besonderen Grund, davon keinen Gebrauch zu machen. Heute, Die Gatekapazität ist im Allgemeinen viel geringer, und die Chiphersteller versuchen aktiv, sie weiter zu reduzieren. Um die dynamische Logik zuverlässig arbeiten zu lassen, muss häufig bewusst gearbeitet werden, um die Gate-Kapazität zu erhöhen. In den meisten Fällen könnte die zusätzliche Chipfläche, die zum Erhöhen der Kapazität benötigt wird, genauso effektiv verwendet werden, um mehr Transistoren hinzuzufügen, um die Kapazität unnötig zu machen.

Superkatze
quelle
Sie erwähnen NMOS und IIRC, es gibt einen Zusammenhang zwischen der Popularität von dynamischer Logik und dem noch nicht verfügbaren komplementären MOS (CMOS).
JPC
@jpc: Ich habe die Schaltpläne verschiedener NMOS-Chips untersucht - einige davon sehr detailliert, einschließlich des Atari 2600 TIA, der ein echtes Genie ist. Drei Jahrzehnte später finden die Leute immer noch neue Möglichkeiten, damit umzugehen. Ich denke, ein Vorteil von NMOS im Vergleich zu CMOS im Hinblick auf die Benutzerfreundlichkeit besteht darin, dass das Durchschießen (versehentliche gleichzeitige Aktivierung des High- und Low-Side-Laufwerks) keine Rolle spielt, obwohl ich zugeben werde, warum dies so ist CMOS wird nicht mit einer Spannung betrieben, die niedrig genug ist, damit der Cross-Over-Punkt an einem Eingang die High- und Low-Side-Treiber deaktiviert, anstatt beide zu aktivieren.
Supercat
@jpc: In NMOS ist es möglich, ein XOR-Gatter mit zwei Transistoren und zwei Widerständen zu implementieren, wenn die Eingänge ausreichend "stark" sind. Selbst wenn man beiden Eingängen Inverter hinzufügen muss, wäre ein Vier-Transistor-Vier-Widerstand-xor-Gate besser als viele andere Ansätze. Ich habe den Ansatz jedoch noch nie gesehen, obwohl ich um 1978 eine ähnliche Schaltung mit BJTs entworfen habe (das Designkonzept würde besser mit MOSFETS funktionieren, aber ich wusste nichts über sie).
Supercat
2
+1 - Ich glaube, das wahre Juwel, das Sie hier erwähnt haben, ist, dass niedrigere Taktraten zwar Strom sparen, aber nicht so viel wie Schlafmodi, die speziell zur Optimierung der Energieeinsparung entwickelt wurden. Mein Bauch sagt mir, dass Sie mehr Energie sparen werden, wenn Sie einen schnellen Oszillator in Kombination mit einer vernünftigen Verwendung des Ruhemodus betreiben, während Sie konstant mit einer sehr niedrigen Frequenz laufen.
Joel B
@ JoelB: Das hängt von vielen Faktoren ab. Bei vielen Prozessoren gibt es eine Verzögerung zwischen dem Einschalten einer schnellen Uhr und ihrer tatsächlichen Verwendung. Während dieser Zeit wird man Energie verschwenden. Wenn man zB 100x / Sekunde aufwachen müsste, kann es besser sein, langsam zu laufen, als ständig zu starten und zu stoppen. Wenn man die schnelle Uhr startet und stoppt, kann es andererseits sinnvoll sein, die Laufzeit so gering wie möglich zu halten, ohne zusätzliche Energie zu verschwenden. Zum Beispiel ...
Supercat
12

Ja, Sie können die Uhr vollständig stoppen und zu einem späteren Zeitpunkt ohne Folgen neu starten. Sie könnten sogar die Uhr durch einen Druckknopf ersetzen und Ihr Programm buchstäblich Schritt für Schritt durchgehen (Frequenz: ca. 0,1 Hz).

Die Leistung ist mit der Frequenz nahezu linear: Bei 10 MHz verbraucht der Mikrocontroller 10-mal so viel Leistung wie bei 1 MHz. Dies bedeutet jedoch nicht, dass der Verbrauch bei 0 Hz vollständig Null ist. Es gibt immer eine statische Ableitung, die jedoch sehr gering ist, normalerweise 1 uA oder weniger.

PS: Beachten Sie, dass der ADC eine minimale Betriebsfrequenz hat. Wenn die Frequenz zu niedrig ist, entlädt sich der Kondensator, über den die Spannung gemessen wird, zu stark und Ihre Messung ist falsch.

flup
quelle
Druckknopf? Was ist mit Entprellen?
Peter Mortensen
1
Entprellen ist erforderlich.
Vovanium