Forum: Mikrocontroller und Digitale Elektronik PowerSave Mode bei ATMega48P zieht zuviel Strom


von hps (Gast)


Lesenswert?

Hallo,
derzeit baue ich eine Schaltung auf, die als Low Power und mit einem 
32.768 Quarz laufen soll. Ziel ist es, unter 10uA im Powersave-Mode zu 
kommen, der Quarz soll dabei weiterlaufen.

Die neueren ATMega 48P/PU und 328P sollen laut Datenblatt im 
Powersave-Modus nur ca. 1 Mikroampere (einschliesslich Quarz) benötigen.
Tatsächlich messe ich bei meinem ATMega 48PV-10PU ca. 1 Milliampere (bei 
2V Vcc).

Im Programm, das ich mit BASCOM übersetzt habe, habe ich den Befehl
"CONFIG POWERMODE = POWERSAVE"
verwendet, wie in der Bascom-Hilfe angegeben.

Gibt es vielleicht irgendeinen Trick oder ein anderes (neues?) Kommando?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Deine Schaltung und die Programmierung der Pins muss natürlich im 
Powersave dafür sorgen, das auch kein Strom in die Ausgänge fliessen 
kann. Wenn du z.B. einen Pullup per Controller im Powerdown auf low 
ziehst, wird da Strom fliessen.

von S. Landolt (Gast)


Lesenswert?

Ist es klar, dass "Timer/Counter2 running in asynchronous mode" für die 
gewünschte RTC nötig ist?

von Karl M. (Gast)


Lesenswert?

Hallo,

Dann kann man am Programm bestimmt auch sehen, dass die IO Pins 
abgeschaltet sind, sowie auch die unterschiedlichen Hardware Module.

Dann wird das "Problem" am Aufbau liegen.

Sprichwort: "Wer misst misst misst."

von Karl M. (Gast)


Lesenswert?

Hallo S. Landolt,

S. Landolt schrieb:
> Ist es klar, dass "Timer/Counter2 running in asynchronous mode"
> für die
> gewünschte RTC nötig ist?


Ich habe sein Post so verstanden, dass der 32,768 KHz Quarz als CPU Takt 
verwendet wird.

von S. Landolt (Gast)


Lesenswert?

Bei Power-save?

von Falk B. (falk)


Lesenswert?

Siehe Sleep Mode

von Karl M. (Gast)


Lesenswert?

S. Landolt schrieb:
> Bei Power-save?

Ich beziehe mich auf das Datenblatt:
https://www.mouser.de/datasheet/2/268/Atmel-8025-8-bit-AVR-Microcontroller-ATmega48P-88P-1315175.pdf

S.55 - 13.5. Low Frequency Crystal Oscillator

S.64 - 14.2. Sleep Modes
Zeigt die Modi.

Gibt's im Datenblatt noch Widersprüche?

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Gern gemachter Fehler: offen gelassene Eingänge.
Also je nach Wunsch
- Als Ausgang programmieren;
- Pullup aktivieren
- digitalen Eingang deaktivieren (DIDR), so möglich
- von aussen auf festes Potential legen

ansonsten zieht ein offener Eingang, der irgendwo zwischen lo und hi 
rumfloatet gern mal Milliamperes.

von S. Landolt (Gast)


Lesenswert?

an Karl M.:

Ich verstehe den Abschnitt '14.6. Power-save Mode' anders, lasse mich 
aber gerne belehren.

von S. Landolt (Gast)


Lesenswert?

> offen gelassene Eingänge

Wenn ich mich recht erinnere, spielt das bei Power-save und Power-down 
keine Rolle.

von Alex W. (a20q90)


Lesenswert?

Poste mal deine Schaltung und dein Code.

von Falk B. (falk)


Lesenswert?

S. Landolt schrieb:
> Wenn ich mich recht erinnere, spielt das bei Power-save und Power-down
> keine Rolle.

FALSCH!

von Thomas E. (thomase)


Lesenswert?

hps schrieb:
> Tatsächlich messe ich bei meinem ATMega 48PV-10PU ca. 1 Milliampere (bei
> 2V Vcc).

Programmer abgezogen? Du wärest nicht der erste, der daruf reingefallen 
ist(mich eingeschlossen).

von S. Landolt (Gast)


Lesenswert?

Falk B. schrieb:
> S. Landolt schrieb:
>> Wenn ich mich recht erinnere, spielt das bei Power-save und Power-down
>> keine Rolle.
>
> FALSCH!


Sind Sie sicher? Zitat:
In sleep modes where both the I/O clock (clkI/O) and the ADC clock 
(clkADC) are stopped, the input buffers of the device will be disabled. 
This ensures that no power is consumed by the input logic when not 
needed.

von Karl M. (Gast)


Lesenswert?

Hallo,

S. Landolt schrieb:
> In sleep modes where both the I/O clock (clkI/O) and the ADC clock
> (clkADC) are stopped, the input buffers of the device will be disabled.
> This ensures that no power is consumed by the input logic when not
> needed.

Der Abschnitt hat noch weitere Absätze mit wichtigen Infos.
Ich zitiere mal komplett:

Quelle: 
https://www.mouser.de/datasheet/2/268/Atmel-8025-8-bit-AVR-Microcontroller-ATmega48P-88P-1315175.pdf

S.68 - 14.11.6. Port Pins

"When entering a sleep mode, all port pins should be configured to use 
minimum power. The most important is then to ensure that no pins drive 
resistive loads.

In sleep modes where both the I/O clock (clk I/O ) and the ADC clock 
(clk ADC ) are stopped, the input buffers of the device will be 
disabled. This ensures that no power is consumed by the input logic when 
not needed.

In some cases, the input logic is needed for detecting wake-up 
conditions, and it will then be enabled.

Refer to the section Digital Input Enable and Sleep Modes for details on 
which pins are enabled. If the input buffer is enabled and the input 
signal is left floating or have an analog signal level close to V CC /2, 
the input buffer will use excessive power. (!!!!)

For analog input pins, the digital input buffer should be disabled at 
all times. An analog signal level close to V CC /2 on an input pin can 
cause significant current even in active mode. Digital input buffers can 
be disabled by writing to the Digital Input Disable Registers (DIDR0 for 
ADC, DIDR1 for AC)."

von S. Landolt (Gast)


Lesenswert?

Ja, schon, aber ein Eingang, der zum Aufwecken benutzt wird, hängt 
normalerweise nicht in der Luft. Auch ist unklar, was hps genau macht 
bzw. vorhat.

von S. Landolt (Gast)


Lesenswert?

Damit wir uns richtig verstehen, Falk B. und Karl M.: ich bin auch für 
'klare Verhältnisse' und lasse nichts undefiniert, aber hier ist doch 
die Frage, woher das eine mA bei hps kommt.

von tiny doc (Gast)


Lesenswert?

Jup, das ist ja das tolle daran. Die Zustände, auch Pullups bleiben im 
power-down aktiv.

Neben der offenen Eingänge auch noch den ADC deaktivieren. Waren bei 
einem ähnlichen Projekt mit einem ATTiny13 ca. 350µA. Brown Out 
Detection (Fuse) braucht auch noch ein paar µA.

von Karl M. (Gast)


Lesenswert?

@TO

Wir warten ja noch auf das Programm, evtl. auch dem Assembler Output, 
dann kann man mehr sagen/ denken.

von Axel S. (a-za-z0-9)


Lesenswert?

hps schrieb:
> Die neueren ATMega 48P/PU und 328P sollen laut Datenblatt im
> Powersave-Modus nur ca. 1 Mikroampere (einschliesslich Quarz) benötigen.
> Tatsächlich messe ich bei meinem ATMega 48PV-10PU ca. 1 Milliampere (bei
> 2V Vcc).
>
> Im Programm, das ich mit BASCOM übersetzt habe, habe ich den Befehl
> "CONFIG POWERMODE = POWERSAVE"
> verwendet, wie in der Bascom-Hilfe angegeben.
>
> Gibt es vielleicht irgendeinen Trick oder ein anderes (neues?) Kommando?

Man müßte schon dein ganzes Programm sehen, um dir sagen zu können, was 
du falsch gemacht hast. Aber in einem nichttrivialen Programm reicht es 
nicht aus, den µC nur einmal schlafen zu schicken. Man muß das jedes Mal 
wieder machen, wenn er durch irgendwas aufgeweckt worden ist.

Die gebräuchlichste Methode besteht darin, das Hauptprogramm in eine 
Endlosschleife zu packen und immer dann, wenn alles abgearbeitet worden 
ist (vulgo: am Ende des Schleifenrumpfes) schlafen zu gehen. Im 
Extremfall macht der µC alle Arbeit in der jeweiligen Interrupt- 
Serviceroutine und die Hauptschleife enthält dann nichts mehr außer der 
Anweisung, schlafen zu gehen.

Siehe das zweite Beispiel hier: 
https://avrhelp.mcselec.com/index.html?config_powermode.htm

: Bearbeitet durch User
von hps (Gast)


Lesenswert?

Vielen Dank erstmal an alle !

Es scheint tatsächlich daran zu liegen, dass der uC im Entwicklungsboard 
steckt und ich nur den PIN7 (=VCC) separiert habe und da den Stromfluss 
gemessen habe ...
Das Board (Pollin) hat soviel Zeugs drauf, da werde ich morgen erst mal 
ein nacktes Board mit einem Prozessorsockel, dem Quarz (12,5pf) und 2x 
12pF (nach Masse) bestücken (hat so auf dem Entw.board funktioniert).

Der "nackte" Prozessor zieht tatsächlich nur 0,9 Mikroampere.

An Karl M. noch:
Der Prozessortakt ist bei mir wie der Default, also 1 MHz. Der 32kHz 
(Quarz an B.6 und B.7) geht hier nur auf den Timer 2, also nichts !!! in 
den Fuses verstellen, das kann bei der niedrigen Frequenz in die Hose 
gehen (man kann dann evtl. kein Programm mehr laden !)

Der Timer 2 wird so konfiguriert:
Config Timer2 = Timer , Async = On , Prescale = 1024

Da der Timer2 8bit hat, resultiert daraus eine Periode von 8sec., mit 
der die zugehörige Interrupt-Routine beim Ablauf des Timers gestartet 
wird. Dadurch wird auch der Prozessor wieder aus dem POWERSAVE 
aufgeweckt.

Nach jeweils 8 sec. kommt dann wieder die Main-Loop dran, in der 
Diverses erledigt wird.  Am Ende hat die Main-Loop das "Config Powermode 
= Powersave " Kommando.
Nach 10800 Zyklen ist 1 Tag rum (mit für meine Zwecke hinreichender 
Genauigkeit) und es kann wieder von vorne losgehen... So wäre mein 
Konzept für eine Steuerung, die jeden Tag dasselbe machen soll.

VG von HPS

von c-hater (Gast)


Lesenswert?

S. Landolt schrieb:

>> offen gelassene Eingänge
>
> Wenn ich mich recht erinnere, spielt das bei Power-save und Power-down
> keine Rolle.

Offene Eingänge spielen immer eine Rolle, denn das sind Antennen, die 
sich quasi automatisch auf maximale Empfindlichkeit optimieren und dann 
die digitalen Schaltstufen des Eingangs zum "Wackeln" bringen.

Auch wenn das für die Funktion einer Anwendung unwichtig ist: es ist 
nicht unwichtig für den Energiebedarf. Denn Wackeln bedeutet 
grundsätzlich erstmal Energiebedarf. Und der ist umso höher, je 
schneller das Wackeln ist. Zwar ist die typische EMV-Umgebung von 50Hz 
des Energienetzes dominiert, aber zumindest in der Nähe der 
Nulldurchgänge der dominierenden Schwingung wird auch gerne noch 
wesentlich schneller gewackelt, bis weit in den 10-MHz-Bereich. Das 
läppert sich...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.