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


von Martin M. (kaktus621) Benutzerseite Flattr this


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.

von holger (Gast)


Lesenswert?

Probier es einfach aus.

von Walter T. (nicolas)


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

von Vuvuzelatus (Gast)


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... ;-)

von Martin M. (kaktus621) Benutzerseite Flattr this


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

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.