PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Power Down-Modus, Aufwecken über ext. Int und Stromverbrauch



hhopf
28.11.2008, 13:59
Ich möchte einen ATmega644 in den Power-Down-Modus schlafen legen und über einen externen Interrupt (Low-Level) wieder aufwecken.
Nach Studium diverser Forenbeiträge hat es auch funktioniert, den Prozessor in den Sleep-Mode zu versetzen und wieder aufzuwecken, allerdings nur, wenn ich am INT-Eingang den internen Pullup aktiviert habe (mit einem externen würde es vermutlich genauso funktionieren).
Dann habe ich aber eine Stromaufnahme von ca. 20mA bei 5V Versorgungsspannung.
Deaktiviere ich den internen Pullup, habe ich so gut wie keine Stromaufnahme im Sleep-Modus, also den gewünschten Zustand. Nur kann ich dann den ATmega nicht über den Int aufwecken, da wohl kein Unterschied im Pegel an diesem Eingang erkannt wird.
Weiss jemand Rat ?

Vielen Dank im Voraus.

Besserwessi
28.11.2008, 14:36
Eigentlich sollte der interne Pullup keinen merklichen Einfluß auf den Strom haben, solange der Pin tatsächlich auf high liegen bleibt. Selbst bei einem Spannunspegel von etwa 2-3 V sollte man nicht so viel Strom verbrauchen. 20 mA sprechen mehr dafür, das der powerdown modus gar nicht erreicht wird. Eigenlich sollte das Aufwecken auch ohne pullup gehen, dann nur umso leichter durch irgendwelche Störungen.

Ein niederohmigerer externer pullup und eventuell auch eine kleiner Kondensator könnten helfen unerwünschtes Aufwachen durch Störungen zu vermeiden.

hhopf
28.11.2008, 15:10
Ich bin einfach mal davon ausgegangen, dass es am Pullup liegt, denn der hohe Stromverbrauch wurde nur angezeigt, wenn ich diesen aktiviert hatte. Im Power-Down war er meiner Ansicht nach schon, da ich zur Kontrolle eine LED blinken lasse, wenn er wieder aufwacht. Und die war dunkel.
Ich werde es mal mit einem externen Pullup und Kondensator versuchen. Vielleicht ist es da ja besser.

Danke

hhopf
28.11.2008, 16:00
Habe jetzt die Lösung:
Der externe Pullup hat keine Verbesserung gebracht. Aber es lag auch nicht am Pullup selbst. Das Problem scheint zu sein, dass ich von dem für den INT-Eingang benutzten Port alle Bits auf Ausgang gesetzt habe, die ich nicht benötige (also alle außer der für den INT benötigten). Irgendwas schalte ich damit wohl ein. Muss nochmal schauen, was da alles dran hängt (ich benutze zur Zeit noch ein rnmega2560-Board zum Testen).

Vielen Dank für die Unterstützung.