PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : EEPROM schreiben, lesen



Ovoron
26.11.2009, 13:05
Hallo @ all,

Ich möchte eine Steuerung mit Display und entsprechender Menüführung programmieren.
Dieses Menü soll in verschiedenen Sprachen einprogrammiert werden.
Folgendes habe ich mir dazu ausgedacht.
Im Programm-flash wird mithilfe von String-Variablen immer die aktuell eingestellte Sprache ausgegeben.
Wenn ich dann die Sprache umstelle wird diesen Variablen ein anderer Text zugewiesen. Also aus dem EEPROM in den Flash kopiert.
Das sollte doch funktionieren oder ?
Nun meine fragen dazu, wie und wo programmiere ich die verschiedenen Texte ins EEPROM ? Kann ich das direkt in der Datei mit der Endung .eep wie müsste das aussehen ? Macht bzw. darf man dort überhaupt Werte direkt reinschreiben ? Das ist doch eine compilierte Datei oder ??

Ich hoffe das ich mein Problem verständlich beschrieben habe und freue mich auf Eure Lösungsansätze.

MfG

Ovoron

BurningWave
26.11.2009, 13:19
In deinem Fall kann man einfach alle Werte in den Flash schreiben und jeweils die passenden Anzeigen. Werte vom EEPROM in den Flash zu kopieren wäre Unsinn (wenn dann umgekehrt), da der EEPROM für z.B. Werte, die sich verändern können gedacht ist und nicht für Konstanten (außerdem kann man den Flash nicht ohne weiteres vom Programm selbst programmieren lassen, dazu braucht man einen Bootloader). Wenn du aber den EEPROM für etwas anderes benutzen willst google mal nach "avr +eeprom" oder so etwas in der Art. Aber eines kann ich schon sagen, dafür gibt es Funktionen, die man in den Quelltext einbaut, man schreibt nicht einfach irgendwas in die .eep Datei.

mfg

Hubert.G
26.11.2009, 13:30
Hier wird das ganz brauchbar beschrieben: www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM

Ovoron
26.11.2009, 15:02
Hallo,
OK verstanden. was speichert Ihr denn so im EEPROM ?
Ich kann doch auch nur mit dem flash Speicher arbeiten oder wo bietet es sich an mit dem EEPROM zu arbeiten ?

Greetz

Jaecko
26.11.2009, 16:26
Wenn die Sprachen bereits alle im Flash liegen, ist das kein Problem.
Aber erst reinkopieren geht nicht wirklich brauchbar. Wie gesagt kann man bei AVRs im Flash nur vom Bootloader aus rumschreiben. Die XE16x (Infineon) können das auch vom normalen Programm aus.

Im EEPROM liegen z.B. Daten wie Displayhelligkeit/Kontrast, Lautstärkeeinstellungen, Adressen von irgendwelchen I2C-Bus-Geräten, aufgetretene Fehler. Ein I2C-EEPROM kann z.B. auch zum Speichern von Temperaturdaten verwendet werden.

oberallgeier
26.11.2009, 16:41
... Ich kann doch auch nur mit dem flash Speicher arbeiten oder wo bietet es sich an mit dem EEPROM zu arbeiten ...Dein Projekt bzw. Deine Idee ist ja gut. Wenn man (mehrere) gleichbleibende Werte, in diesem Fall eben Strings hat, dann ist es sinnvoll das im EEPROM zu speichern. Ich mache es gelegentlich bei Textausgaben ähnlich, allerdings nur mit einer Sprache.

Im EEPROM lege ich solche Strings an:

// Das LCD hat 24 Zeichen: "1234567890123456";
unsigned char ABC1[] EEMEM = " BTtester 357M ";
unsigned char ABC2[] EEMEM = "ABC Vx93 21Nov09";
Das wird dann bei passender Gelegenheit an ein LCD ausgegeben so:
Line1(); // 1. Zeile
lcd_eep_string(ABC1);
Line2(); // 2. Zeile
lcd_eep_string(ABC2);
_delay_ms( 800);
Die LCD-Routinen bedienen das Display - klar. Ausgaben über andere Schnittstellen wären natürlich möglich.

Hubert.G
26.11.2009, 16:58
Im EEPROM speichert man auch wärend des Betriebs anfallende Daten die nach dem Abschalten wieder abgerufen werden.
Ein Beispiel dafür ist ein Datenlogger.
Oder wenn du über das Menü Variable ändern kannst, die erhalten werden sollen.

BurningWave
26.11.2009, 17:47
Ich speicher im EEPROM zum Beispiel Einstellungen und eine kleine Alarmanlage von mir hat z.B. gespeichert, wann ein Alarm ausgelöst wurde.
Zusammenfassend kann man sagen, dass im Flash das Programm und Konstanten, wie alle Texte (Strings) und Werte (einfache Zahlen) gespeichert werden. Der EEPROM ist für Variablen gedacht, die nach dem Trennen der Stromversorgung erhalten bleiben sollen und bei einem Datenlogger für Datensätze. Der dritte Speicher eines AVRs ist der SRAM, der Arbeitsspeicher. In ihm werden alle normalen Variablen, die du so definierst gespeichert.