PowerSave nur mit externem Quarz?!?

Gast #57450
Lesenswert?
• ▲
▼
Hi,

ich versuche gerade die APPNOTE134 von Atmel, die einen ATMega103 als
RTC im Stromsparmodus verwendet, mit einem Mega8 nachzuvollziehen.

Die "Uhr" läuft, kein Problem. Bloß ich bekomme es nicht hin, daß der
Mega8 wieder vom PowerSave-Modus aufwacht. In der Simulation klappt
es.

Nun verwende ich ja den Timer2 und blockiere mir somit die Pins für
einen externen Quarz. Also nehme ich den internen. Und der AVR wacht
einfach nicht mehr auf. Brauche ich wirklich einen externen Quarz - so
wie in der AppNote?

Aber wäre das nicht paradox? Schließlich wird der CPU-Quarz doch beim
PowerSave angehalten, oder?!?

Ich probiere nun schon seit Stunden (siehe Uhrzeit!).

Was meint Ihr dazu? Mein Assembler-Progrämmchen hängt an.

Danke schonmal! :-)

Sebastian
Angehängte Dateien:
Gast #57451
Lesenswert?
• ▲
▼
Nun habe ich durch Zufall eine neue Erkenntnis gewonnen.

In einer anderen Anwendung habe ich aus anderen Gründen einen Interrupt
aktiviert (Int0).

Ab dem Zeitpunkt, ab dem ich einmal (!!!) den Interrupt auslöse, fängt
der Timer an zu arbeiten und löst seine Interrupts dann auch wie
gewünscht aus.

Der Timer muß also einmal einen Interrupt vor dem ersten sleep-Befehl
ausgeführt haben. Lösung: TCNT mit 0xFF initializieren. So wird der
Timer - zumindest in meiner Anwendung - vor dem ersten sleep-Befehl
einmal ausgelöst.

Ein manuelles "rcall Timer0_Overflow" dagegen bringt nichts.

Verrückt, oder?!?

Sebastian
Gast #57452
Lesenswert?
• ▲
▼
Nö, garnicht verrückt. Ist zwar schon lange her, daß ich mich damit
beschäftigte, aber ich glaube, mich zu erinnern, daß es verschiedene
Sleep-Modes gab. Unter anderem einen, der auch den Oszillator
abschaltet (sowohl intern als auch extern). Aus diesem Sleep läßt sich
der Controller nur noch durch Reset oder einen programmierten externen
Interrupt aufwecken (evtl. auch noch weitere Quellen). Schau mal im
Datenblatt nach -> "AHA"-Effekt.
Gast #57453
Lesenswert?
• ▲
▼
Hi thkaiser,

Du hast recht, es gibt verschiedene Sleep-Modi. Ich verwende den
PowerSave-Mode der den Oszillator abschaltet.

Allerdings läuft ein Uhrenquarz an TOSC1/TOSC2 assychron dazu im
Schlafmodus weiter. Im Datenblatt: Im Register ASSR: AS0=1.

Außerdem muß ich ja nur ein einziges Mal einen externen Interrupt
auslösen, danach läuft's ja wie geschmiert.

"AHA"-Effekt deinerseits? ;-)

Danke trotzdem! :-)

Sebastian

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