ATMega324 Power-Down Modus Probleme UART

OP #2682429
Lesenswert?

Hallo,

wahrscheinlich grad schlechte Zeit, aber ich versuchs trotzdem mal :)

Ich habe einen ATMega324A und empfange über UART im Interrupt Modus 
Zeichen von einem GPS Modul.
Nun versuche ich den Controller in den Power-Down Modus zu versetzen 
mit:
1
SMCR |= (1<<SE);
2
SMCR |= (1<<SM1);

Allerdings wird dann weiterhin die ISR des UARTS aufgerufen.

Habe ich den Controller überhaupt in den PowerDown Modus versetzt, oder 
wird er durch den UART Interrupt einfach wieder aufgeweckt.

Falls er dadurch aufgeweckt wird, ist es dann ausreichend mittels cli(); 
die Interrupts global zu deaktivieren (bzw. den UART RX Interrupt)?

Danke schonmal,
Alex
OP #2682463
Lesenswert?

> Machst Du danach auch noch ein 'sleep'? Mit obigen Befehlen hast Du
> nämlich nur den gewünschten Modus konfiguriert.

Nein, wusste ich nicht.
Dann muss ich also die avr/sleep.h auch noch einbinden.
Das SE bit habe ich bereits "per Hand" gesetzt.
Dann muss ich ja nur sleep_cpu() aufrufen und nicht sleep_enable() oder 
sleep_mode()?

PS: Ich will nie wieder aufwachen wenn der Sleepmodus einmal aktiviert 
wurde
Gast #2682477
Lesenswert?

> Dann muss ich also die avr/sleep.h auch noch einbinden.

Müssen ist relativ - asm sleep kannst Du auch direkt absetzen. Es macht 
halt das Leben leichter (gäbe dort neben sleep_cpu() auch noch 
sleep_enable(), sleep_disable() und set_sleep_mode(..)).

> Ich will nie wieder aufwachen wenn der Sleepmodus einmal aktiviert wurde

Ein derartiger Sleep-Modus ist nicht dokumentiert - da hilft nur Strom 
abdrehen.

HTH

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