www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit dem Watchdog beim Tiny24


Autor: Marin H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Problem mit dem Watchdog meines ATTiny24.
Folgender Code:
#include... // kürze ich gerade mal

int main ( void ) {
  
  //uint8_t mcusr_mirror = MCUSR;
  wdt_enable(WDTO_120MS);
  wdt_reset();
  led_an();
  while(1);
}

diese Zeilen sollten doch den Watchdog aktivieren und nach 120ms einen 
reset auslösen.
Nachprüfen/-messen kann ich das an der LED.

Nun so wie oben klappts, dokumentiere ich allerdings die erste Zeile 
nicht aus dann ist die LED zyklisch 70ms an und 70ms aus?!?! und genau 
hier verstehe ichs nicht?!

Ich habe festgestellt, dass die LED nurnoch wenige µs aus ist wenn ich 
die Einschwingzeit des Oszillators auf 0ms "fuse" und dass sie 4,6ms aus 
ist bei 4ms Einschwingzeit. 70ms LED-aus-Zeit kommen daher irgendwie von 
den eingestellten 64ms Einschwingzeit.
Nur die 70ms an sind mir ein Rätsel, ich kann auch
wdt_enable(WDTO_60MS);
oder
wdt_enable(WDTO_30MS);
einstellen und es ändert sich nix an den 70ms LED-an-Zeit solange die 
erste Zeile nicht ausdokumentiert ist?!

Warum? was ist da falsch? ich will doch nur die Reset-Ursache prüfen!?

Vielen Dank schonmal
lg Martin

Autor: Marin H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: Stelle ich den Watchdog-timout auf 2 Sekunden klappts auch... 
nur ist mir das leider zu lang!
allerdings bin ich jetzt endgültig verwirrt. Warum tut er das so?!

Autor: Martin H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es hat keiner eine Idee? Schade...

Autor: Sauger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marin H. schrieb:
> Folgender Code:
> #include... // kürze ich gerade mal

keine gute Idee, unsere Kristallkugeln sind ausgelastet :-)

> Warum? was ist da falsch? ich will doch nur die Reset-Ursache prüfen!?
das Register MCUSR ist beim Eintritt in die main() nicht mehr gültig.

mach dich mal über:
void _attribute_ ((naked, section(".init0"))) KommeVorMain (void)
schlau

MfG

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marin H. schrieb:
> und es ändert sich nix an den 70ms LED-an-Zeit solange die
> erste Zeile nicht ausdokumentiert ist?!

Also diese Zeile:
#include... // kürze ich gerade mal

Ich werd aus Deinem Post jedenfalls nicht schlau.

Je genauer die Angaben, umso leichter kriegt man Hilfe.
Bezieht man sich auf Zeilennnummern, muß man den compilierbaren 
Quelltext als Anhang senden.
Wie soll sonst jemand die Zeilen zuordnen?

Hat man 2 unterschiedliche Versionen, dann entweder beide Files oder:
#if 0
// V1
#else
// V2
#endif

Compilierbare Anhänge sind (fast) immer besser als Schnipselchen.


Peter

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.