Forum: Mikrocontroller und Digitale Elektronik PowerSave nur mit externem Quarz?!?


von Sebastian Wille (Gast)


Angehängte Dateien:

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

von Sebastian Wille (Gast)


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

von thkaiser (Gast)


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.

von Sebastian Wille (Gast)


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

von thkaiser (Gast)


Lesenswert?

Jep, ich sags ja: Lang ists her, und ich habs damals nur mit nem 2313
gemacht. War ja nur ne Idee.

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.