Forum: Mikrocontroller und Digitale Elektronik ATTiny85 watchdog sehr ungenau


von Tobias (Gast)


Lesenswert?

Hallo,
ich beziehe mich auf meinen thread hier:
Beitrag "ATTiny85 Probleme mit watchdog"
Neue Frage, neuer thread, deshalb:
ich habe den watchdog so eingestellt, dass er nach 24 Stunden einen 
reboot machen soll und dann soll die LED blinken und wieder schlafen 
gehen bis 24 Stunden rum sind. Langzeittimer-Versuch zum Lernen.
Kann es sein, dass der watchdog extrem ungenau ist? Bei 4 Sekunden 
watchdog ergeben 24h (also 86.400 Sekunden) genau 21.600x aufwachen, 
Zähler erhöhen, Vergleich anstellen, rebooten. In der Realität wacht der 
µC nach 25 1/2 Stunden auf…
Fuses des ATTiny85 sind derzeit 62 DF FF

Könnte die Genauigkeit steigen wenn ich:
a) SUT=0 statt SUT=10 wähle (C2 DF FF)
b) auf f_cpu=1000000L gehe
c) watchdog Osc. 128 kHz setze C4 DF FF (und mich nachher evtl. selber 
aussperre…)
d) den watchdog anders zählen lasse, statt z.B. langen 4 Sekunden noch 
längere 8 oder kürzere 1 Sekunde?

Wenn dass alles nur Makulatur wäre: kennt jemand eine gute Seite, wo ich 
die Arbeit mit einem externen Quarz lernen kann?
Danke.

von spess53 (Gast)


Lesenswert?

Hi

>Kann es sein, dass der watchdog extrem ungenau ist?

Ja. Siehe Datenblatt S.192.

MfG Spess

von HildeK (Gast)


Lesenswert?

Tobias schrieb:
> Könnte die Genauigkeit steigen wenn ich:
> a) SUT=0 statt SUT=10 wähle (C2 DF FF)
Diese Fuses sind nur für das Anlaufverhalten z.B. bei langsam steigender 
Versorgung interessant.
> b) auf f_cpu=1000000L gehe
Hat damit nichts zu tun, der WD wird von einem eigenen, unabhängigen 
internen 128k Oszillator betrieben. Schau dir mal Figure 6-1. Clock 
Distribution sowie Figure 8-7. Watchdog Timer im Datenblatt an.
> c) watchdog Osc. 128 kHz setze C4 DF FF (und mich nachher evtl. selber
> aussperre…)
Erhöht deshalb nicht die Genauigkeit. Es kann sein, dass du dich 
aussperrst. Man kann aber mit der ISP-Frequenz mit 4kHz wahrscheinlich 
die Fuses wieder zurückstellen. Sonst: HV-Programmierung.
> d) den watchdog anders zählen lasse, statt z.B. langen 4 Sekunden noch
> längere 8 oder kürzere 1 Sekunde?
Nein, siehe oben genanntes Blockschaltbild. Alle Zeiten werden aus einem 
einzigen Oszillator durch Teilung abgeleitet und sind damit in der 
selben Weise ungenau.

Wenn du genaue Zeiten brauchst, dann
- Lass ihn doch nur 20330x aufwachen anstatt 21600x. Erfordert aber 
vermutlich Feinabgleich von Baustein zu Baustein und wird trotzdem 
deutlichen Temperaturgang haben.
- Nimm einen der Timer und betreibe deinen Tiny mit einem Quarz oder 
Quarzoszillator. Dann hast du ev. nur einige Sekunden (oder weniger) 
Ablage in 24h.

Dass die WD-Zeiten ungenau sind, spielt für die praktische Anwendung 
keine große Rolle, denn der primäre Zweck des WD ist, das Programm 
zurückzusetzen, wenn es sich je aufgehängt haben sollte. Ich denke, die 
Möglichkeit, den WD als Timer zu benutzen, ist davon nur ein 
Abfallprodukt, weil dafür das Meiste bereits für den WD in Hardware 
notwendig ist.

von S. Landolt (Gast)


Lesenswert?

25.5 h statt 24.0 sind 6.25 % Abweichung. Mit dem 'Calibrated Internal 
Oscillator' sollte man auf 1..2 % kommen, wäre aber immer noch bis zu 
einer halben Stunde pro Tag.

von Tobias (Gast)


Lesenswert?

Vielen Dank, besonders HildeK.
Kennt jemand zufällig eine gute Seite/Tutorial, wo ich den Umgang mit 
einem Quarz lernen/üben kann? Möglichst nicht Assembler.
Wenn ich das richtig verstehe, dann ist auch die Funktion millis() vom 
gleichen Oszillator abhängig und damit genauso (un)genau?

von c-hater (Gast)


Lesenswert?

Tobias schrieb:

> Kann es sein, dass der watchdog extrem ungenau ist?

"Extrem ungenau" ist sicherlich eine Frage der Definition. Aber mal als 
Richtwerte: Der Watchdog-Oszillator ist sicher extrem ungenau, wenn man 
ihn mit einem Quarz-Oszillator oder auch nur einem Keramik-Resonator 
vergleicht. Er ist aber auch immer noch "ziemlich ungenau", wenn man ihn 
einfach nur mit dem internen RC-Oszillator eines AVR vergleicht.

Das liegt schlicht daran, daß es niemals Entwicklungsziel war, daß er 
genau sein soll. Der Fokus lag immer darauf, daß er möglichst wenig 
(zusätzliche) Energie verbraucht.

> Könnte die Genauigkeit steigen wenn ich:
> a) SUT=0 statt SUT=10 wähle (C2 DF FF)

Sicher nicht.

> b) auf f_cpu=1000000L gehe

Sicher nicht.

> c) watchdog Osc. 128 kHz setze

Nur sehr geringfügig. Und es fragt sich darüber hinaus, ob es dadurch 
besser oder schlechter werden würde. Ziemlich sicher ist nur: es würde 
sich etwas verändern...

> Wenn dass alles nur Makulatur wäre: kennt jemand eine gute Seite, wo ich
> die Arbeit mit einem externen Quarz lernen kann?

Häh? Was gibt es daran groß zu lernen? Einfach anklemmen und Fuses 
passend setzen. Steht doch alles lang und breit im Datenblatt. Was 
spricht dagegen, den Kram einfach mal zu lesen, und zwar idealerweise 
bevor man fremde Leute mit seiner Inkompetenz nervt?

von S. Landolt (Gast)


Lesenswert?

> Möglichst nicht Assembler.
Die Programmiersprache hat nichts mit der Taktquelle zu tun.

> Einfach anklemmen und Fuses passend setzen.
Genau, bei Steckbrettaufbau reicht i.d.R. auch dessen Kapazität, man 
braucht nicht einmal die beiden Kondensatoren.

von W.S. (Gast)


Lesenswert?

Tobias schrieb:
> ich habe den watchdog so eingestellt, dass er nach 24 Stunden einen
> reboot machen soll und dann soll die LED blinken und wieder schlafen
> gehen bis 24 Stunden rum sind. Langzeittimer-Versuch zum Lernen.

Nun, jetzt hast du den Watchdog kennengelernt. Jetzt weißt du, daß er 
eigentlich für eine andere Aufgabe gedacht gewesen ist. Und hast du 
daraus gelernt, warum es normalerweise besser ist, einen richtigen 
Timer, vorzugsweise einen 32 kHz Low Power Timer, für derartige Aufgaben 
zu benutzen - vorausgesetzt, du brauchst tatsächlich sowohl die 
Präzision des Quarzes als auch den geringen Stromverbrauch?

Wenn du den Umgang mit Quarzen noch nicht kennst, wäre es wohl eher 
ratsam, dir eine Ausgabe des ARRL-Handbuches zuzulegen, dort wird es 
neben Anderem in bastlerverständlicher Form erläutert.

Und nochwas: der Ton von c-hater ist gelegentlich ein wenig rauh, aber 
in aller Regel ausgesprochen zutreffend - und er hat mehr drauf als du. 
Trag die Nase also nicht allzu hoch.

W.S.

von Die Menschheit verblödet (Gast)


Lesenswert?

W.S. schrieb:
> Und nochwas: der Ton von c-hater ist gelegentlich ein wenig rauh, aber
> in aller Regel ausgesprochen zutreffend - und er hat mehr drauf als du.
> Trag die Nase also nicht allzu hoch.

Das gibt dem Kerl kein Recht, ihm völlig unbekannte Personen 
anzurotzen
Der Wicht wird zu Hause wahrscheinlich nur von seiner Frau befehligt und 
kühlt hier sein Mütchen. Solche Leute brauchen eine Ansprache, daß 
ihnen die Haare einen halben Meter vom Kopf stehen.

Es sind 3-4 Figuren, die das Klima im ganzen Forum vergiften wollen. Wer 
hier länger mitliest, weiß genau, wer gemeint ist.

von Kurt B. (kurt-b)


Lesenswert?

c-hater schrieb:

>
>> Wenn dass alles nur Makulatur wäre: kennt jemand eine gute Seite, wo ich
>> die Arbeit mit einem externen Quarz lernen kann?
>
> Häh? Was gibt es daran groß zu lernen? Einfach anklemmen und Fuses
> passend setzen. Steht doch alles lang und breit im Datenblatt. Was
> spricht dagegen, den Kram einfach mal zu lesen, und zwar idealerweise
> bevor man fremde Leute mit seiner Inkompetenz nervt?

Ich setze meine Unkenntnis auch dazu.
Mich interessiert es auch wie man die Ungenauigkeit des WD umgehen kann.
Inzwischen weiss ich dass es AVRs gibt die sowohl als auch, also einen 
32er (32768 Hz) Quarz bedienen können, als auch den ganz normalen .
Dieser wird dann einfach angeschmissen und wenn fertig wieder schlafen 
gelegt.
Der 32er übernimmt dann die Funktion des Aufwachens, und zwar mit der 
Genauigkeit eine Quarzes halt.

Was aber ist wenn der Wunsch-AVR nur einen Oszillator hat, kann man dann 
zwei Quarze dranhängen und diese per Pout umschalten, das bedingt aber 
auch ein Umschalten der Fuses, denn die werden ja auf den einen oder 
anderen Quarz eingestellt.


 Kurt

von Thomas E. (thomase)


Lesenswert?

Kurt B. schrieb:
> Was aber ist wenn der Wunsch-AVR nur einen Oszillator hat, kann man dann
> zwei Quarze dranhängen und diese per Pout umschalten, das bedingt aber
> auch ein Umschalten der Fuses, denn die werden ja auf den einen oder
> anderen Quarz eingestellt.
Ein Atmega328 z.B. hat nur einen Oszi. Der kann alternativ als 
Systemclock mit (schnellem) Quarz oder als Taktgeber für Timer2 mit 
Uhrenquarz fungieren. Der Systemtakt kommt dann vom internen RC.

Im Betrieb umschalten kann man nicht.

mfg.

von Rolf M. (rmagnus)


Lesenswert?

Kurt B. schrieb:
> Mich interessiert es auch wie man die Ungenauigkeit des WD umgehen kann.

Gar nicht! Er ist nicht als normaler Timer gedacht. Wenn man ihn 
tatsächlich auch als Watchdog verwedet, spielt die Genauigkeit keine 
große Rolle, und so ist er auch ausgelegt.

> Inzwischen weiss ich dass es AVRs gibt die sowohl als auch, also einen
> 32er (32768 Hz) Quarz bedienen können, als auch den ganz normalen .

Einer der (normalen) Timer kann dann mit einem eigenen quarzgesteuerten 
Oszillator laufen, während der Systemtakt von einem zweiten Quarz kommt, 
ja. Das hat mit dem Watchdog nichts zu tun.

> Was aber ist wenn der Wunsch-AVR nur einen Oszillator hat, kann man dann
> zwei Quarze dranhängen und diese per Pout umschalten, das bedingt aber
> auch ein Umschalten der Fuses, denn die werden ja auf den einen oder
> anderen Quarz eingestellt.

Nein, das geht nicht. Muss dein Systemtakt denn auch quarzgenau (bzw. 
größer 8 Mhz) sein?

von Kurt B. (kurt-b)


Lesenswert?

Rolf M. schrieb:
> Kurt B. schrieb:
>> Mich interessiert es auch wie man die Ungenauigkeit des WD umgehen kann.
>
> Gar nicht! Er ist nicht als normaler Timer gedacht. Wenn man ihn
> tatsächlich auch als Watchdog verwedet, spielt die Genauigkeit keine
> große Rolle, und so ist er auch ausgelegt.

Das ist schon klar, ich habe ihn zum Stromsparen verwendet.
Aber ein 32er wäre mir lieber.

>
>> Was aber ist wenn der Wunsch-AVR nur einen Oszillator hat, kann man dann
>> zwei Quarze dranhängen und diese per Pout umschalten, das bedingt aber
>> auch ein Umschalten der Fuses, denn die werden ja auf den einen oder
>> anderen Quarz eingestellt.
>
> Nein, das geht nicht. Muss dein Systemtakt denn auch quarzgenau (bzw.
> größer 8 Mhz) sein?

Hm, ich fahre mit 4,xx MHz, geht's da?

 Kurt

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.