Hallo,
bei einem Bastelprojekt mit einem Atmega, auf dem ein zeitunkritisches
Programm läuft, stelle ich mir die Frage, ob es für den Energieverbrauch
des Atmega einen Unterschied macht, ob ich die CLKDIV8-Fuse setze oder
nicht.
Der Atmega läuft mit internen 8MHz. Wenn man die CLKDIV8-Fuse nicht
setzt, läuft der Controller mit einem Takt von 8MHz, setzt man die
CLKDIV8-Fuse, läuft der Controller intern mit 1MHz Takt, richtig?
1MHz Taktfrequenz hätte gegenüber 8MHz Taktfrequenz den Vorteil, dass
der Controller weniger Strom zieht - oder?
Außerdem müsste der Controller dann auch mit einer niedrigeren
Versorgungsspannung auskommen - nehme ich an? Oder gilt das nur bei
einem externen 1MHz-Takt?
richiM schrieb:> Wenn man die CLKDIV8-Fuse nicht> setzt,
Default ist 1MHz interner Takt
Das gilt für (fast) alle ATMega
richiM schrieb:> 1MHz ... weniger Strom zieht
Ja, höchstvermutlich
richiM schrieb:> Außerdem müsste der Controller dann auch mit einer niedrigeren> Versorgungsspannung auskommen - nehme ich an? Oder gilt das nur bei> einem externen 1MHz-Takt?
Was steht dazu im Datenblatt?
wird da zwischen extern und intern unterschieden?
Danke für die Antwort!
Ulrich F. schrieb:>> Wenn man die CLKDIV8-Fuse nicht>> setzt,> Default ist 1MHz interner Takt
Stimmt, hatte ich verwechselt!
Ulrich F. schrieb:> richiM schrieb:>> Außerdem müsste der Controller dann auch mit einer niedrigeren>> Versorgungsspannung auskommen - nehme ich an? Oder gilt das nur bei>> einem externen 1MHz-Takt?> Was steht dazu im Datenblatt?> wird da zwischen extern und intern unterschieden?
So, wie ich das sehe, nein.
Also läuft ein Atmega mit internem Takt (oder externem Takt) von 1MHz
stromsparender und auch mit einer niedrigeren Versorgungsspannung als
bei internen (oder externen) 8MHz.
Das klingt doch gut! :-)
Das spart sogar eine ganze Menge. Der Core zieht mit 8 MHz genau 8 mal
so viel Strom wie mit 1 MHz. Die Gesamtstromaufnahme ist nicht so
linear, da es intern noch jede Menge Module hat, die von diesem Takt
nicht betroffen sind. Im Grunde brauchst du aber nur noch ca. 25% der
Energie. Wenn es dir darum geht, so wenig wie möglich an Energie zu
verbrauchen, kannst du den internen Resonator auch komplett still legen
und vom Watchdog-Oszillator leben. Der läuft nur mit (je nach Modell)
132kHz und braucht so gut wie gar kein Strom mehr.
Praxisbeispiel mit ATtiny13A:
128kHz + DIV8 + PRTIM0 + PRADC + ACD = 10.9uA im ACTIVE MODE(!)
Gibt genug Anwendungen, die mit 32kHz auskommen.
Bei vielen AVRs hat man noch den 128 kHz Takt vom Watchdog zur Auswahl.
Der ist noch etwas sparsamer, aber auch weniger genau. Dafür muss man
aber die Fuses verstellen und ggf. den ISP Takt reduzieren. Die
Umschaltung 1 MHz / 8 MHz kann man auch noch in Software zur Laufzeit
verändern. Die Div8 Fuse setzt nur den Startwert (i.A: auf 1 MHz) so
dass der µC auch mit niedriger Spannung laufen kann.
Wenn man in Wartezeiten den µC in einen sleep mode versetzt kann man
noch einiges mehr an Strom sparen. Dann macht es ggf. auch wenig aus ob
der µC mit 1 oder 8 MHz läuft.
Christian S. schrieb:> Das spart sogar eine ganze Menge. Der Core zieht mit 8 MHz genau 8 mal> so viel Strom wie mit 1 MHz. Die Gesamtstromaufnahme ist nicht so> linear, da es intern noch jede Menge Module hat, die von diesem Takt> nicht betroffen sind. Im Grunde brauchst du aber nur noch ca. 25% der> Energie.
Ganz so einfach ist die Sache aber nicht.
Denn ein mit 8Mhz getakteter Mega, arbeitet auch seine Befehle 8 mal so
schnell ab, wie ein mit 1Mhz getaktere. D.h. er braucht zwar 8 mal so
viel Strom, ist aber auch 8 mal so schnell mit seiner Arbeit fertig und
kann sich wieder schlafen legen :-)
Theoretisch sind niedrigere Taktfrequenzen für den Stromverbrauch immer
besser, da die Verluste in den internen Kapazitäten bei niedrigeren
Taktfrequenzen geringer sind.
In der Praxis ist der Effekt durch andere Effekte überlagert.
Beispielsweise kannst du bei einer hohen Taktfrequenz und bei gleicher
Aufgabe schneller zurück in den Sleep-Modus. In der Praxis musst du
daher messen, was wirklich besser ist (schnelle oder langsame
Taktfrequenz).
Dabei merkst du dann, dass das Messen an der Grasnarbe (sehr niedrige
Ströme, besonders im Sleep-Modus) eine Sache für sich ist, und das die
am Controller angeschlossene Peripherie auch ungewollt das ein oder
andere Elektron bewegt.
Karl H. schrieb:> Christian S. schrieb:>> Das spart sogar eine ganze Menge. Der Core zieht mit 8 MHz genau 8 mal>> so viel Strom wie mit 1 MHz. Die Gesamtstromaufnahme ist nicht so>> linear, da es intern noch jede Menge Module hat, die von diesem Takt>> nicht betroffen sind. Im Grunde brauchst du aber nur noch ca. 25% der>> Energie.>> Ganz so einfach ist die Sache aber nicht.> Denn ein mit 8Mhz getakteter Mega, arbeitet auch seine Befehle 8 mal so> schnell ab, wie ein mit 1Mhz getaktere. D.h. er braucht zwar 8 mal so> viel Strom, ist aber auch 8 mal so schnell mit seiner Arbeit fertig und> kann sich wieder schlafen legen :-)
Stimmt zwar, aber bei Batteriebetrieb ist es für die Chemie besser, wenn
wenig Strom gezogen wird. Im Endeffekt halten die Batterien so länger.
Ausserdem gibt es auch immer wieder Programme, die mit delays ohne Sleep
arbeiten, und da spart es auch Energie.
Christian S. schrieb:> Praxisbeispiel mit ATtiny13A:> 128kHz + DIV8 + PRTIM0 + PRADC + ACD = 10.9uA im ACTIVE MODE(!)> Gibt genug Anwendungen, die mit 32kHz auskommen.
Ah, klingt interessant!
Leute, ich danke euch für die vielen aufschlussreichen Antworten!!!
Ups, verrechnet. 128/8 ist immernoch 16 kHz :)
Naja, um Sensoren auszulesen und mal ein FET zu schalten reichts dicke.
Das DIV8 ist aber auch nur eine Faulheit, weil es einfacher ist, eine
Fuse zu setzen als den CLKPR Register zu ändern. Wenn man die 32kHz
braucht, setzt man CLKPR einfach auf 2.
Auch lustig: CLKPR auf 8 setzen und sich mit 500Hz Takt begnügen. Der
Upload des Programms dauert dann halt n bissl länger ;)
Christian S. schrieb:> Auch lustig: CLKPR auf 8 setzen und sich mit 500Hz Takt begnügen. Der> Upload des Programms dauert dann halt n bissl länger ;)
Die Kontroller werden wie ihre Anwender ja auch älter und können nicht
mehr so schnell wie früher, als das Hertz/Kreislaufsystem noch 16MHz
abkonnte.
Das sind dann sozusagen Schalt-Greise.
MfG Paul