Frage zum Watchdog

Gast #2644899
Hallo,

ich spiele gerade mit dem Watchdog meines mega1284p.
Beim Durchlesen des Wikiartikels ist mir folgender Satz aufgefallen:
1
Außerdem bietet der WD die einzige Möglichkeit einen beabsichtigten System-Reset (ein "richtiger Reset", kein "jmp 0x0000") ohne externe Beschaltung auszulösen

Was ist denn da der Unterschied?
Ok, schon klar. Bei einem "richtigen" Reset geschieht das über den RESET 
Interrupt.
Aber in der Praxis dürfte das (zumindest beim gcc) keinen Unterschied 
machen oder?

Denn ab Adresse 0 beginnt ja der StartUp Code.
Also das Löschen des Rams und Initialisieren des Stacks etc.
Es bleibt also keine Information des vorherigen Betriebs übrig, der uC 
sollte sich verhalten wie nach einem "Kaltstart" richtig?

(Ich bin in der ganzen Assembler Geschichte nicht wirklich bewandert. 
Bin letztens erschrocken dass mein leeres C Projekt bereits über 100 
Byte Flash frisst und wollte mir dann doch mal anschaun, was da genau 
passiert.)

Oder gibts in der Praxis doch noch Unterschiede zwischen jmp 0x0000 und 
dem RESET Interrupt?

Grüße,
der c-ler
Gast #2644916
Na ja - zumindest alles "Hardware einstellunge" wie Timer, I/O 
Konfiguration etc. bleiben beim Sprung nach 0x0000 so wie sie das 
Program vorher gesetzt hatten.
Und wenn Du noch einen Bootloader verwenden willst, dann wird der Sprung 
nach 0x0000 das Bootload Enable Bit auch nicht berücksichtigen.
Gast #2644919
Ich habe gerade kein Handbuch für den mega1284 hier, aber beim mega8 
steht unter "System Control and Reset" als erste Zeile:
"During Reset, all I/O Registers are set to their initial values, and 
the program starts execution from the Reset Vector."
Gast #2644979
soweit ich weiss wird die initialisierung der variablen (im ram) durch 
den startupcode nur gemacht wenn diese wirklich im sourcecode 
initialisiert werden ...

schlechtes beispiel:

uint8_t counter;

gutes beispiel

uint8_t counter = 0;

oder machen da die comiler immer eine initialisierung auf null ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.