Watchdog reagiert nicht auf Absturz

OP #2719448
Hallo

Bei meiner H-Brücke für das Projekt wollte ich zur sicherheit den 
Watchdog aktivieren, da es immer wieder mal vorkommt das sich der Atmega 
aufhängt.
Das Problem ist das sich der Atmega nicht komplett aufhängt sondern 
manchmal einfach nur die Richtungs-LEDs nicht mehr schaltet. Daher 
wollte ich den Watchdog verwenden.
1
/*
2
 * Motor_0_2.c
3
 *
4
 * Created: 12.06.2012 07:33:59
5
 *  Author: Christoph
6
 //LINKS
7
 */ 
8

9
#include <avr/io.h>
10
#include <Aura/aura_motor_lib_0_2.h>
11
#include <avr/wdt.h>
12

13
int main(void)
14
{
15
  CLOCK_INIT();
16
  PSC2_Init();
17
  INIT_SLAVE_2();
18
  
19
    while(1)
20
    {
21
    
22
    wdt_enable(WDTO_120MS);
23
    
24
     PSC2();
25
     READ_SPI_TO_RAM();
26
     ON_OFF();
27
     Regelung_Links();
28
     Richtung();
29
     wdt_reset();   
30
     
31
    }
32
}

so weit so gut.
Wenn sich der Atmega einmal aufhängt hilft auch der Reset Knopf nicht 
mehr. Ich muss komplett den Atmega vom Strom nehmen um ihn neu zu 
starten.
Wieso? Auserdem löst der Watchdog nicht immer aus. Teilweise gehen die 
LEDs nicht mehr aber der Atmega wird nicht resetet.

Schönen Abend
Christoph
Wenn Reset nichts nützt, dann ist es egal ob der WDT anspricht, der 
macht auch nichts anderes. Dann hast du ein ernstes Hardware-Problem.

... schrieb:
> würde ich aus der Schleife nehmen, gut möglich dass da der Zähler
> zurückgesetzt wird.

Stimmt zwar, ist aber egal, denn das passiert in wdt_reset ebenfalls. 
Der WDT soll zubeissen wenn der AVR die Schleife nicht mehr ausführt.
OP
aber wieso geht der Reset Knopf nicht mehr sobald ich den Watchdog 
verwende?
wenn ich z.B wdt_reset(); weglasse stoppt der Atmega und lässt sich erst 
durch entfernen der Spannung reaktivieren.
er müsste sich aber doch immer selber reseten.

Falls es Hilft ich verwende einen AT90PWM3B
Wenn du den Watchdog nicht haben willst, dann programmiere ihn nicht. 
Wirksam wird das am einfachsten durch Strom weg nach dieser Änderung. 
Aber wirklich weg, denn der Controller merkt sich das evtl. auch noch 
bei ein paar Zehntel Volt.

Dass der bei neueren Controllern durch einfachen Reset nicht deaktiviert 
wird, sondern nur durch Powerup, ist m.E. volle Absicht. Ansonsten 
entsteht ein kritisches Fenster zwischen WDT-Auslösung und 
Neuaktivierung, in dem ein Hänger endgültig ist.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.