|
|
AVR-Tutorial: Power ManagementACHTUNG! Dieser Artikel befindet sich noch im Aufbau! Vorallem in batteriebetriebenen Systemen spielt die Leistungsaufnahme eine wichtige Rolle, d.h. sie soll so niedrig wie möglich gehalten werden um eine lange Laufzeit zu erreichen. Den sparsamen Umgang mit der verfügbaren el. Ladung nennt man Power Management (dt. Energiesparen). Im Rahmen des Power Managements stehen uns beispielsweise die Sleep-Modi zur Verfügung, mit denen wir bestimmte Module zeitweise deaktivieren können. Andere garnicht genutzte Module können wir durch entsprechende Konfiguration (z.B. in den Fuses) auch komplett deaktivieren.
[Bearbeiten] Theorie[Bearbeiten] Sleep ModiWelche Sleep-Modi es gibt, hängt vom verwendeten µC ab, dieser Artikel nimmt jedoch Bezug auf den ATmega32. Um einen der verfügbaren Sleep-Modi des ATmega32 zu betreten müssen folgende Schritte ausgeführt werden
Der Mikrocontroller geht dann sofort in den SLEEP-Modus, d.h. noch vor eventuell anstehenden Interrupts, und wacht erst wieder auf wenn ein Signal eines geeigneten Moduls (je nach Modus) ihn aufweckt. Die Arbeit wird dann mit der ersten Anweisung hinter dem SLEEP-Befehl wieder aufgenommen.
(1) Nur verfügbar mit externem Taktgeber
[Bearbeiten] Modi ÜbersichtGenerell ist der Modus zu wählen, der die meisten nicht benötigten Module abschaltet.
(1) Nur verfügbar bei externer Taktquelle [Bearbeiten] Manuelles DeaktivierenEinzelne Module können auch manuell deaktviert werden um Strom zu sparen, das bietet sich vorallem an wenn bestimmte Module im gegebenen Projekt generell nicht benötigt werden und damit deaktiviert werden können. [Bearbeiten] Analog to Digital Convertertodo... [Bearbeiten] Analog ComparatorDer Analogkomparator ist standardmäßig aktiviert. Um ihn zu deaktivieren, muss man ACD (Bit 7) im Register ACSR setzen. [Bearbeiten] Brown-Out DetectorDer Brown-Out Detector lässt sich entweder durch das BODEN-Bit in den Fuses oder mit entsprechenden Befehlen aktivieren oder deaktivieren. Das Fuse-Bit ist standardmäßig gesetzt (Achtung: Umgekehrte Logik!) und der BOD damit deaktiviert. [Bearbeiten] WatchdogAuch der Watchdog-Timer lässt sich in den Fuses standardmäßig aktivieren/deaktivieren, hier über das WDTON-Bit. Natürlich geht auch das softwareseitig [1] [Bearbeiten] Praxis[Bearbeiten] AssemblerTODO: ASM-Quellcode Beispiele [Bearbeiten] CEin simples Testprogramm, um mit sleep modi im AVR zu spielen. Es funktioniert sehr gut mit dem ATmega8 und ist auch auf andere AVRs portierbar. Teilweise sind weitere Modi verfügbar. Wichtig ist, daß die Interruptroutine für den "Weckruf" vorhanden sein muss. Es müssen nicht zwingend Aktionen in ihr durchgeführt werden.
[Bearbeiten] Quellen
Zurück zu Power Management | Hoch zu Inhaltsverzeichnis |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||