Forum: Mikrocontroller und Digitale Elektronik Watchdog reagiert nicht auf Absturz


von Christoph H. (christoph_b)


Lesenswert?

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

von ... (Gast)


Lesenswert?

>wdt_enable(WDTO_120MS);
würde ich aus der Schleife nehmen, gut möglich dass da der Zähler 
zurückgesetzt wird.

von (prx) A. K. (prx)


Lesenswert?

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.

von Christoph H. (christoph_b)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

Also was jetzt? Dieser Beschreibung nach lässt sich der AVR mit und ohne 
WDT nicht per Reset wiedererwecken.

Hast du den Brownout-Detector aktiviert?

Schaltplan + Layout wären relevant.

von ... (Gast)


Lesenswert?

A. K. schrieb:
> 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.

Wo du Recht hast... Ist schon spät.

von Christoph H. (christoph_b)


Lesenswert?

wenn der WD deaktiviert ist geht der Reset Knopf.
Brown Out ist deaktiviert.

von Christoph H. (christoph_b)


Lesenswert?

Habe es wie in diesem Thread

Beitrag "Bug in ATtiny2313?"
Doch ein BUG oder?

von (prx) A. K. (prx)


Lesenswert?

Christoph B. schrieb:
> Brown Out ist deaktiviert.

Solltest du unbedingt aktivieren.

von (prx) A. K. (prx)


Lesenswert?

Christoph B. schrieb:
> Beitrag "Bug in ATtiny2313?"
> Doch ein BUG oder?

Grad quergelesen. Sehe dort auf die Schnelle keinen Bug.

von Christoph H. (christoph_b)


Lesenswert?

wenn ich das Richtig verstehe muss ich das WDRF zurücksetzen und gleich 
den WD neu einstellen.

WDRF: Watchdog Reset Flag
This bit is set if a Watchdog Reset occurs. The bit is reset by a 
Power-on Reset, or by writing a
logic zero to the flag.

von (prx) A. K. (prx)


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.