AVR-Tutorial: Power Management: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Zeile 5: Zeile 5:
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.
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.


Um Module zeitweise abzuschalten können wir die sogenannten Sleep-Modi nutzen,
Um Module zeitweise abzuschalten, können wir die sogenannten Sleep-Modi nutzen,
andere garnicht benutzte können wir auch komplett deaktivieren.
andere garnicht benutzte Module können wir auch komplett deaktivieren.


'''''Hinweis''':<br>
'''''Hinweis''':<br>
Welche Sleep-Modi es gibt hängt vom verwendeten µC ab, dieser Artikel nimmt jedoch Bezug auf den ATmega32.''
Welche Sleep-Modi es gibt, hängt vom verwendeten µC ab, dieser Artikel nimmt jedoch Bezug auf den ATmega32.''


== Theorie ==
== Theorie ==

Version vom 30. November 2010, 15:21 Uhr

ACHTUNG! Dieser Artikel befindet sich noch im Aufbau!

Um was geht's?

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.

Um Module zeitweise abzuschalten, können wir die sogenannten Sleep-Modi nutzen, andere garnicht benutzte Module können wir auch komplett deaktivieren.

Hinweis:
Welche Sleep-Modi es gibt, hängt vom verwendeten µC ab, dieser Artikel nimmt jedoch Bezug auf den ATmega32.

Theorie

Sleep Modi

Um einen der verfügbaren Sleep-Modi des ATmega32 zu betreten muss folgendes ausgeführt werden

  1. Das SE-Bit im MCUCR-Register auf 1 setzen
  2. SMx-Bits je nach gewünschtem Modus setzen
  3. SLEEP-Befehl ausführen

Der Mikrocontroller geht dann in den SLEEP-Modus und wacht erst wieder auf wenn ein geeignetes Signal (je nach Modus) ihn 'aufweckt'. Er nimmt dann die Arbeit mit der ersten Anweisung hinter dem SLEEP-Befehl wieder auf.

Register im Detail

MCUCR - MCU Control Register

Bit    7     6     5     4
    +-----+-----+-----+-----+-- -
    |  SE | SM2 | SM1 | SM0 | ...
    +-----+-----+-----+-----+-- -

Bit 7 - SE: Sleep Enable
Mit diesem Bit wird bestimmt ob der Sleep-Befehl ausgeführt wird (1) oder nicht (0).

Bit 6..4 - SM2..0: Sleep Mode Select
Mit diesen drei Bits wird der gewünschte Sleep-Modi gewählt

SM2 SM1 SM0 | Sleep Modus
------------+------------
 0   0   0  | Idle
 0   0   1  | ADC Noise Reduction
 0   1   0  | Power-down
 0   1   1  | Power-save
 1   0   0  | Reserved
 1   0   1  | Reserved
 1   1   0  | Standby(1)
 1   1   1  | Extended Standby(1)

(1) Nur verfügbar mit externem Taktgeber

Die einzelnen Modi im Detail

Idle Mode

Der Idle-Modus ermöglicht es dem Mikrocontroller von internen sowie externen Interrupts aufgeweckt zu werden.

Falls der Analog Comparator nicht gebraucht wird empfiehlt es sich den Stromverbrauch im Idle-Modus zu reduzieren indem dieser abgeschaltet wird. Das geschieht indem das ACD-Bit (Analog Comparator Disable) im ACSR (Analog Comparator Status Register) gesetzt wird.

Was wird gestoppt

  • clk(CPU)
  • clk(FLASH)

Was kann aufwecken?

  • SPI
  • UART
  • Analog Comparator
  • ADC
  • Two-Wire Serial Interface (TWI)
  • Timer/Counters
  • Watchdog
  • Brown-Out Reset
  • Interrupts
ADC Noise Reduction Mode

In diesem Modus sind mit dem ADC Messungen höherer Auflösung möglich. Wenn der ADC aktiviert ist dann startet er automatisch beim betreten dieses Modus.

Was wird gestoppt

  • clk(I/O)
  • clk(CPU)
  • clk(FLASH)

Was kann aufwecken?

  • ADC
  • External Level Interrupts (INT0 / INT1)
  • External Interrupt (INT2)
  • Two-Wire Serial Interface (TWI) Address Match
  • Timer/Counter2
  • Watchdog
  • Brown-Out Reset
  • SPM/EERPOM Interrupt
Power-down Mode

In diesem Modus wird der externe Oszillator gestoppt, es sind somit nur noch asynchrone Module aktiv.

Was wird gestoppt

  • clk(ALL)

Was kann aufwecken?

  • External Level Interrupts (INT0 / INT1)
  • External Interrupt (INT2)
  • Two-Wire Serial Interface (TWI) Address Match
  • External Reset
  • Watchdog Reset
  • Brown-Out Reset
Power-save Mode

Identisch mir Power-down Mode mit einer Ausnahme:

Wenn der Timer/Counter2 asynchron getaktet wird (AS2-Bit in ASSR-Register gesetzt), läuft dieser auch im Power-Down Mode.

Falls dies nicht der Fall ist, d.h. Timer/Counter2 synchron läuft, wird von ATMEL der Power-Down Modus empfohlen.

Was wird gestoppt

  • clk(ALL) mit Ausnahme von clk(ASY)

Was kann aufwecken?

  • Timer/Counter2 Interrupt
  • siehe Power-Down Modus
Standby Mode

Hinweis: Nur mit externem Oszillator möglich!
Identisch mir Power-down Mode, der Oszillator läuft jedoch weiter.

Extended Standby Mode

Hinweis: Nur mit externem Oszillator möglich!
Identisch mir Power-save Mode, der Oszillator läuft jedoch wie beim Standby Mode weiter.


Manuelles Deaktivieren

Einzelne Module können auch manuell deaktviert werden um Strom zu sparen.


Analog Comparator

todo...

Brown-Out Detector

Der Brown-Out Detector lässt sich durch das BODEN-Bit in den Fuses generell aktivieren oder deaktivieren.

Watchdog

Auch der Watchdog-Timer lässt sich in den Fuses standardmäßig aktivieren/deaktiviren, hier über das WDTON-Bit.

Aber auch sofwareseitig ist dies möglich [1]

Praxis

todo...

Quellen

ATMEL AVR ATmega32 Datenblatt