Forum: Mikrocontroller und Digitale Elektronik Variable nach WDT-Reset auslesen (avr 32 Uc3c)


von ewigergert (Gast)


Lesenswert?

Hallo,


ich suche nach einer Möglichkeit eine Variable (2 Bit reichen) vor einem 
WDT-Reset zu schreiben und nach einem WDT-Reset auszulesen.

Diese soll jedoch nicht im Flash gespeichert werden.
Leider sieht es so aus, als würde der WDT-Reset den RAM leeren und ich 
finde keine Möglichkeit diesen Vorgang zu umgehen, denn dann könnte ich 
sie an eine feste Adresse schreiben und nach dem Reset eben von dort 
lesen.
Hat jemand eine Idee?

(Mikrocontroller: Uc3c0512c)

Viele Grüße
Gert
von Leo B. (luigi)


Lesenswert?

ganz billig: 2 Kondensatoren, 2 Pins...
von Josef D. (jogedua)


Lesenswert?

von ewigergert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

erstmal vielen Dank für die schnellen Antworten.
Die Software-lösung ist für mich komfortabler.
Nur war in meinem Linker-Script die "noinit" Sektion nicht definiert.

Also habe ich (unter Zuhilfenahme der Forenbeiträge und der appnote 
doc32158.pdf von atmel) folgende noinit sektion definiert.


1. .noinit (NOLOAD):
2. {
3.   PROVIDE (__noinit_start = .) ;
4.   *(.noinit*)
5.   PROVIDE (__noinit_end = .) ;
6. }  > bss

Erklärung:
1. Zeile: -Die Sektion heisst noinit. Man kann sie auch anders nennen 
nur muss man dann nachher die Variable im C-Code anders deklarieren.
Bei mir sieht das dann so aus:
uint8_t variablennamenachwahl _attribute_ ((section (".noinit")));
- Das NOLOAD attribute ist dafür zuständig, dass der Speicherbereic 
nicht bei einem Reset (zumindest bei einem Software-Reset) gelöscht 
wird.
3. Zeile - 5. Zeile: Habe ich aus einem Forenbeitrag rauskopiert. Ich 
bin mir nicht sicher was da abläuft, aber es scheint zu funktionieren.

6. Zeile: da ich die .noinit Sektion in den SRAM hinter die bss sektion 
legen will, gebe ich das hier einfach an mit dem größer-zeichen an.

Im Anhang die komplette lds-File meines Uc3c0512c. Die letze Sektion ist 
die, die ich angelegt habe.

Velen Dank für die Hilfe und viele Grüße
Gert
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
Noch kein Account? Hier anmelden.