Variable im während der Laufzeit in Flash speichern?

Gast #212644
Lesenswert?

Hallo zusammen,

ich möchte eine Wert der einmalig ermittelt wird so abspeichern, das
diese auch nach der Stromabschaltung bei einem Neustart vorhanden ist.
Die Anwendung ist für einen resistiven Touchscreen, der beim ersten
einschalten Kalibriert wird. Diese Werte sollen auch nach einer
Stromabschaltung für immer Vorhanden sein.

Benötige ich dafür extra speicher, oder kann ich diese Werte in den
Flash des Mikrocontrollers speicher ohne ihn komplett neu zu Flashen?

Gruß
Kevin
Gast #212645
Lesenswert?

kommt auf den Controller an - um welchen gehts denn? Manche können es,
andere nicht.
Ansonsten ist es einfacher, solche Sachen im EEPROM zu speichern (falls
vorhanden, auch da die Frage nach dem Typ).
Gast #212646
Lesenswert?

Hi crazy horse,

ich mache das mit einem ATmega64 oder ATmega128 von Atmel.
Wenn das bei diesen nicht funktioniert? Wie geht das mit dem EEPROM?
Wie schliesse ich den an? Benötigt man dafür eine spezielle
Schnittstelle?

Wie du siehst, bin ich erst an den Anfängen mit der Entwicklung von
Mikrocontrollergestützten Systemen.

Kevin
Gast #212648
Lesenswert?

Hi crazy horse,

danke für deine Antwort, habe eben versehentlich den Beitrag nochmal
Abgeschickt.
Wie Programmiere ich das, so das diese Werte ins EEPROM gespeichert
werden?
Ich benutze den CodeVision AVR Compiler (C-Compiler).
Gast #212650
Lesenswert?

Deklaration:
eeprom unsigned int calibration=1000;    //default z.B. 1000

im Programm:

calibration=1234;   //mit Konstante beschreiben
oder
calibration=result;   //mit Variablenwert beschreiben

Wird also wie eine ganz normale Variable gehandhabt.
Sind die Daten ganz wichtig, kannst du den Wert auch mehrfach speichern
und dann den gültigen Wert herauspicken. Bei den Megas hatte ich noch
keine Probleme mit dem EEPROM, bei den 90ern  war das an der
Tagesordnung.
Gast #480089
Lesenswert?

aus aktuellem Anlass nochmal aufgewärmt...

Wie müsste die Deklaration in einer Subroutine dann aussehen?

extern eeprom unsigned int calibration;   ?

Frage 2:
Woher weiss der Compiler dann wo im EEProm er die Variable ablegen soll 
oder beginnt er einfach bei 0x0000 und merkt sich das für die nächste 
Deklaration?

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