Forum: Mikrocontroller und Digitale Elektronik Atmega328 Sleep Modus


von Marcel (Gast)


Lesenswert?

Hi,
ich habe einen Atmega328P mit einem Externen Quarz (8 MHZ).
Diesen möchte ich gerne in den sleep modus bringen.
Intern läuft der Timer1. Dieser lässt alle 20ms einen Interrupt 
ausführen. Mir würde es reichen, wenn dieser den controller wieder 
weckt. Dann soll die Funktion durchlaufen und sich anschließend wieder 
schlafen legen.
Dazu bietet sich der sleep mode Idle an.
Aber wenn ich jetzt anstelle des Timer1 den Timer2 benutze, dann könnte 
ich den sleep mode ADC Noise Reduction oder Power Save nehmen. Würde der 
dann auch schlafen gehen? Oder besser gefragt wieder aufgeweckt werden? 
Gerade bei Power Save bin ich mir nicht so ganz sicher


https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
1
Hier werden fast alle Oszillatoren gestoppt. Die einzige Ausnahme ist der Timer2, welcher asynchron mit einem 32,768-kHz-Uhrenquarz betrieben werden kann. Ist er entsprechend konfiguriert, dann bleibt er beim Einschalten des Power Save Mode aktiv. Dieser Modus ist einer der wichtigsten. Da alle Oszillatoren gestoppt sind, funktionieren nur noch die asynchronen Module.
2
3
Bei neueren AVR-Typen (z. B. ATMega88/ATMega644) kann Timer2 wahlweise auch mit dem internen Oszillator weiterlaufen. In dem Fall braucht es keinen externen Uhrenquarz.

Im Datenblatt
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
habe ich nicht wirklich was dazu gefunden

von Einer K. (Gast)


Lesenswert?

Sicher, dass du die Automotive Varianten verwendest?

von Stefan F. (Gast)


Lesenswert?

Marcel schrieb:
> Im Datenblatt
> 
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
> habe ich nicht wirklich was dazu gefunden

9.1 Die Tabelle in welchen Sleep Modi Timer2 läuft und was dann sonst 
noch so an/aus ist.

17.1 Bestätigt, dass Timer2 optional von einem 32kHz Quarz angetrieben 
werden kann.

von Arno (Gast)


Lesenswert?

Ich wiederhole, was Arduino Fanboy schon schrieb: Sicher, dass du die 
Automotive-Variante des Controllers verwendest / verwenden möchtest? 
Dafür ist nämlich das Datenblatt, das du verlinkt hast. Keine Ahnung, ob 
das für deine Anwendung einen Unterschied ausmacht, aber du schaust ja 
auch nicht mit ATMega88-Datenblatt ;)

(Aus irgendeinem Grund kommt das bei der Suche im Netz regelmäßig weiter 
oben als das Datenblatt des normalen Controllers, zumindest hab ich auch 
schon häufiger darin gelesen und mich über Dinge wie die 
Gehäusevarianten gewundert - bis ich nochmal genau in den Titel geschaut 
habe...)

MfG, Arno

von Peter D. (peda)


Lesenswert?

Marcel schrieb:
> Dazu bietet sich der sleep mode Idle an.

Die Reduzierung im Idle ist nur etwa auf 30%.
In Power-Down könnte man noch den Watchdogtimer benutzen.

von MaWin (Gast)


Lesenswert?

Marcel schrieb:
> ich habe einen Atmega328P mit einem Externen Quarz (8 MHZ). Diesen
> möchte ich gerne in den sleep modus bringen.
> Intern läuft der Timer1. Dieser lässt alle 20ms einen Interrupt
> ausführen. Mir würde es reichen, wenn dieser den controller wieder weckt

Funktioniert so nicht.

In sleep steht auch dein 8MHz Takt.

Du musst einen 32kHz Quartz anschliessen, Timer 2 benutzen, und kannst 
dann ausserhalb von sleep den Prozessor mit internen RC 8 MHz Takt 
laufen lassen.

von J. -. (Gast)


Lesenswert?

MaWin schrieb:
> Du musst einen 32kHz Quartz anschliessen, Timer 2 benutzen, und kannst
> dann ausserhalb von sleep den Prozessor mit internen RC 8 MHz Takt
> laufen lassen.
Ja. Im Vergleich zu IDLE oder DOWN spart SAVE viel Strom und man hat 
präzisere Zeitintervalle zum Aufwachen.

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.