mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega168 hängt sich nach Watchdog Reset auf


Autor: Sören Dierking (tweety955)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Habe folgendes Problem: Der Microcontroller soll einen Watchdogreset 
auslösen, sobald Port C Pin 6 auf low liegt. Das klappt soweit auch, 
doch leider nur das eine mal. Nach dem Reset kommt es mir vor, als ob 
der uC irgendwie im Wald steht. An Pin 1 von Port B erkenne ich, ob der 
Reset stattgefunden hat oder nicht. Alles variablen, die ich benutze 
werden initialisiert. Fuses habe ich angehängt.
Habe leider keine Idee mehr, jemand von euch ?
Achso: Springen zu Adresse 0x0000 klappt ebenso wenig und führt auch zum 
Absturz!

Funktionen:

void initWatchdog()
  {
    cli();
    wdt_reset();
    WDTCSR |= (1<<WDCE) | (1<<WDE);
    WDTCSR  = (1<<WDE) | (1<<WDP1);
    sei();
  }

void disableWatchdog()
  {
  cli();
  wdt_reset();
  MCUSR &= ~(1<<WDRF);
  WDTCSR |= (1<<WDCE) | (1<<WDE);
  WDTCSR = 0x00;
  }
------------------------------------------------------------------------ 
---
Endlosschleife:

...
disableWatchdog();
sbi(PORTB, 1);
while(1)
{
if(bit_is_clear(PINC, 6) !=0)
  {
    cbi(PORTB, 1);
    initWatchdog();
    while(bit_is_clear(PINC, 6) !=0)
       {
       wdt_reset();
       }
    while(1);
  }
}

Autor: Sören Dierking (tweety955)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls jemdand einen funktionierenden Code mit Watchdog für den AtMega168 
hat, wäre mir damit wahrscheinlich auch schon geholfen !

Autor: Torsten S. (tse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kenn ich, der WDT schlägt erneut zu.

Er muß so früh wie möglich deaktiviert werden. Schau mal in der avr-libc 
Doku unter <avr/wdt.h> nach.

Autor: Sören Dierking (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok...werde ich morgen mal nachschauen, kann ich mir aber kaum 
vorstellen, da ich ihn ja als allererstes im Programm deaktiviere. Aber 
ein Ansatzpunkt ist es natürlich. Es würde allerdings nicht erklären, 
warum Sprung zu 0x0000 auch nicht funktioniert !

Autor: Sören Dierking (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nutze jetzt auch die original Funktionen der wdt.h , leider auch ohne 
Besserung !

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.