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.
Hi
>Kann es sein, dass der watchdog extrem ungenau ist?
Ja. Siehe Datenblatt S.192.
MfG Spess
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
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.