www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zustand speichern vor ausschalten


Autor: blub (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Bin noch ein bischen grün hinter den Ohren was embedded programming 
betrifft.

Hab einen MC9S12XDP und Programmiere in c++.
Über einige Taster kann der Benutzer Einstellungen vornehmen.
Mein Problem ist nun das ich es dem Benutzer ermöglichen soll nach dem 
aus- und einschalten wieder mit den alten Einstellungen weiter zu 
arbeiten.

Hab mir gedacht das ich die Einstellungen im EEPROM oder im Stack 
speichere. mein Problem ist nur wie mache ich das.
Wie ist der C++ Befehl um etwas auf die Stack Adresse zu speichern.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
blub wrote:

> Wie ist der C++ Befehl um etwas auf die Stack Adresse zu speichern.

Da wird dir nur jemand helfen können, der exakt den gleichen
Compiler benutzt wie du auch. C++ weiss nichts von EEPROM oder
dergleichen, daher wird sowas immer durch Erweiterungen in Form
von vorgefertigten Funktionen oder speziellen Schlüsselwörter
erledigt. Unnötig zu sagen, dass sowas keinerlei Norm unterliegt
und daher ist das von Compiler zu Compiler unterschiedlich.

Alternativ kannst du natürlich mal deine Hilfe bzw. das Handbuch
durchstöbern. Da steht sicher auch was zu dem Thema drinnen.

Und nein: Am Stack willst du das sicher nicht speichern.

Autor: kommutator (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Üblicherweise legst Du Dir einfach ein struct/union z.B. 
"st_meineEinstellungen" an, in dem Du die Einstellungen ablegst die nach 
dem Start wiederhergestellt werden sollen, so dass alle Deine 
Einstellungen in einem zusammenhängenden (festen!!! nicht stack!!!) 
Speicherbereich liegen.

Beim Systemstart  liest Du dann die Daten immer aus dem EEPROM wieder in 
dieses struct/union und +wupp+ sind Deine Einstellungen 
wiederhergestellt.

Zum Abspeichern vor dem Ausschalten muss Dein System aber noch in der 
Lage sein, der SW mitzuteilen, dass gleich der Saft weggeht, bzw. gerade 
noch genug Zeit zum speichern im EEPROM bleibt.

Das Speichern selbst erledigst Du, indem Du dem EEPROM-Treiber/der 
Hardware mitteilst, dass Du sizeof(meineEinstellungen) Bytes ab 
RAM-Adresse *meineEinstellungen ins EEPROM ab Adresse 0x1234 schreiben 
willst. Für den S12X-Kern gibt es da mit Sicherheit schon etwas 
fertiges. Such mal nach s12x eeprom per google!

TIP: Hänge eine Prüfsumme an die Einstellungen an, die Du mit 
speicherst. Immer wenn die Prüfsumme nach dem Laden aus dem EEPROM nicht 
stimmt, belege die Einstellungen mit sinnvollen Default-Parametern.
Vertraue Parametern aus dem EEPROM nicht besonders (es sei denn, Du 
legst sie nach 2aus3 ab) - sprich: mache bei allen Parametern aus dem 
EEPROM plausibilitätskontrollen / wertebereich-checks. Hintergrund: Es 
kann Dir je nach Gestaltung der Prüsumme passieren, dass die Summe 
stimmt, aber die Daten trotzdem buggy sind.

Gruß,
C

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.