ATmega48PA stromverbrauch zu hoch

Gast #2550168
Hallo,

Zur zeit versuche ich einen ATmega48PA in den Power Down - Sleep Mode zu 
versetzen. Dies scheint mir auch zu gelingen. Jedoch ist der gemessene 
Stromverbrauch viel höher als im Datenblatt angegeben.


Zum testen hab ich ein einfaches Testprogramm geschrieben welches den 
Controller in den Power Down mode bringt.
1
/*
2
 * PicoPowerTest.c
3
 *
4
 * Created: 13.02.2012 09:58:20
5
 */ 
6

7
#ifndef F_CPU
8
#define F_CPU 128000UL
9
#endif
10

11
#include <avr/io.h>
12
#include <avr/sleep.h>
13
#include <avr/power.h>
14
#include <avr/wdt.h>
15
#include <avr/interrupt.h>
16
#include <util/delay.h>
17

18

19
/*! \brief This is the main routine
20
 *
21
 * 
22
 */
23
int main(void)
24
{
25
    wdt_disable();
26

27
    PRR = (1 << PRTWI) | (1 << PRTIM2 ) | (1 << PRTIM1 ) | \
28
          (1 << PRTIM0 ) | (1 << PRSPI ) | (1 << PRUSART0 ) | (1 << PRADC ) ; 
29
  
30
    /* set pin input and pull up */
31
    DDRB = 0x00;
32
    PORTB = 0xFF;
33
    DDRC = 0x00;
34
    PORTC = 0xFF;
35
    DDRD = 0x00;
36
    PORTD = 0xFF;
37
    
38
  /* Disable digital input */
39
    DIDR1 = (1 << AIN1D) | (1 << AIN0D);
40
    DIDR0 = (1 << ADC5D) | (1 << ADC4D) | (1 << ADC3D) | (1 << ADC2D) | (1 << ADC1D) | (1 << ADC0D);
41
   
42
    /* Disable analog comparator */
43
  ACSR = 0x80;  
44

45
    for(;;) 
46
  {
47
          set_sleep_mode(SLEEP_MODE_PWR_DOWN);
48
      cli();
49
            sleep_enable();
50
            sleep_bod_disable();
51
            sei();
52
            sleep_cpu();
53
            sleep_disable();
54
            cli();
55
            /* Wake up from Power-Save mode */     
56
    }
57
}

Der ATmega48PA braucht zwar deutlich weniger Strom aber leider trodem 
noch viel mehr als im Datenblatt angegeben.

Power Down (0.1-0.5uA @1,8V) -> laut Datenblatt
Power Down 49,2uA @1,8V -> gemessen

Active ~27uA -> laut Datenblatt
Active 71,5uA -> gemessen

Hardware:
nur Controller mit keramischen Stützkondensatoren, ohne jegliche 
Peripherie.

Freue mich über alle hinweise und fehler die mich dem angegebenen 
Stromverbrauch näher bringen.

schöne Grüße
Angehängte Dateien:
Gast #2550190
Hallo,

An welchem Punkt hast du den Strom den gemessen? (Schaltplan?)

Falls du noch einen Spannungsregler in der Schaltung hast, könnte dessen 
Ruhestrom vielleicht der Grund sein!
#2550211
@  Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)

>Die Pullups bekommst du nicht umsonst. Da fliesst auch Strom. Und bei 24
>Pullups läppert sich da so einiges zusammen.

Käskopp. Die Pull-Ups ziehen die IOs hoch und fertig, dann fließt kein 
Strom mehr, wohin denn auch?

@OP

Gibt es da nicht eine AVR-Fuses, die den Watchdaog IMMER aktiv hält? 
Sollte man mal prüfen.

MfG
Falk
#2550223
Vor einiger Zeit hatte ich einmal statt eines ATmega8L einen ATmega8A 
verbaut und meine Schaltung zog statt der vorherigen 1uA plötzlich, mit 
identischer Software, ca 50uA. Da ich den Fehler nicht fand, tauschte 
ich den mega8A wieder gegen den bei mir bewährten mega8L und alles war 
wieder in Ordnung.
Ich bin dem Grund für den erhöhten Verbrauch beim mega8A gegenüber dem 
mega8L nicht weiter auf den Grund gegangen. Womöglich hatte das auch 
nichts mit dem Problem von Johannes zu tun. Trotzdem wollte ich es mal 
loswerden ..

Gruß
Björn
Gast #2550237
Kurze Zwischenfrage:

Sind die "Systeme" bei PRR beim Neustart nicht standardmäßig 
deaktiviert?

Müsste man nicht nur den Analogkomperator noch abschalten?
#2550238
Watchdog und Brown-Out abschalten.

Klingt irgendwie blöd, denn gerade bei Batteriebetrieb will man ja ein 
zuverlässiges Arbeiten.
Und beim Einsetzen einer Batterie kommt es ja zu mehrmaligem Kontakt, 
d.h. die VCC kriegt ordentlich Spikes ab, die den MC schonmal 
durcheinander bringen können oder zumindest den EEPROM verfälschen.
Bei Batteriebetrieb bräuchte mal also einen stromsparenden externen 
Reset + Watchdog.


Peter
Gast #2550243
Elko4 schrieb:
> An welchem Punkt hast du den Strom den gemessen? (Schaltplan?)
>
> Falls du noch einen Spannungsregler in der Schaltung hast, könnte dessen
> Ruhestrom vielleicht der Grund sein!

Den Strom hab ich direkt an den  Vcc Pins gemessen.

Ein Spannungsregler ist nicht eingebaut. Ich betreibe den Controller 
direkt an einem KEITHLEY SourceMeter
Gast #2550268
Peter Dannegger schrieb:
> Watchdog und Brown-Out abschalten.

Das habe ich beides gemacht. Sowohl in den Fuse Bits als auch in der 
Software.

Hab mal irgendwo gelesen das interne Spannungreferenz für den Brown Out 
detektor und die analogen Baugruppen einen erhöhten ruhestrom 
verursacht.

Kann man diese Spannungsreferenz irgendwie geziehlt per Software 
abschalten oder ist diese sowieso über das PRADC mitgesteuert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.