AVR Watchdog time verlängern

Gast #4445325
Lesenswert?

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".
Gast #4445637
Lesenswert?

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?
#4445652
Lesenswert?

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...
#4445777
Lesenswert?

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.
Gast #4446354
Lesenswert?

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?
#4446451
Lesenswert?

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!
Gast #4446587
Lesenswert?

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.
Gast #4446589
Lesenswert?

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.
#4446735
Lesenswert?

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.
Gast #4446832
Lesenswert?

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...
Gast #4447071
Lesenswert?

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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren