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.
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
>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... ;-)
...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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.