www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega16 verbraucht im Power-Down 0,5 mA - das kann nicht sein


Autor: Frank Wolf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hi, also warscheinlich hänge ich einfach - aber schon seit Stunden...

Folgendes: ich habe eine Platine bei der es darauf ankommt mit einem
Handyakku 3 monate hinzukommen - also lege ich den mega 16 schlafen,
bei der Messung waren dann 550 mA auf dem Messgerät (und ich sauer),
da ich davon ausging das es andere Bauteile der Platine sind habe
ich einen mega 16 schweben lassen und per hand verdrahtet:
- siehe Bild im Dateianhang -

bei meinem Minimalaufbau zeigt das Messgerät jetzt sogar .575 mA an.

Ich werd wahnsinnig, der Fehler liegt also vorrausichtlich im Programm.
Eigentlich bin ich davon ausgegangen das der Atmel mit den
Default-Werten nicht noch irgendeine Heizung an hat...

Sourcecode kommt gleich im nächsten Dateianhang... sekunde...

Autor: Peter Küsters (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das Problem hatte ich auch schon.
Abhilfe: vor dem Powerdown sämtliche Ports schließen, sonst fliesst
auch im Powerdown noch Strom über die internen Pullup-Widerstände.

Dann reduziert sich der Strom auf wenige µA.

Peter

Autor: Frank Wolf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier der Sourcecode im Anhang...

Im Prinzip starte ich den AVR nur und gehe dann schlafen:

_setport MCUCR,0b01100101 ; sleep zulassen und INT einstellen
sei                       ; enable global interrupts
sleep                     ; susse traume


Hab ich vergessen noch etwas auszuschalten ?
oder einschalten ?

Gebt mir mal nen klaps auf den Hinterkopf!

Autor: Frank Wolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter

_setport DDRB,0b00000000  ; PortB - Sicherung rausdrehen
_setport MCUCR,0b01100101 ; sleep zulassen und INT einstellen
sei                       ; enable global interrupts
sleep                     ; susse traume

jetzt bin ich auf .535 hat tatsächlich .040 gespart ;(
muss ich noch den comperator abschalten oder so was?

@cdg --> cdg = ~~~strange~~~
@jens no ned provozieren lassen ;)

Autor: dicky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An Peter: ...alle ports schliessen... wie meinst du das ? als input
schalten ? pull-up widerstände ?

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt:
Power Consumption at 1 MHz, 3V, 25°C for ATmega32L
– Active: 1.1 mA
– Idle Mode: 0.35 mA
&#8211; Power-down Mode: < 1 µA

Deine Angabe kommt doch ganz nah an den Idle Mode..
110 = Standby
010 = Power Down

Bei Standby ist der Haupttakt noch an, bei PowerDown nicht, probiers
damit mal.


Musst du nicht auch Bit7 aktivieren?
&#8226; Bit 7 &#8211; SE: Sleep Enable
The SE bit must be written to logic one to make the MCU enter the sleep
mode when the
SLEEP instruction is executed. To avoid the MCU entering the sleep mode
unless it is
the programmers purpose, it is recommended to write the Sleep Enable
(SE) bit to one
just before the execution of the SLEEP instruction and to clear it
immediately after waking
up.

dave

Autor: Frank Wolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@dave
Vorsicht der Mega16 nicht der Mega32!

Beim Mega 16:
• Bit 6 – SE: Sleep Enable

MCUCR Mega16:
7   6   5   4   3    2     1     0
SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00
0   0   0   0   0     0     0    0

ich habe eingestellt:
SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00
0   1   1   0   0    1     0     1

IMHO -->
SM2 SM1 SM0 Sleep Mode
0   0   0   Idle
0   0   1   ADC Noise Reduction
0   1   0   Power-down <-------eingestellt!!!!!!!!!!
0   1   1   Power-save
1   1   0   Standby(1)
1   1   1   Extended Standby(1)

Schade! Ich wünschte mir das die Lösung so einfach währe
das ich einfach das Datenblatt verwechselt habe ;)    !!

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:( Ich dachte, ich lad mir nicht extra das Datenblatt... Atmel kanns
einem aber auch schwer machen ;)

Haste mal alle Eingänge als Ausgänge gesetzt?

dave

Autor: Frank Wolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@dave
versuche ich morgen als erstes, ich hatte vor 3 monaten kurz
einen mega8 probiert der hatte igendwas um die 50 im uA angezeigt
komisch das der mega16 so störrisch ist :(

@all
warum kann hier keiner mal schreiben:
"Wolf du bist ein Säckel, setz einfach das Bit X im Register Y!"

heul

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wolf du bist ein Säckel, setz einfach das Bit X im Register Y!
g
Das musste ich einfach schreiben.

Naja, ich habe keine Ahnung. Ich fange selber erst an und kenne die
Spezialfunktionen noch nicht. Außerdem programmiere ich manchmal etwas
umständlich.

Wenn das hier nicht passt, dann könnt ihr diesen Beitrag auch einfach
löschen.

Autor: René König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das richtig sehe, hast Du jede Menge offene Eingänge. Diese
Eingänge mußt Du auf Pegel bringen. Am Einfachsten ist es, wenn Du die
eingebauten PullUp-Widerstände aktivierst (das wird erst dann zum
Problem, wenn am PIN etwas angeschlossen ist; in diesem Fall könnte
Strom über den Widerstand aus dem PIN heraus durch die externe
Beschaltung fliessen).

Alternativ kannst Du, wie bereits vorgeschlagen, die PINs als Ausgänge
konfigurieren. Ob Du hierbei besser eine Null oder eine Eins ausgibst,
ist von der externen Beschaltung abhängig (und in Deinem Fall egal).

Wenn der Mega8 im PowerDown satte 50 µA verbraucht, sind noch der
Analog-Comparator und/ oder die Brown-Out Detection enabled. Schalte
das aus, wenn Du's nicht brauchst. Darauf mußt Du übrigens auch beim
Mega16 achten.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"oder die Brown-Out Detection enabled"
???
Ich habe einen Atmega16, aber über das Feature habe ich noch nichts
gehört. Was macht dieser Detektor?

Autor: René König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was macht dieser Detektor?

Er überwacht die Betriebsspannung und löst beim Unterschreiten eines
bestimmten Wertes einen Reset aus. Die genaue Erklärung findest Du im
aktuellen Dateblatt des Mega16 auf Seite 38.

Autor: René König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fällt mir noch ein: Das JTAG-Interface darf nicht enabled sein, wenn
da nichts dranhängt. Also erstmal das Bit JTRF in MCUCSR checken und
dann, wenn das Bit nicht gesetzt ist, zwei mal JTD setzen (ebenfalls
MCUCSR).

Autor: Frank Wolf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
DANKE! TNX! die Eingänge waren es!

- siehe Bild im Anhang -

Ich habe alle offenen Eingänge zu Ausgängen (Low) definiert
--> 1 uA

Mann, da währ ich in 10 Jahren nicht drauf gekommen,
ich hatte eigentlich gedenkt das ein I/O als Eingang
nicht mehr verbraucht als als Ausgang...

Meine eigenliche Platine verbraucht jetzt .169 mA
(2,3 Spannungsteiler...) damit komme ich 6 Monate
locker hin freu

Nochmal Danke an alle ;) Peace! [int]

Autor: marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vergiss die selbstentladung der batterie nicht ! siehe wiki ultra low
power

Autor: dicky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man hast du viele handies...

Autor: Jörn G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Analogen Comparator abschalten spart auch gut:

ACSR = (1<<ACD);    //Set "Analog Comparator Disable"-Flag

jörn g.

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.