Pages: [1]   Go Down
Author Topic: Watchdog  (Read 1479 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,

gibts im Arduino einen Watchdog?

Hab viele Topics mit Watchdog im Forum gefunden. Schlau geworden bin ich jedoch nicht.
 smiley-confuse
Logged

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1144
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja es gibt eine Watchdog Teil des AVR-GCC

In deinem Code musst du dann folgende Lib einbinden

Code:
#include <avr/wdt.h>

void setup(){
 wdt_enable(WDTO_2S); // stellt die Watchdog auf 2s
 }

void loop(){
wdt_reset();  //musst du einemal in der loop ausführen
}

Der wdt_reset() setzt die WDT zurück, wenn in dem Beispiel oben 2s der wdt_reset() nicht kommt resetet er den ATMEGA.
Aber Achtung zu kurze Zeiten machen ATmega unprogarmierbar wegen dem Bootloader.
Also Auchtung man muss wissen was man tut!!!


Hier Infos:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_Watchdog
Da habe ich es hier.

Gruß
Der Dani
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bekomm' ich auch irgendwie raus. ob ich aus dem Kaltstart-Reset komme oder aus dem Watchdog?

Beim Watchdog-Reset muss ich die Hardware anders konfigurieren.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21861
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bekomm' ich auch irgendwie raus. ob ich aus dem Kaltstart-Reset komme oder aus dem Watchdog?

Beim Watchdog-Reset muss ich die Hardware anders konfigurieren.
Ciao
La RAM perde i dati se non é alimentato. Dopo un reset da alimentato i dati dovrebbero rimanere nella RAM ma vengono resettati tutti i registri.
Ciao Uwe
Logged

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2338
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao
La RAM perde i dati se non é alimentato. Dopo un reset da alimentato i dati dovrebbero rimanere nella RAM ma vengono resettati tutti i registri.
Ciao Uwe
Hätte ich nicht besser zusammenfassen können, kann nämlich kein Italienisch! smiley-grin Geht das auch auf in einer uns geläufigeren Sprache? smiley-wink
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1144
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Hallo
RAM Daten verliert, wenn es nicht eingeschaltet ist. Nach einem Reset sollten bereitgestellt von den Daten im RAM, sondern setzt alle Register bleiben.
Hallo Uwe
sagt der Google Translator.
Gruß
Der Dani
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3496
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Jein, man kann das rausbekommen, ABER: es gibt Bootloader die das nachhaltig verhindern. Bootloader in die Tonne treten und es geht. Ich hatte das mal hier http://blog.blinkenlight.net/experiments/counting-resets/ breitgetreten.
Logged

Check out my experiments http://blog.blinkenlight.net

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21861
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao
La RAM perde i dati se non é alimentato. Dopo un reset da alimentato i dati dovrebbero rimanere nella RAM ma vengono resettati tutti i registri.
Ciao Uwe
Entschuldigt, das passiert wenn man nicht aufpaßt und den ganzen Tag 2 Sprachen spricht und dauernd wechselt je nachdem mit wem man spricht, und dann einfach eine Sprache benutzt ohne lang nachzudenken. (eigentlich spricht man 2 Sprachen (Italienisch und Dialekt) und schreibt eine dieser und eine Dritte (Italienisch und  Hochsprache)
Also ofizielle Deutsche Version:
Quote
Das RAM verliert die Daten, wenn es nicht mit Spannung versorgt ist. Nach einem Reset ohne Spannungsunterbrechung müßten die Daten im RAM noch vorhanden sein. Die Register des Controllers werden aber alle resetiert.  
@Udo
In Deinem Beispiel wird da nicht ein Wert im EEprom zwischengespeichert? Da erkennt man nicht ob es ein Einschaltreset ist oder der Rest durch einen Watchdog oder Taster ausgelöst wurde.

Das einzige das mir einfällt ist eine RAM-Speicherzelle zu kontrollieren ob ein bestimmter Wert drin ist. Falls er nicht drin ist, dann ist es ein Einschaltreset und der gesuchte Wert wird in die Speicherstelle geschrieben. Ist der Wert in der Speicherstelle dann war es ein Reset ohne Spannungänderung. Das fuktioniert nur wenn die Spannungsunterbrechung lang genug war damit jegliche Ladung aus den 8 Bit Speicherstellen abgeflossen ist und das Byte so nicht einen Vorzugs-Wert annimmt. Man kann auch ein externes RAm verwenden oder zB ein FF setzen das eine Einschaltreset zum löschen hat (RC-Glied) Diese Lösungen verlangen zusötzliche HW und verbrauchen einige Pins.

Grüße Uwe
 
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Da habe ich jetzt was gelernt zum Initialisieren des RAM:

Code:
int a;
int b=0;
int c=1;

void setup() {
Serial.begin (9600);
Serial.print ( a); Serial.write(' ');
Serial.print ( b); Serial.write(' ');
Serial.println ( c);
}

void loop() {
  b++;
  delay(1000);
  Serial.print ( ++a); Serial.write(' '); Serial.println(b);
}

Hier wird auch die Variable a bei jedem Reset initialisiert!
Die erste Ausgabe ist also immer
0 0 1
Egal ob mit oder ohne  Bootloader.

Dies gilt aber nicht immer für eine Variable, die so definiert ist:
Code:
int rc __attribute__ ((section (".noinit")));

Die vielen Klammern sind erforderlich, der Name  ".noinit" ist auch vorgegeben ->
http://nongnu.org/avr-libc/user-manual/mem_sections.html 

"Thank you for bringing this to my attention"
Logged

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3496
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@uwe: wo bei

Code:
uint8_t reset_counter __attribute__ ((section (".noinit")));
void setup() {
    ++reset_counter;
}

wir Deiner Meinung nach auf das EEPROM zugegriffen?
Logged

Check out my experiments http://blog.blinkenlight.net

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe das auch so verstanden, dass in http://blog.blinkenlight.net/experiments/counting-resets/ eher eprom als Speicher zum Reset-Zählen empohlen wird.
Quote
So I needed some other place to put my counter through resets. After trying almost any register I figured that EEPROM will be the only reliable means

Ist aber auch eine andere Aufgabenstellung.
So genau werden deine Artikel gelesen, Udo smiley-wink

Danke übrigens ...
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21861
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@uwe: wo bei

Code:
uint8_t reset_counter __attribute__ ((section (".noinit")));
void setup() {
    ++reset_counter;
}

wir Deiner Meinung nach auf das EEPROM zugegriffen?
Ist das eine Gewissensfrage?  smiley-wink smiley-wink
Da aus praktischer Erfahrung der Zähler in diesem Sketch auch beim Ausschalten erhalten bleibt bzw hinaufgezählt wird habe ich den Code nicht weiter analysiert.
mea culpa. smiley-confuse
Grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: