mikrocontroller.net

Forum: Compiler & IDEs ATMEGA wer löst Watchdog-Reset aus


Autor: Martin Raffelsieper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Preisrätsel:

Eine SW auf einem ATmega..(z.b. 64) läuft so vor sich hin. Plötzlich
kommt ein Watchdog-Reset, erkennbar an dem entsprechenden Bit im
MCUCSR-Register.

We kann man herauskriegen, in welcher Endlosschleife o.ä. sich der
Prozessor befunden hat, als der WD zugeschlagen hat???


Gruß Martin

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da es ein Reset ist, nur Du selbst.  Du könntest bestenfalls sehr früh
in der Initialisierung (.init1) noch die alten Stack- und Framepointer
retten und dann anhand des Stackinhaltes gucken, ob Du Dir einen Reim
drauf machen kannst, aber der PC-Stand ist komplett weg nach einem
Reset.

Autor: Martin Raffelsieper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
d.h.
wenn die CPU bei Adresse 0 loslegt, sind die Stackpointer noch auf dem
zustand, die sie beim Reset hatten?

wenn ja, dann bräuchte ich mich ja nur vor dem C-Startup-Code
einzuklinken?

Autor: Martin Raffelsieper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo kann ich denn nachlesen, welche Register für Stack, etc verwendet
sind?

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, nö, laut Doku beginnt der Stackpointer nach einem Reset bei 0,
das geht also wohl doch nicht.

Der Framepointer ist das Y-Register(paar).  Sieh Dir am besten mal im
generierten Assemblercode den Aufbau der Stackframes an.  Letztlich
wird im aktuellen Stackframe auch der letzte Stackpointer mit
hinterlegt, darüber könntest Du das ermitteln (und auch den zuletzt
auf dem Stack hinterlegten Rücksprung-PC).

Setzt natürlich alles voraus, daß es nicht in main() passiert, da
main() keinen kompletten Stackframe anlegt (weil davon ja nie wirlich
zurückgekehrt werden muß).

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.