www.mikrocontroller.net

Forum: Compiler & IDEs Watchdog: Wieso beim Programmstart ausschalten?


Autor: Reto K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Auf meinem µC (Tiny261) möchte ich den Watchdog benutzen.
in der Library Referenz 
(http://www.nongnu.org/avr-libc/user-manual/group__...)
finde ich den Hinweis, dass bei jedem AVR, der Interrupts erzeugen kann, 
der Watchdog beim Programmstart ausgeschaltet werden muss. Wieso ist 
dies nötig?
Danke! Reto

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bisher habe ich in Programmen, die den Watchdog nicht benutzen, ihn auch 
nie explizit ausgeschaltet.

Im Datenblatt steht für WDE allerdings ein X als initial Value.
Genaue Informationen, wann und ob überhaupt eine Resetquelle das WDE 
löscht, konnte ich nirgends bei Atmel finden.

Schreib dochmal an Atmel, die sollen das endlich mal sagen.


Was ich gemerkt habe, das WDE-Bit wird nicht bei einem Watchdogreset 
oder externen Reset gelöscht.


Peter

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:

> Schreib dochmal an Atmel, die sollen das endlich mal sagen.

Lies doch mal das Datenblatt genau, sie haben das gesagt.

Die Doku der avr-libc spiegelt das nur wider, was im Datenblatt schon
steht.

OK, ich gebe zu, dass ich es beim Umstieg von ATmega128 auf ATmega1281
seinerzeit auch auf die harte Tour lernen musste...  Wer liest sich
schon Datenblätter so genau durch?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch wrote:
> Lies doch mal das Datenblatt genau, sie haben das gesagt.

Dann sag mir doch bitte, welches Datenblatt, welche Version, welche 
Seite, welche Zeile oder Abbildung.

Ich kann nichts finden außer diesem blöden "Initial Value = X".
Und das ist ja wohl unter aller Sau.

Daraus könnte man höchstens indirekt schlußfolgern, das Bit ist immer 
rein zufällig.

Ich vermute mal, das Verhalten ist bei ATtiny13 ... ATmega2561 
identisch.
Dann gehörts aber auch in jedes dieser Datenblätter eindeutig 
beschrieben und nicht durch die Blume.


Atmel:

"WDE is overridden by WDRF in MCUSR. This means that WDE is always set 
when
WDRF is set. To clear WDE, WDRF must be cleared first. This feature 
ensures multiple
resets during conditions causing failure, and a safe start-up after the 
failure."

Das sagt nur aus, daß es nach einem Watchdogreset gesetzt ist, aber mehr 
nicht.
Daß es auch nach einem externen Reset gesetzt bleibt, habe ich nur durch 
Probieren gemerkt (beim ATmega168).
Ich hab die Watchdog-Fuse ein- und ausgeschaltet, aber trotzdem blieb 
der Watchdog an. Erst nach Saft weg, war er aus.

Ist aber blöd, wenn man erst alles selber ausprobieren muß, weil es 
nicht im Datenblatt steht.
Brownout habe ich noch nicht probiert.
Probieren heißt außerdem nicht, daß das Verhalten immer so ist.


Peter

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:

> Dann sag mir doch bitte, welches Datenblatt, welche Version, welche
> Seite, welche Zeile oder Abbildung.

Das hängt natürlich vom konkreten Controller ab.

> Das sagt nur aus, daß es nach einem Watchdogreset gesetzt ist, aber mehr
> nicht.

Mehr ist auch nicht.

> Daß es auch nach einem externen Reset gesetzt bleibt, habe ich nur durch
> Probieren gemerkt (beim ATmega168).

Nur, wenn es zuvor durch einen Watchdog-Reset bereits gesetzt war.

> Ich hab die Watchdog-Fuse ein- und ausgeschaltet, aber trotzdem blieb
> der Watchdog an. Erst nach Saft weg, war er aus.

Richtig.  Ist, wenn man genau drüber nachdenkt, ein security feature.

> Ist aber blöd, wenn man erst alles selber ausprobieren muß, weil es
> nicht im Datenblatt steht.

Doch, wie du eben zitiert hast.  Es bleibt gesetzt, bis es explizit
(manuell!) gelöscht wird.

> Probieren heißt außerdem nicht, daß das Verhalten immer so ist.

Es ist immer so, das ist offensichtlich so gewollt.  Alle *RF-Bits
akkumulieren in MCUSR, bis man sie manuell löscht.

PORF ist logischerweise eine Ausnahme: wenn man die Betriebsspannung
soeben erst zugeschaltet hat, und nicht in dem Moment bereits eine
andere Reset-Quelle aktiv war, dann ist PORF das einzige Bit, was
gesetzt ist.

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Ich hab die Watchdog-Fuse ein- und ausgeschaltet, aber trotzdem blieb
>> der Watchdog an. Erst nach Saft weg, war er aus.

>Richtig.  Ist, wenn man genau drüber nachdenkt, ein security feature.

>> Ist aber blöd, wenn man erst alles selber ausprobieren muß, weil es
>> nicht im Datenblatt steht.

>Doch, wie du eben zitiert hast.  Es bleibt gesetzt, bis es explizit
>(manuell!) gelöscht wird.

Nein ist nicht richtig. Man kann es dann nicht manuell löschen.
Also:

- AVR unter Strom setzen
- WDTON Fuse setzen, nun kann man WDE nicht mehr löschen, ist auch so 
beabsichtigt
- WDTON Fuse löschen, nun kann man WDE erst dann manuell löschen/setzen 
wenn der AVR einmal ohne Saft war. Ein RESET, ISP, DebugWire-Reset alles 
hilft nicht. Nach dem Löschen der WDTON Fuse muß der AVR erstmal ohne 
Strom sein damit man das WDE auch wieder manuell löschen/setzen kann 
unabhängig vom aktuellen Wert der WDTON Fuse.

Das steht so in keinem der Datenblätter der neueren AVRs, ich habe sie 
fast alle danach durchsucht. HW war ATtiny461 und ATtiny45.

Ansich ist für mich ja eine Logik und Grund dahinter ersichtlich, aber 
es sollte auch explizit in den Datenblättern kommuniziert werden.

Ich dachte nämlich das ich meinen AVR teilweise totgeflasht habe und es 
dauerte 6 Stunden bis ich durch Zufall bemerkt habe das nach dem 
Abschalten der Stromzufuhr alles wieder so funktionierte wie angenommen.
Man sitzt vor'm AVR Studio, ändert die WDTON Fuse wie ein Blödman, 
verzweifelt, stutzt seinen Sourcecode bis nur noch der WatchDog-Code 
drinnen ist, probiert jede Art der unteschiedlichen Reihenfolgen um das 
fu.k WDE Bit endlich auf 0 zu bekommen, und das Mistvieh verhält sich 
denoch weiterhin so als wäre die WDTON Fuse gesetzt. Wer kommt schon auf 
die Idee die Stromzufuhr zu unterbrechen ?

Gruß Hagen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.