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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.