mikrocontroller.net

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


Autor: Sebastian Wille (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian Wille (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian Wille (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thkaiser (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.