-         

Ergebnis 1 bis 6 von 6

Thema: AVR Watchdog

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.10.2005
    Alter
    64
    Beiträge
    157

    AVR Watchdog

    Anzeige

    Moin,

    ich bastele mir gerade einen Bootloader für einen ATtiny45 auf Basis von I2C. Wenn der Loader seinen Dienst getan hat, möchte einen Reset ausführen. Dies soll bewirken, dass alle Register in einen definierten Zustand versetzt werden.

    Unter http://www.rn-wissen.de/index.php/Av..._ausl.C3.B6sen wird der Watchdog-Reset empfohlen. Irgendwo anders habe ich gelesen (finde ich aber leider nicht wieder), dass bei einem Watchdog-Reset der Watchdog-Timer nicht abgeschaltet würde. Das führt dazu, dass der Watchdog nach seiner ersten Benutzung in schöner Regelmäßigkeit zuschlagen würde.

    a) Kann das jemand bestätigen?
    b) Wenn ja, wie schaltet man den Watchdog wieder ab?

    vg

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Also ich hab für nen ATMega8 schon mal nen Bootloader zusammengebaut, der auch nen Watchdog als Reset verwendet. Nach nem Reset wird da bei mir nichts extra abgeschaltet; Der Watchdog beisst nur 1x zu, nach dem Reset schläft er wieder. Kann aber sein, dass das bei den Tinys anders ist oder auch mit den Fuses zusammenhängt (Gibt ja auch manche AVRs, bei denen es ein Watchdog-Fuse gibt; d.h. der Watchdog läuft immer)
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    Wenn man das Watchdog-Fuse nicht setzt, dann müsste nach einem Reset (egal auf welche Art er ausgelöst wurde) der Watchdog-Timer deaktiviert sein. Also du musst auf jeden Fall nichts deaktivieren, bei mir funktioniert das auch so.

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von _R2D2
    Wenn man das Watchdog-Fuse nicht setzt, dann müsste nach einem Reset (egal auf welche Art er ausgelöst wurde) der Watchdog-Timer deaktiviert sein. Also du musst auf jeden Fall nichts deaktivieren, bei mir funktioniert das auch so.
    Das ist abhängig vom konkreten Controller. Bei neueren AVRs ist es definitiv anders. Da ist nach einem Watchdog-Reset der Watchdog weiterhin aktiv, unabhängig von der Fuse. Und zwar aus diesem Grund:
    Zitat Zitat von Datenblatt
    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.
    PS: Und der ATtiny45 zählt zu diesen "neueren AVRs".
    MfG
    Stefan

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    Das ist abhängig vom konkreten Controller. Bei neueren AVRs ist es definitiv anders. Da ist nach einem Watchdog-Reset der Watchdog weiterhin aktiv, unabhängig von der Fuse.
    Bei einem Reset wird doch jedes Register zurückgesetzt?!

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von _R2D2
    Bei einem Reset wird doch jedes Register zurückgesetzt?!
    Richtig. Ist aber irrelevant. Steht doch in dem Datenblatt-Zitat, warum.
    WDE wird von WDRF "überstimmt". Oder anders ausgedrückt: wenn der letzte Reset ein Watchdog-Reset war (WDRF ist gesetzt), dann ist der Watchdog weiterhin aktiv.
    MfG
    Stefan

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •