mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tiny45 PLL und Power Down


Autor: concept (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im aktuellen Datenblatt steht zwar unter 6.1.5

"Both internal RC oscillator and PLL are switched off in power down and 
stand-by sleep modes."

Aber ich stelle fest, dass die PLL nur im Power-Down ausgeschaltet wird, 
nicht in idle. Sie wird nicht automatisch wieder angeschaltet.

Leider steht das nirgendwo. Grmbl!

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
concept wrote:
> Im aktuellen Datenblatt steht zwar unter 6.1.5
>
> "Both internal RC oscillator and PLL are switched off in power down and
> stand-by sleep modes."

Das ist korrekt...

>
> Aber ich stelle fest, dass die PLL nur im Power-Down ausgeschaltet wird,
> nicht in idle.

Warum sollte er im IDLE deaktiviert werden? Wo steht das? IDLE ist doch 
was Anderes als Power-Down oder Standby.

> Sie wird nicht automatisch wieder angeschaltet.

Vermutlich doch, wenn man es richtig macht. Ich vermute mal, dass Du 
Dich mit Deinem Konzept festgefahren hast und in einer Sackgasse 
steckst.

Ich habe mit dem Sleep und dessen Modi keinerlei Probleme, gehe aber 
nach folgendem Konzept vor:

- Jedes Programm hat mindestens einen Timer-Interrupt, in dem Dinge
  wie Tastenabfrage erledigt bzw. synchronisiert werden.

- Die Mainloop fällt nach getaner Arbeit grundsätzlich in den Sleep und
  wird durch Timer, ADC, UART oder andere Ereignisse geweckt.

- Im Normalfall ist Sleep-Mode Idle vorgewählt, Timer-, ADC- und
  I/O-Takt laufen also weiter, nur der MCU-Takt wird eingefroren

- Im Fall der Nichtbedienung läuft ein Count-down ab (es kann auch per
  Menüpunkt "aus" ausgelöst werden), der dafür sorgt, dass der externe
  Interrupt (zum Wecken aus dem Tiefschlaf) aktiviert wird und der
  Sleepmode auf Power-down umgeschaltet wird. Nach Rückkehr des
  Programms in die Mainloop wird Sleep aufgerufen, worauf der Power-
  down-Mode greift und alle Taktquellen abschaltet. Nun kann nur noch
  der ext. Interrupt (Low-Level) bzw. PCI (bei manchen AVRs auch TWI)
  den AVR aus dem Tiefschlaf wecken.

- In der ISR des Weck-Interrupts wird sofort der zuständige Interrupt
  deaktiviert und der Sleep-Mode auf Idle umgeschaltet. Die ISR wird
  beendet, das Programm fällt in die Mainloop, da ist noch nix zu tun,
  weil noch keine Semaphores (Jobflags) gesetzt wurden und fällt in den
  Sleep. Nun ist aber Sleep-Mode Idle aktiv, worauf alle Takte außer
  MCU-Takt aktiv sind und deren Interrupts in der Lage sind, Ereignisse
  der Peripherie zu erkennen und der Mainloop (evtl. nach Sichern
  flüchtiger Werte) per Semaphores mitzuteilen.

Dieses Verfahren geht natürlich nur, wenn man im AVR keine Uhrzeit 
mitführen muss, denn wenn die Timer stehen, können sie keine Zeit 
zählen. Es gibt aber auch AVRs mit einem asynchronen Timer, der während 
des Tiefschlafs mit einem externen Uhrenquarz klappert und dessen 
Interrupt den AVR aus dem Tiefschlaf weckt. Der Tiny45 hat den aber wohl 
nicht.

Wenn Du schon beim ultimativen Stromsparen bist, hast Du auch an das 
Deaktivieren des AC gedacht (ACD in ACSR setzen)? Zum richtigen 
Stromsparen sind die AVRs aber sowiso nicht optimal, da solltest Du auf 
MSP430 ausweichen. Den AVRs laufen mit aktiviertem BOD stabiler 
(verhindert die Absturz-Probleme in Deinen anderen Threads), BOD kostet 
aber Strom. Ich baue z.B. kein AVR-Gerät mehr ohne Batterieschalter.

>
> Leider steht das nirgendwo. Grmbl!

Es kann nicht für jeden Fall eine "Dienstanweisung" geben, man sollte 
schon selbst etwas mitdenken und versuchen, die Architektur des 
verwendeten MCs zu verstehen.

...

Autor: concept (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hannes,

danke für die vielen guten Tipps!
Man lernt den Rechner wohl erst mit asm wirklich gut kennen.

> Warum sollte er im IDLE deaktiviert werden? Wo steht das? IDLE ist doch
> was Anderes als Power-Down oder Standby.

Ich hab gedacht, dass idle zu den stand-by sleep modes gezählt wird? 
Es gibt nämlich gar keinen speziellen Standby-Modus (beim tiny45).

Vielleicht könntest Du zu meiner Frage hier noch was schreiben?

Beitrag "Re: Tiny45 stürzt ab trotz Minimalprogramm"

Würde mich freuen.

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.