Frage zum Watchdog

Gast #2644899
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren