PowerSave Mode bei ATMega48P zieht zuviel Strom

Gast #5660749
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?
Gast #5660783
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."
Gast #5660907
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.
Gast #5660919
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)."
Gast #5660936
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.
#5661054
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
Gast #5661131
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
Gast #5661218
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren