www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ständiger Wechsel zw. Idle und aktivem Modus


Autor: Martin Matysiak (kaktus621) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe eine Frage zu den Stromsparfunktionen des ATmegas (in meinem 
Fall ATmega88). Für einen Nachfolger meines GPS Loggers (neue 
Außenmaße: 5x5x2cm) möchte ich Gebrauch der Stromsparmodi des mega88 
machen. Das "Power Reduction Register" ist da schon ein guter Anfang, da 
man jede Menge nicht benötigter Module (ADC und ähnliches) abschalten 
kann.

Nun stellt sich mir die Frage, ist es sinnvoll, in der Wartezeit auf die 
nächste Positionsmeldung in einen Idle-Modus zu wechseln? Wenn 
überhaupt, dann ginge - soweit ich es aus dem Datenblatt herauslesen 
konnte - nur der "Idle"-Modus, da eingehende Daten über UART den 
Prozessor wieder wecken sollen.

Nehmen wir folgendes Szenario an:

Das GPS Modul hat eine Aktualisierungsrate von 1 Hz, jede Sekunde kommt 
also eine Positionsmeldung. Für die Bearbeitung (einlesen, auf SD-Karte 
schreiben) braucht der Prozessor sagen wir einmal 200ms (ein frei 
erfundener Wert).

Macht es in diesem Fall Sinn, für die verbleibenden 800ms zur nächsten 
Meldung in den Idle-Modus zu wechseln? Macht es dem Prozessor "etwas 
aus", ständig zwischen Aktiv und Idle zu wechseln? Verbraucht der 
Umschaltvorgang im Endeffekt mehr Strom, als durch den Idle-Modus 
gespart wird (falls der Vorgang zusätzlich Strom verbrauchen sollte, was 
ich eigentlich nicht annehme)?

Ich wäre dankbar über eine kurze Antwort.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier es einfach aus.

Autor: Walter Tarpan (nicolas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Matysiak schrieb:
> Macht es in diesem Fall Sinn, für die verbleibenden 800ms zur nächsten
> Meldung in den Idle-Modus zu wechseln? Macht es dem Prozessor "etwas
> aus", ständig zwischen Aktiv und Idle zu wechseln? Verbraucht der
> Umschaltvorgang im Endeffekt mehr Strom, als durch den Idle-Modus
> gespart wird (falls der Vorgang zusätzlich Strom verbrauchen sollte, was
> ich eigentlich nicht annehme)?

Hallo Martin,

das macht dem Prozessor gar nichts aus, der kann auch ruhig deutlich 
häufiger in einer Sekunde alle Stromsparmodi durchwechseln, wenn es 
einen Sinn ergibt. Der Startvorgang braucht, solange der Oszillator 
durchläuft keinen extra-Strom. Wenn Du 80% der Zeit den AVR schlafen 
legen kannst ist das sicherlich dann lohnend, wenn der AVR einen 
signifikanten Stromverbrauch gegenüber den anderen Komponenten auf dem 
Board hat. Oder um die vorherige Aussage zu zitieren: "Probiers einfach 
aus." Kaputtmachen kann man dabei nichts, schlimmstenfalls bringt es 
nichts.

Grüße
Nicolas

Autor: Vuvuzelatus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Macht es in diesem Fall Sinn, für die verbleibenden 800ms zur nächsten
>Meldung in den Idle-Modus zu wechseln?

Aber ja. Sinnlos ist es, einen µC massenhaft die Instruktion nop 
abarbeiten zu lassen, nur weil es sonst nichts zu tun gibt. Während 
solcher Zeiten kann er auch prima schlafengelegt werden. Das hat 
praktisch Null Nachteil (die minimale Aufwachzeit ist meistens 
irrelevant), spart aber u. U. eine Menge Strom.

>Macht es dem Prozessor "etwas aus", ständig zwischen Aktiv und Idle zu wechseln?

Nein. Schreib ein Testprogramm, das ihn z. B. zehntausendmal pro Sekunde 
in den Idle-Modus setzt und ihn wieder daraus aufweckt. Lass es über 
Nacht laufen, oder wochenlang. Dein µC wird es völlig schadlos 
überstehen. Was soll ihm dabei auch passieren?

Aufpassen musst Du nur beim Beschreiben von EEPROM- oder Flash-Zellen, 
hier gilt tatsächlich "zu oft ist ungesund", wobei "oft" immerhin einige 
1000 mal bedeutet.

>Verbraucht der Umschaltvorgang im Endeffekt mehr Strom, als durch den
>Idle-Modus gespart wird

Nein. Der durch den Umschaltvorgang verursachte Strom fällt nicht ins 
Gewicht. Selbstverständlich benötigt die Instruktion sleep selbst und 
das Aufwachen aus dem eingestellten Sleepmode eine gewisse Anzahl 
Taktzyklen, während derer der µC den Active-Strom zieht. Diese Zahl ist 
aber klein (so 10 bis 15), und ihr stehen viele Tausende oder sogar 
Millionen Taktzyklen mit sehr wenig Idle-Strom gegenüber. Unterm Strich 
spart die Verwendung eines Sleepmodes also immer Strom.

>Ich wäre dankbar über eine kurze Antwort.

Hoffentlich geht das noch als kurze Antwort durch... ;-)

Autor: Martin Matysiak (kaktus621) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und wieder fühle ich mich ein Stück schlauer :-) Vielen Dank für die 
Antworten, haben mir sehr geholfen. Mit dem "einfach mal ausprobieren" 
habe ich aus der Ungewissheit heraus gewartet, ob mir nicht der 
Prozessor nach ein paar Tagen Laufzeit den Dienst quittiert. Jetzt 
sollte dem allerdings nichts mehr im Wege stehen

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.