Forum: Mikrocontroller und Digitale Elektronik Problem Stromsparmodus


von Sanja (Gast)


Lesenswert?

Liebe Community,

ich bräuchte von euch einen kurzen Denkanstoß. Ich arbeite mit einem 
attiny2313. Funktion soll sein, mittels Softwareabfrage einer 
Schalterstellung an dem µC entweder alle 24h, alle 48h oder alle 72h 
eine kurze Aktion auszuführen und dann wieder schlafen zu gehen, da die 
gesamte Schaltung Batteriebetrieben ist.

Ich bin mit den AVRs noch etwas unerfahren und habe ziemlich viel 
gelesen, gesucht und noch mehr gelesen die letzten Tage. Letztendlich 
bin ich verwirrter als vorher =)

Meine Recherchen ergaben (bitte korrigieren wenn falsch), das bis auf 
den Idle Mode alle anderen Stromsparmodi eine Hardwareseitige 
Reaktivierung brauchen. Somit wäre für mich der Idle Modus aktuell, 
welchen ich mit MCUCR = 0x00 einstellen kann.

Nun verwirren mich aber 3 Dinge:
- Geht wirklich nur der idle Modus oder ginge mittels Watchdog Timer 
auch ein PowerDown Modi, bis der Watchdog einen Reboot erzwingt?
- Welche Interrupt Service Routine benötige ich zum aufwecken des µC, 
bzw sind die Interrupts zum aufwecken und für den Counter verschieden?
- Sind mittels Counter solche "langen" Zeiten bis zur Interuptausführung 
überhaupt möglich?

Bin über jede Hilfe dankbar!

Gruß Sanja

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Sanja schrieb:

> ich bräuchte von euch einen kurzen Denkanstoß. Ich arbeite mit einem
> attiny2313.

Schlechte Wahl für die Aufgabenstellung.  Gab's einen besonderen
Grund für diese Wahl?

> - Geht wirklich nur der idle Modus oder ginge mittels Watchdog Timer
> auch ein PowerDown Modi, bis der Watchdog einen Reboot erzwingt?

Watchdog geht natürlich auch, du musst dann das watchdog reset flag
(WDRF) auswerten.  Lässt sich sogar noch einfacher implementieren, da
der watchdog alternativ auch einen Interrupt auslösen kann, man muss
also nicht einmal zwingend über reset gehen.

Allerdings ist der watchdog oscillator ein RC-Oszillator simpelster
Sorte.  Für ein auch nur halbwegs brauchbares Timing würde ich mich
auf den nicht verlassen.

Wenn du den Haupttakt (RC-Oszillator oder Quarz?) durch 256 teilst,
bevor du in den idle sleep gehst, braucht du ungefähr die gleiche
Größenordnung an Strom (wenige 10 µA) wie mit dem watchdog oscillator.

> - Welche Interrupt Service Routine benötige ich zum aufwecken des µC

Irgendeine, also zweckmäßig die eines Timers (watchdog oder normaler).
Jeder freigeschaltete Interrupt, der entsprechend des sleep mode
auch wirklich noch kommen kann, weckt den Prozessor auf.

> - Sind mittels Counter solche "langen" Zeiten bis zur
> Interuptausführung überhaupt möglich?

Nein, natürlich nicht, aber das hättest du dir selbst ausrechnen
können. ;-) Man erweitert den Zählumfang der Timer einfach in
Software, d. h. du zählst nur eine Variable runter, und wenn diese
noch nicht 0 ist, legst du das alles wieder schlafen.

Eine bessere Wahl wäre ein Controller gewesen, bei dem man den Timer 2
separat von einem 32-kHz-Uhrenquarz takten kann.  Bei diesen gibt's
einen sogenannten power-save sleep mode, bei dem alle Takte außer
diesem abgeschaltet werden.  Damit hast du Timing in
Quarzuhrenqualität bei Stromverbrauch im unteren µA-Bereich.  Wenn
mich nicht alles täuscht ist der kleinste AVR, der diese Möglichkeit
bietet, ein ATmega48.

von Falk B. (falk)


Lesenswert?

Siehe Sleep Mode

von Sanja (Gast)


Lesenswert?

Vielen Dank euch beiden.
Die Idee mit dem externen Uhrenquarz gefällt mir sehr gut. Muss ich mal 
schauen wie man das am besten realisiert und damit Aufweckzeiten 
konfiguriert

von ... (Gast)


Lesenswert?

Man könnte auch einen RTC an den AVR hängen. Am besten einen mit 
Alarmfunktion über die der AVR aufgeweckt wird, z.B. DS1337 oder 
PCF8583. Dann kann der AVR tiefer schlafen und die Teile brauchen auch 
nur wenige µA.

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.