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