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?
evtl mit .noinit http://www.nongnu.org/avr-libc/user-manual/mem_sections.html Da hier aber Datenmüll drin steht, musst du unbedingt irgendwie fest stellen ob ein Poweron-Reset ausgeführt wurde (Steht z.B. im MCUCSR) Gruß Roland
Ä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.
Wieso kannst du deine Daten nicht ins RAM sichern. Gibt es da einen speziellen Grund?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.