Forum: Mikrocontroller und Digitale Elektronik ATtiny261A: Fragen zum Power Down Modus


von Evolve (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich bastle als Anfänger in der Welt der µController momentan mit einem 
ATtiny261A , an den ich schon eine LED und einen Taster angeschlossen 
habe (die beide funktionieren soweit auch).

Nun wollte ich mich an den Sleep Mode machen, da der Tiny ja nur eine 
Batterie hat und man ja nicht mehr Energie verschwenden muss als nötig 
ist.
Hierzu habe ich den Beitrag zum Sleep Mode hier im Forum gelesen und 
denke ihn auch verstanden zu haben. Als Vorlage für meinen Code habe ich 
hierbei den Code unter „Aufwachen per Tastendruck“ genommen.

Dabei habe ich zu dem Code/dem Prinzip noch ein paar Fragen und ich 
hoffe Ihr könnt mir dabei helfen :)

1.
Hier wird MCUCR UND-Verknüpft mit dem negierten Wert von Hexadezimal 3 
(00000011 --> 11111100). Wenn ich ins Manual zum Attiny gucke ist dieses 
Register mit überall 0 initialisiert, müsste dann durch das UND nicht am 
Ende auch überall 0 stehen, wodurch der Schritt überflüssig sein (die 
Werte ändern sich ja nicht)?

2.
Ich habe das Register GICR durch GIMSK ersetzt da so wie ich das aus dem 
Manual lese dies hier das macht wofür laut der Vorlage GICR zuständig 
ist. Ist das so richtig?

3.
Im Prinzip funktioniert der Code, ein Drücken auf den Taster und die LED 
leuchtet für eine Lampe. In meiner Neugier hab ich dann mal das 
ausschalten der LED aus dem Code entfernt, da ich dachte er geht mit dem 
nächsten durchlauf der WHILE-Schleife ja eh in Energiesparmodus. Zu 
meinem Erstaunen blieb die LED an. Ich habe nun nochmal dazu nachgelesen 
und tatsächlich nirgendwo etwas davon gelesen das auf Output und auf 1 
gesetzte Pins im Power-Down Modus automatisch auf 0 gesetzt werden.
Heißt das, das die LED leuchtet, der Power-Modes aber trotzdem aktiv 
ist? Oder habe ich einen Fehler bei meiner Anpassung des Codes?

Mit freundlichen Grüßen

von Peter D. (peda)


Lesenswert?

Evolve schrieb:
> nirgendwo etwas davon gelesen das auf Output und auf 1
> gesetzte Pins im Power-Down Modus automatisch auf 0 gesetzt werden.

Es wäre schlimm, wenn sich im Power-Down unkontrolliert irgendwelche 
Register ändern würden. So ein MC wäre schlichtweg unbrauchbar.

Will man bestimmte Werte im Power-Down an den IO-Pins haben, muß man sie 
davor entsprechend setzen.

von Evolve (Gast)


Lesenswert?

Danke erstmal für die schnelle Antwort! :)

Gut dann merke ich mir das die Register so geschaltet bleiben und damit 
auch LEDs oder andere Anzeigen trotz Power Down eingeschaltet bleiben. 
Keine Ahnung vielleicht hatte ich Power-Down für mich mit sowas wie dem 
Energiesparmodus am PC verbunden wo meinem Verständnis nach alles 
ausgeschaltet wird sobald der aktiviert wird.

Mfg

von (prx) A. K. (prx)


Lesenswert?

Evolve schrieb:
> wodurch der Schritt überflüssig sein (die
> Werte ändern sich ja nicht)?

Es schadet nicht, explizit genau die erforderliche Situation 
herzustellen, obwohl es möglicherweise bereits der Fall ist.

> gesetzte Pins im Power-Down Modus automatisch auf 0 gesetzt werden.

Normale Eingänge werden im Powerdown vom Pin entkoppelt und intern auf 0 
gesetzt, um zu verhindern, dass offene Pins den Stromverbrauch negativ 
beeinflussen. Wobei das natürlich nur auf Eingänge zutrifft, die im 
Powerdown keine Funktion haben (der Interrupt-Pin hat).

An Ausgängen ändert sich jedoch nichts.

von (prx) A. K. (prx)


Lesenswert?

Evolve schrieb:
> Keine Ahnung vielleicht hatte ich Power-Down für mich mit sowas wie dem
> Energiesparmodus am PC verbunden wo meinem Verständnis nach alles
> ausgeschaltet wird sobald der aktiviert wird.

Der Begriff "Power Down" kann wahlweise als "Strom weg" und 
"Stromverbrauch runter" interpretiert werden. Was darunter genau 
verstanden wird kann deshalb vom Kontext abhängen, sich auch zwischen 
Microcontrollern unterscheiden.

von Peter D. (peda)


Lesenswert?

Evolve schrieb:
> vielleicht hatte ich Power-Down für mich mit sowas wie dem
> Energiesparmodus am PC verbunden

Genau so ist es ja. Der PC schaltet nicht einfach aus, sondern führt vor 
dem Power-Down ne Menge Routinen aus.

Wenn alle IOs auf 0 gehen würden, würden sämtliche ICs mit low aktiven 
/OE und /CS aktiv werden und Deine Batterie leer saugen. Oftmals ist 
also die 1 der stromsparende Zustand. Daher braucht man die Möglichkeit 
der freien Auswahl.

von Dampf T. (ouuneii)


Lesenswert?

Powerdown bedeutet interne Einheiten werden zum Strom sparen 
abgeschaltet, gemaess Datenblatt. Wenn man dabei LEDs laufenlaesst ist 
man selbst schuld, das kann der Controller ja nicht wissen.
Siehe zB auch http://www.ibrtses.com/embedded/avrpowersave.html

von Evolve (Gast)


Lesenswert?

Wow vielen Dank für die große Anzahl an hilfreichen Antworten in kurzer 
Zeit!
Jetzt wo ich mir das so durchlese klingt es natürlich logisch (vor allem 
wenn man die Ports die auf Low aktiv werden bedenkt).

Da der Code dann wohl funktioniert wie er soll wird Frage 2 sich auch 
erledigt haben, von daher bin ich fürs erste wunschlos glücklich, danke!

mfg

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.