Mega32: Was geht beim Reset verloren?

Gast #314978
Lesenswert?

Moin,

gegeben ist eine Steuerung mit LCD, die als Dreingabe auch eine Uhr
sowie Stoppuhr enthält. Ab und an wird absichtlich über den Watchdog
ein Reset ausgeführt. Dazu die Frage, die ich mir weder mit dem
Datenblatt noch der Forumsuche eindeutig beantworten konnte:

Bleiben die Werte von im SRAM abgelegten Variablen bei dieser Art Reset
erhalten?

Mir geht es dabei in erster Linie um die Werte für Uhrzeit; diese soll
bei einem Reset nicht immer komplett neu gestellt werden müssen. Die
durch einen Reset verursachte geringe Abweichung ist dabei akzeptabel.


Danke, zaydo
Gast #314980
Lesenswert?

@Michael:

Bitte nicht pauschalisieren. Der SRAM Inhalt wird durch den
eigentlichen Resetvorgang NICHT verändert. Die "Änderungen" werden
wenn überhaupt von der Software vorgenommen (Initialisierung der
Variablen).
Gast #314981
Lesenswert?

Moin,

[...]
>Der SRAM Inhalt wird durch den eigentlichen Resetvorgang NICHT
verändert. Die "Änderungen" werden wenn überhaupt von der Software
vorgenommen (Initialisierung der Variablen).

Das hatte ich hier auch schon mal gelesen, als es um die Frage der
Initialisierung des SRAM auf feste Werte ging.

Das heisst also, dass wegen der Initialisierung der Variablen beim
Reset die Daten futsch sind, oder?
Dann werde ich die wohl vor dem Reset im EEPROM sichern müssen...


Danke, zaydo
Gast #314983
Lesenswert?

Im Datenblatt (wo auch sonst) gibt es eine Tabelle mit den Teilen des
Controllers, die von einem Reset beeinflusst werden.
Der Mega32 unterstützt ja verschiedene Arten des Resets (Power On, BOD,
Watchdog...). Für jede gibt es da eine Tabellenzeile...
Gast #314985
Lesenswert?

Moin Rahul,

>Im Datenblatt (wo auch sonst) gibt es eine Tabelle mit den Teilen des
Controllers, die von einem Reset beeinflusst werden.
>Der Mega32 unterstützt ja verschiedene Arten des Resets (Power On,
BOD,
Watchdog...). Für jede gibt es da eine Tabellenzeile...

Im Datenblatt steht kein Wort davon, was mit dem SRAM beim Reset
passiert...

zaydo
Gast #314987
Lesenswert?

Du kannst versuchen, dem Compiler vorzugaukeln, einen Teil des SRAMs
wären nicht vorhanden oder IOregister, der wird sich hüten, da was
reinzuschreiben.
Auf diese RAM-Adressen geifst Du direkt zu.

Welche Sprache verwendest Du?
Gast #314988
Lesenswert?

Bei GCC gibt es eine möglichkeit speicherbereiche nicht zu
initialisieren.
beim msp-gcc schaut das z.B. so aus:
uint8_t  minutes      noinit;
das macro ist so definiert:
#define noinit  _attribute_ ((section(".noinit")))

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