ATtiny261A: Fragen zum Power Down Modus

Gast #4810258
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
Angehängte Dateien:
#4810277
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.
Gast #4810286
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
#4810293
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.
#4810296
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.
#4810307
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.
Gast #4810384
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 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.