Forum: Mikrocontroller und Digitale Elektronik AVR Watchdog time verlängern


von Basti (Gast)


Lesenswert?

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??

von Georg G. (df2au)


Lesenswert?

Warum im EEProm zählen? Hat deine unbekannte CPU kein RAM?

von Nobody (Gast)


Lesenswert?

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.

von c-hater (Gast)


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".

von Jakob (Gast)


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?

von M. K. (sylaina)


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

: Bearbeitet durch User
von Mein grosses V. (vorbild)


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.

von Pandur S. (jetztnicht)


Lesenswert?

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 ?

von Basti (Gast)


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?

von Georg G. (df2au)


Lesenswert?

Basti schrieb:
> der Ram wird beim reset nicht zuverlässig erhalten

Kannst du das bitte etwas näher erläutern?

von Holger L. (max5v)


Lesenswert?

Führst du durch den Watchdog einen Systemreset aus oder benutzt du eine 
ISR ?

Der Timer2 ist im Powerdown nicht verfügbar.

von S. Landolt (Gast)


Lesenswert?

aus dem Datenblatt:
"Power Consumption at 1 MHz, 1.8 V, 25 °C:
- Power-save Mode: 0.75 μA (Including 32 kHz RTC)"

von Blechhuhn (Gast)


Lesenswert?

Deine Shift-Taste funktioniert nicht, Basti.

von Mein grosses V. (vorbild)


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!

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

> mit geringfügig niedrigerem Stromverbrauch
Nach 'Figure 31-296' ist es ein Faktor von 5.

von Mein grosses V. (vorbild)


Lesenswert?

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.

von S. Landolt (Gast)


Lesenswert?

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.

von Nobody (Gast)


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.

von Nobody (Gast)


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.

von S. Landolt (Gast)


Lesenswert?

Korrekt, Nobody.
Entschuldigung, meinen letzten Beitrag ignorieren. Das gilt ja nicht für 
eine asynchrone Verwendung (also als 'RTC').

von Nobody (Gast)


Lesenswert?

Oh, bei der letzten Antwort habe ich mist gebaut, und kann sie nicht 
löschen.

(oder 1MHz) << ist schon richtig.

von M. K. (sylaina)


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.

von c-hater (Gast)


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

von Mein grosses V. (vorbild)


Lesenswert?

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.

von Jakob (Gast)


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!

von Nobody (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.