mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Sleep Mode


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir jemand sagen was ich hier vergessen oder falsch mache?

#include <avr/sleep.h>

//PowerDown
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_mode();
while(1);

Autor: johnny.m (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
> kann mir jemand sagen was ich hier vergessen...?

Ja, Du hast vergessen, uns mitzuteilen, was das Programm machen soll
und was es Deiner Meinung nach nicht macht, und dass so ein
Codeschnipselchen wirklich nicht besonders aussagekräftig ist...

Außerdem hast Du anscheinend vergessen, dass es hier ein extra
GCC-Forum gibt...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok nächstes mal im GCC-Forum.
Ich möchte den atmega 128 in den idlemode versetzen.
Stromaufnahme ändert sich aber nicht, also gehe ich davon aus dass das
so nicht geht.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn irgendein Ereignis den Mega wieder aufweckt, tut sich an der
Stromaufnahme auch nix. Deshalb solltest Du vielleicht mal das
komplette Programm schicken, damit man sieht, was da evtl. reinhauen
kann!

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist vielleicht das sleep enable Bit nicht gesetzt?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@stephan:
Das macht die Funktion sleep_mode() automatisch...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie muß konfiguriert werden dass nicht mit int7 oder int3 aufgeweckt
wird?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
INT7 und INT3 vor dem sleep deaktivieren...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so:

EIMSK = 0;

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soviel ich weiß, spart Sleep-Mode IDLE keinen Strom, denn es wird nur
die ALU angehalten, Timer, I/O, ADC usw. erhalten weiter ihren Takt.
Inzwischen nutze ich in fast allen meinen Programmen Sleep, allerdings
in ASM.

...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich in den Power Down mode schalte bleibt die Stromaufnahme
trotzdem gleich.
Atmega128 8Mhz 3,3V = 8mah entspricht auch dem Datenblatt.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Mega8 arbeite ich nicht, aber wenn ich den Mega48 in den
Power-Down-Mode schalte, dann ist die Stromaufnahme mit einem
Billig-DVM nicht mehr messbar.
http://www.hanneslux.de/avr/mobau/7ksend/7ksend02.html

...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, Korrektur, sollte heißen:
Mit Mega128 arbeite ich nicht, ...

...

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.....//gewünschten Sleep-mode wählen (ist bei dir
     //NICHT Power-Down mode!)
.....//Sleep-enable setzen
asm volatile ("sleep"::);  //uc in den Sleepmode schicken

zzzZZZ :)

Funktioniert zumindest beim AtMega48 so :)

Grüße

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Autor: ...HanneS... Lux (HanneS)
Datum: 25.08.2006 15:19

Mit Mega8 arbeite ich nicht, aber wenn ich den Mega48 in den
Power-Down-Mode schalte, dann ist die Stromaufnahme mit einem
Billig-DVM nicht mehr messbar.

Ohne Brown-Out detection warens bei mir so um die 10 - 20 uA. Die Brown
out detection zieht ca 25uA.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube der controller geht auch in den power down mode, wacht aber
sofort wieder auf.
Beim Power Down Mode kann er ja nur über TWI oder ext. Interrupt
aufwachen.
TWI ist disabled.
Kann ich die Interrupts mit cli() vor dem sleep befehl ausschalten?
Wenn ja dürfte er nicht mehr aufwachen oder?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lohnt sich das beim Mega128 überhaupt? Die älteren ATmegas sind noch
nicht so auf Stromsparen optimiert.

...

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<<Ohne Brown-Out detection warens bei mir so um die 10 - 20 uA. Die
Brown
out detection zieht ca 25uA.
>>
Tach zusammen.
Ein Mega168 nimmt bei 1.8Volt und 128Khz internem Takt 12.5uA im
aktiven Betrieb. Zum Test hatte ich die demo.c aus der WINAVR
Distribution und zur Kontrolle ein Oszi drann (PWM hochrunter). Bei
2.8Volt waren es dann schon 320uA.
Nächste Woche schreibe ich, was im Sleep passiert. (habe schon
Feierabend und das hier zu spät gelesen...:-)

Gruß
Axel

Nein, mein Messgerät im Labor ist bestimmt nicht defekt gg

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Mikrocontroller wurde beim dem Test mit 3,3V versorgt.

Autor: Vlad Sergeew (sempai)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael wrote:
> wenn ich in den Power Down mode schalte bleibt die Stromaufnahme
> trotzdem gleich.
> Atmega128 8Mhz 3,3V = 8mah entspricht auch dem Datenblatt.

Datenblatt, Seite 49:
If the On-chip debug system is enabled by the OCDEN Fuse and the chip enter Power down or
Power save sleep mode, the main clock source remains enabled. In these sleep modes, this will
contribute significantly to the total current consumption. There are three alternative ways to
avoid this:
• Disable OCDEN Fuse.
• Disable JTAGEN Fuse.
• Write one to the JTD bit in MCUCSR.

PS. Ich habe gestern den ganzen Tag dran mit dem ATmega128 im 
Sleep-Modus gesessen, man musste einfacht JTAG abschalten, dann läuft 
der Hauptoszillator nicht mehr und der Stromverbrauch sinkt drastisch 
ab.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guter Hinweis, werd ich gleich mal in den Artikel einbauen.

MfG
Falk

Autor: Gottfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

sleep_mode();  // Wie sieht die Routine aus?

// Verlässt er die obige Routine, so verweilt er in einer Endlosschleife
while(1);

Autor: Jan Martin (jam2001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
was machen die Ports eines XMEGA im Sleepmode
-Power-Down
-Power Save

Behalten diese ihre Zustände, oder gehen die auf LOW/High
Wie ist dieser Zustand definiert.

Grüsse
Jan

Autor: Maik O. (bastler_maik)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vlad S. schrieb:
> Michael wrote:
>> wenn ich in den Power Down mode schalte bleibt die Stromaufnahme
>> trotzdem gleich.
>> Atmega128 8Mhz 3,3V = 8mah entspricht auch dem Datenblatt.
>
> Datenblatt, Seite 49:
>
>
If the On-chip debug system is enabled by the OCDEN Fuse and the 
> chip enter Power down or
> Power save sleep mode, the main clock source remains enabled. In these 
> sleep modes, this will
> contribute significantly to the total current consumption. There are 
> three alternative ways to
> avoid this:
> • Disable OCDEN Fuse.
> • Disable JTAGEN Fuse.
> • Write one to the JTD bit in MCUCSR.
>
> PS. Ich habe gestern den ganzen Tag dran mit dem ATmega128 im
> Sleep-Modus gesessen, man musste einfacht JTAG abschalten, dann läuft
> der Hauptoszillator nicht mehr und der Stromverbrauch sinkt drastisch
> ab.

Habe das gleiche Problem beim Mega328P. Ich versetze ihn in Idle-Modus 
und am Strom ändert sich jedoch nichts.
  set_sleep_mode(SLEEP_MODE_IDLE);
  sleep_mode();

Bin deutlich über 1mA. Takt ist intern (1MHz) + Asynchroner Timer2 mit 
Uhrenquarz für Sekunden-Interrupt.

Alle besonderen Fuses sind aus (siehe Bild).
Kann man noch was optimieren?

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.