Forum: Mikrocontroller und Digitale Elektronik Variable im während der Laufzeit in Flash speichern?


von Kevin (Gast)


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

von crazy horse (Gast)


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).

von Kevin (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mega64 und Mega128 enthalten bereits ein EEPROM (zusätzlich zum
Flash-ROM). Das muss nicht extern angeschlossen werden.

von Kevin (Gast)


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).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zwar ein anderer Compiler, aber trotzdem:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM

von crazy horse (Gast)


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.

von Kevin (Gast)


Lesenswert?

Danke für eure Hilfe. Ich werde mich in dieses Thema nochmals einlesen
aber jetzt weis ich wenigstens nach was ich schauen muss und wie das
Funktioniert.

Gruß Kevin

von cerberus (Gast)


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?

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.