SoftReset mit goto *((void**) 0)

Gast #331463
Lesenswert?

Tach Leute,

ich brauche in meinem Programm einen Software-Reset. Einen WatchDog
kann ich nicht nehmen, da am Atmel noch ein DSP mit einer in Software
realisierten RS232 hängt. Geht der Watchdog-Reset los, scheint es die
Out/Input-Pins in einen Tristate zu bewegen und meine RS232
interpretiert das als nee Lowflanke eines zu empfangenen Bits.

Jetzt mache ich das über ein Anspringen des Resets mit goto *((void**)
0).

ich muss aber irgendwie Daten retten und möchte die nicht ins ram
schreiben.

Gibt es irgendwelche Register die nicht reinitialisiert werden, oder
kann ich dem gcc mitteilen das der ein paar Speicherbereiche unberührt
läßt?
Gast #331466
Lesenswert?

Ähem, mal ohne Quatsch: jeder echte Reset, ob Watchdog, Power-Up oder
Brown-Out initialisiert die I/O Register, also auch die Ports - das ist
beabsichtigt und auch unvermeidlich. Wenn Du nur an den Anfang Deines
Programms springen willst, mach das und initialisiere dann per Hand,
was initialisiert werden muß. Oder spendier den kritischen Pins am DSP
externe Pullups, die bei TriState die Leitungen auf High-Pegel halten.
Gast #331468
Lesenswert?

oh, klasse. das MCUCSR - Register kannte ich nicht. Bin, was den Atmel
angeht halt noch im "Beginner" - Status. Wenn ich da das PORF abfrage
reicht mir das schon.

Besten dank an alle und bis denn,

Glorfindel

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