Hi, ich benötige für eine stromsparende anwendung einen zuverlässigen wakeup nach ca 60 minuten. der watchdog geht maximal 8 sekunden. Ich könnte jetzt alle 8 sekunden einen wert im eeprom hochzählen, aber geht es evtl noch stromsparender??
Basti schrieb: > Ich könnte > jetzt alle 8 sekunden einen wert im eeprom hochzählen Warum im EEProm? Machs dir doch im Ram! Basti schrieb: > aber geht es evtl > noch stromsparender?? Es gibt RTCs mit einstellbaren Alarmzeiten, genau für solche Zwecke.
Basti schrieb: > Ich könnte > jetzt alle 8 sekunden einen wert im eeprom hochzählen, aber geht es evtl > noch stromsparender?? Wie schon mehrfach von Anderen angemerkt, macht man das natürlich nicht im EEPROM. RAM ist viel besser. Noch besser wären allerdings MCU-Register. Allerdings ist der Unterschied zwischen Registern und RAM sehr viel kleiner als der zwischen RAM und EEPROM. Das lohnt (wenn überhaupt) nur dann, wenn das Teil immer den größten Teil seiner Zeit im Countdown zum Wakeup verbringt. > zuverlässigen wakeup Sollte eventuell das "zuverlässig" der Grund sein, dass du den EEPROM benutzen willst? Dann ist es der falsche Grund, es wird dadurch kein bissel "zuverlässiger".
Wie den vorherigen Antworten zu entnehmen ist, geht das beim AVR wohl nicht stromsparender. Außer du vermeidest das EEPROM, denn das kostet viel Zeit und somit Energie, es alle 8 Sekunden auszulesen und zu beschreiben. Das ist aber nicht das Schlimmste! Hinzu kommt: Du musst du alle 9 Tage zwei neue EEPROM- Speicherstellen benutzen (60 m = 8 s * 450, > 1 Byte), denn dann sind die 100.000 garantierten Schreibzyklen aufgebraucht. In drei EEPROM-Zellen musst du auch die Zyklen mitschreiben, die sind danach auch verbraucht. Bleiben noch 25 von 128, oder 51 von 256, oder 102 von 512 EEPROM-Speicherstellen. Dabei bleibt sogar Platz im EEPROM für einen Zeiger auf die gerade gültige Speicherstelle. Na gut, 25...102 * 9 Tage sind schon 225 Tage bis 2,5 Jahre. Oder weniger, wenn das EEPROM noch anderweitig benutzt wird. - Wäre mir jedenfalls zu doof, den µC langsam aufzurauchen! Und wie lange soll die Batterie halten?
Euch ist aber schon klar, dass auch ein Timer den AVR wieder wecken kann? Warum man da unbedingt den Watchdog für missbrauchen will ist mir irgendwie schleierhaft. Und externer Interrupt wäre keine Option? Vielleicht wenn man die Aufgabe besser kennen würde die der uC bewältigen soll...
:
Bearbeitet durch User
Michael K. schrieb: > Warum man da unbedingt den Watchdog für missbrauchen will ist mir > irgendwie schleierhaft. Mir ist schleierhaft, warum das ein Missbrauch sein soll. Allerdings scheinen mir, du und der TO der Auffassung zu sein, daß der WD auch nur als solcher benutzt werden kann. Nämlich dazu, periodisch einen Reset auszulösen. Daher wohl auch die Idee mit der Zählvariablen im E²PROM. Der WD kann aber auch als Timer benutzt werden. Und das macht auch Sinn, da der WD-Oszi immer läuft. Auch im Power Down. Während ein normaler Timer mit dem CPU-Takt versorgt wird, der nur im Idle läuft. Stromsparender als der WD-Timer ist nur der Asynchron-Timer mit Uhrenquarz. Den hat aber nicht jeder AVR. Mit Boardmitteln allein ist der WD-Timer mit Power Down die stromsparendste Lösung. Der Zähler läuft dann selbstverständlich im RAM.
Was spricht denn dagegen fuer Stormsparanwendungen einen AVR mit Timer2 auf 32kHz zu verwenden ? Weil man unbedingt einen Tiny verwenden will, der 2 cent guenstiger ist ? Wieviele 10k Exemplare muss man da raushauen, umd da etwas zu sparen ?
Wer schreibt was von tiny avr? ich denke es wird ein mega 328p - ein tiny hat für die anwendung zu wenig ram. Der bisherige plan war, nach dem durchlaufen des programmes einen powerdown durchzuführen. CPU takt=0 Dann per watchdog reset wieder aufwecken... Daher auch eeprom und nicht ram. der Ram wird beim reset nicht zuverlässig erhalten. Wenn der Timer 2 im powerdown weniger strom verbraucht als der watchdog, dann ist das evtl schon die lösung. kann der timer2 auch den Powerdown wieder beenden?
Basti schrieb: > der Ram wird beim reset nicht zuverlässig erhalten Kannst du das bitte etwas näher erläutern?
Führst du durch den Watchdog einen Systemreset aus oder benutzt du eine ISR ? Der Timer2 ist im Powerdown nicht verfügbar.
aus dem Datenblatt: "Power Consumption at 1 MHz, 1.8 V, 25 °C: - Power-save Mode: 0.75 μA (Including 32 kHz RTC)"
Basti schrieb: > Dann per watchdog reset wieder aufwecken... Daher auch eeprom und nicht > ram. der Ram wird beim reset nicht zuverlässig erhalten. Das ist Unsinn. Der Watchdog kann als normaler Timer mit eigenem Takt, dem WD-Oszillator, benutzt werden. Dann kann der Zähler im RAM liegen. Alle 8s oder was auch immer eingestellt ist, weckt der WD-Interrupt den Controller aus dem Power Down auf. Dann wird die Variable hochgezählt. Ob in der WD-ISR oder im Hauptprogramm ist egal. Aber nix Reset. Der Timer2 mit Uhrenquarz macht praktisch das gleiche. Nur wesentlich genauer und mit geringfügig niedrigerem Stromverbrauch. Dafür gibt es extra den Sleep-Mode Power Save. In beiden Fällen werden RAM und Register aber weiter mit Spannung versorgt. Du brauchst kein E²PROM!
:
Bearbeitet durch User
> mit geringfügig niedrigerem Stromverbrauch
Nach 'Figure 31-296' ist es ein Faktor von 5.
S. Landolt schrieb: > Nach 'Figure 31-296' ist es ein Faktor von 5. Doch so viel. Ich hatte das vor Ewigkeiten mal nachgemessen. Die genauen Werte erinnere ich allerdings nicht mehr.
Hinweis an den Kleinschreiber: Für den 32 KiHz-Quarz muss das verwendete Programmiergerät auf einen entsprechend niedrigen Takt einstellbar sein, sonst ist der erste Versuch der letzte.
S. Landolt schrieb: > Hinweis an den Kleinschreiber: > Für den 32 KiHz-Quarz muss das verwendete Programmiergerät auf einen > entsprechend niedrigen Takt einstellbar sein, sonst ist der erste > Versuch der letzte. Wieso? Der µC läuft weiter auf 8MHz. Es ist nur Timer2 (oder war es 1), welcher vom 32kHz Quarz getrieben wird. 8MHz ist ganz normal da sollte jedes Programmiergerät mit klar kommen.
Nobody schrieb: > S. Landolt schrieb: >> Hinweis an den Kleinschreiber: >> Für den 32 KiHz-Quarz muss das verwendete Programmiergerät auf einen >> entsprechend niedrigen Takt einstellbar sein, sonst ist der erste >> Versuch der letzte. > > Wieso? > Der µC läuft weiter auf 8MHz.(oder 1MHz) > Es ist nur Timer2 (oder war es 1), welcher vom 32kHz Quarz getrieben > wird. > 8MHz ist ganz normal da sollte jedes Programmiergerät mit klar kommen.
Korrekt, Nobody. Entschuldigung, meinen letzten Beitrag ignorieren. Das gilt ja nicht für eine asynchrone Verwendung (also als 'RTC').
Oh, bei der letzten Antwort habe ich mist gebaut, und kann sie nicht löschen. (oder 1MHz) << ist schon richtig.
Basti schrieb: > kann der timer2 auch den Powerdown > wieder beenden? Ja, kann er. Wie gesagt, du könntest z.B. auch einen Pin-Change-Interrupt benutzen, auch sowas kann den Atmega wieder wecken. Und ja, auch den WD kann man dafür benutzen aber eigentlich ist der WD ja dafür da, den Atmega aus einer Endlosschleife zu holen falls er mal da drin fest hängt. Er soll eigentlich den Atmega also wieder zum "normalen" Arbeiten bringen. Man kann dafür den Systemreset benutzen, man kann aber auch den Interrupt benutzen was hier dann zu tun wäre. Wie gesagt, mir wäre das zuviel Gezumpel, Timer2 ist da, zumindest für mich, einfacher zu handhaben.
Michael K. schrieb: > Euch ist aber schon klar, dass auch ein Timer den AVR wieder wecken > kann? Nicht aus dem weitaus effizientesten aller Schlafmodi, dem "PowerDown". Aus diesem Modus können nur asynchrone Quellen der AVR wieder erwecken und genau das sind seine Timer halt überwiegend nicht. Nur Timer2 und dieser auch nur im asynchronen Modus stellt eine Ausnahme von dieser Regel dar. Blöderweise hat längst nicht jeder AVR einen Timer2 und selbst von denen, die den haben, ist längst nicht jeder fähig, den asynchron zu betreiben... > Warum man da unbedingt den Watchdog für missbrauchen will ist mir > irgendwie schleierhaft. Das mag daran liegen, dass du nicht den Hauch einer Andeutung einer Ahnung hast...
Michael K. schrieb: > Timer2 ist da, zumindest für mich, einfacher zu handhaben. Ist es nicht, da du es gar hinbekommst: >> kann der timer2 auch den Powerdown >> wieder beenden? > > Ja, kann er. c-hater schrieb: > Das mag daran liegen, dass du nicht den Hauch einer Andeutung einer > Ahnung hast... Da kann man c-hater nur zustimmen.
Herrlich, der TO schmeißt eine Frage rein, ohne sich zu äußern, um was für einen AVR es geht: kleinster Tiny-AVR, oder größter Mega-AVR. Es kommen (nach bestem Wissen) hilfreiche Antworten, nur damit man irgendwann vom TO für blöd erklärt wird, weil man nicht erraten hat, dass er einen mega328 mit Timer2/async hat. Ob er da einen externen Clock einspeist, der vielleicht ein besseres Minuten-Timing gegenüber dem 8 * WD-IRQ bringen KÖNNTE, ist natürlich weiterhin sein Geheimnis. Dazu besteht er unbelehrbar auf EEPROM-Abnutzung... Wer nicht überlegen mag und nicht rechnen kann, muss eben erst mal spüren, dass die EEPROM-Zelle (100.000 Minuten = 70 Tage) vor der Batterie verreckt. ;-) Wünschen wir ihm einfach viel Spaß dabei!
Jakob schrieb: > Dazu besteht er unbelehrbar auf EEPROM-Abnutzung... Nöö.. Meine Empfindung "fühlt"-- (ach, egal--)....
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.