Mega164 - Idle Sleep Mode richtig mit PWM?

OP #1342436
Lesenswert?

Hallo,

wie schon im Betreff beschrieben möchte ich meinen Mega164 effizient 
betreiben und wenn nichts zutun ist schlafen legen.

Das Programm ist recht einfach und wartet nur ob an INT0 ein "Rising 
Edge Interrupt" ausgelöst wird und reagiert dann entsprechend. Sobald 
alles abgearbeitet worden ist soll er wieder schlafen gehen.

Die Einschränkung liegt hier wohl am Timer1 der im FastPWM Mode 
betrieben wird und niemals abgeschalten werden soll!

Laut Datenblatt (Full, S.43 Table7-1) kommt hier wohl nur der Idle Mode 
in Frage? Bei allen anderen kann ich nicht auf "Rising Edge" triggern 
bzw. wird sogar der Clock für den Timer abgeschaltet.

Jetzt stellt sich mir noch die Frage wie das mit den WakeUp Sources 
aussieht? Wacht er durch irgendwelche Interrupts durch Timer1 (FastPWM) 
auf, oder kann ich das auf INT0 begrenzen? Bzw. läuft PWM weiter wenn er 
sich aktiv im Idle-Mode befindet?

Vielen Dank

e-Ra
#1343181
Lesenswert?

@  Elias R. (e-ra)

>Laut Datenblatt (Full, S.43 Table7-1) kommt hier wohl nur der Idle Mode
>in Frage?

Ja.

>Jetzt stellt sich mir noch die Frage wie das mit den WakeUp Sources
>aussieht?

Siehe Interrupt.

>Wacht er durch irgendwelche Interrupts durch Timer1 (FastPWM)
>auf,

Kann man einstellen.

> oder kann ich das auf INT0 begrenzen?

Ja.

> Bzw. läuft PWM weiter wenn er
>sich aktiv im Idle-Mode befindet?

Sicher, siehe Sleep Mode.

MfG
Falk
OP #1343421
Lesenswert?

Hallo,

und wie kann ich das genau auf INT0 begrenzen?

Reicht es einfach keine andere ISR als meine "Rising Edge Interrupt" 
(INT0_vect) ISR im Code zu verwenden? Oder muss ich irgendwelche 
Register beschreiben aus denen dann folgt bei welchem Event er aufwachen 
soll.

Vielen Dank

e-Ra

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren