Forum: Mikrocontroller und Digitale Elektronik Doofe Frage : Wozu gibt es das EEPROM?


von Tobi L. (derarzt)


Lesenswert?

Ich wusste bis eben nicht wozu es das EEPROM dient da ich meine 
Programme immer ins Flash geschrieben habe. Ich habe mir dann die 
Erklärung dazu im forum angeschaut

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Speicher

muss allerdings sagen dass es für mich kein befriedigendes ergebnis gab, 
denn wenn das EEPROm nur ein "datenhaltungsspeicher" ist warum gibt es 
Ihn dann? Ich kann meine daten doch genauso in das FLash schreiben und 
hab höchstwahrscheinlich eine bessere Zugriffszeit als wenn ich  über 
das EEPROM gehe oder?

LG

von holger (Gast)


Lesenswert?

>Ich kann meine daten doch genauso in das FLash schreiben

Das vergiss mal gleich wieder. Zur Laufzeit wird das
schwierig. EEPROMS können auch ca. 10mal öfter beschrieben
werden als Flash.

von Markus R. (maggus)


Lesenswert?

Tobi L. schrieb:
> Ich kann meine daten doch genauso in das FLash schreiben...

Aber nicht zur Laufzeit.

von hp-freund (Gast)


Lesenswert?


von Markus B. (mbp-bayern)


Lesenswert?


von Timm T. (Gast)


Lesenswert?

Markus R. schrieb:
>> Ich kann meine daten doch genauso in das FLash schreiben...
> Aber nicht zur Laufzeit.

Doch. SPM.

von Achim Hussel (Gast)


Lesenswert?

Bei einen EEprom kann man jeder einzelne Zelle löschen.
Bei einem Flash muss man immer einen recht großen Speicherbereich auf 
einmal löschen. Auch wenn man nur 1 Byte schreibt.

von Tobi L. (derarzt)


Lesenswert?

aber das alleine kann doch nicht der grund sein oder

von Manfred (Gast)


Lesenswert?

Tobi L. schrieb:
> Ich kann meine daten doch genauso in das FLash schreiben

Das mach mir mal vor. Das Flash kannst du nur beim Programmieren des 
Controllers beschreiben; zur Laufzeit ist es nur lesbar.

von _M_ (Gast)


Lesenswert?

Einstellparameter im EEPROM werden nicht zwingend gelöscht wenn du ein 
neues Programm überträgst.
EEPROM ist 10x häufiger wiederbeschreibbar (wie schon geschrieben).

von Simon K. (simon) Benutzerseite


Lesenswert?

Manfred schrieb:
> Tobi L. schrieb:
>> Ich kann meine daten doch genauso in das FLash schreiben
>
> Das mach mir mal vor. Das Flash kannst du nur beim Programmieren des
> Controllers beschreiben; zur Laufzeit ist es nur lesbar.

Nein das stimmt nicht. Stichwort Bootloader.

von Tobi L. (derarzt)


Lesenswert?

Simon K. schrieb:
> Manfred schrieb:
>> Tobi L. schrieb:
>>> Ich kann meine daten doch genauso in das FLash schreiben
>>
>> Das mach mir mal vor. Das Flash kannst du nur beim Programmieren des
>> Controllers beschreiben; zur Laufzeit ist es nur lesbar.
>
> Nein das stimmt nicht. Stichwort Bootloader.

was stimmt nicht? kann ich den flash also auch zur laufzeit beschreiben?

von holger (Gast)


Lesenswert?

>Nein das stimmt nicht. Stichwort Bootloader.

Super, Bootloader ist natürlich genau das richtige wenn man
ein Byte im Flash ändern möchte. Wozu braucht man das EEPROM?

Die neue Weckzeit im Wecker einstellen und speichern.
Die letzte Lautstärkeeinstellung für den MP3 Player speichern.
Telefonnummern für das GSM Modem speichern und über RS232 ändern.
....... usw.

von Simon K. (simon) Benutzerseite


Lesenswert?

holger schrieb:
>>Nein das stimmt nicht. Stichwort Bootloader.
>
> Super, Bootloader ist natürlich genau das richtige wenn man
> ein Byte im Flash ändern möchte. Wozu braucht man das EEPROM?

Hä? Das passiert wenn man den Menschen zu wenig Infos gibt und erwartet, 
dass sie ihr Hirn anstrengen.

Ja, bei hier genannten AVRs (zumindest alle neuer als die Classic Serie 
AFAIK?) können sich selbst im Flash beschreiben, das wurde hier auch 
mehrmals genannt und wir bei Bootloadern angewendet (daher das 
Stichwort).

von -schumi- (Gast)


Lesenswert?

>Ja, bei hier genannten AVRs (zumindest alle neuer als die Classic Serie
>AFAIK?) können sich selbst im Flash beschreiben, das wurde hier auch
>mehrmals genannt und wir bei Bootloadern angewendet (daher das
>Stichwort).

Ja, da hatte ich auch letzens eine kleine Diskussion mit meinem 
Ausbilder^^

Er meinte, dass das Programm im Flash-ROM liegt, weil man es nicht in 
der Laufzeit verändern kann. Ich kahm dann auch mit dem 
Bootloaderbeispiel (bekannt vom AVR, aber den kennt er widerum (zu 
meinem Leidwesen) nicht)^^

Er hats mir nich so richtig abgekauft, weil bei den Pics ja (meinte er, 
ich weis es nicht) die Brennspannung angehoben werden muss, dass kann ja 
der Pic nicht einfach so selbst...

Hab dann aber zum Glück ein Beispiel für den 16f887 gefunden und so 
wurde dann offiziell bekanntgegeben, dass das Programm im Flash-SPEICHER 
liegt und er nicht Recht hatte (worauf man ja als Lehrling im ersten 
Jahr hinauswill^^)


Als Beispiel wofür ein EEPROM zu gebrauchen ist (ganz aktuell, 
Abschiedsprojekt von 2 Ausgelernten, wo ich aufgrund meiner Fähigkeiten 
etwas  bei der Software mitmischen (= ich muss sie schreiben) soll): Ein 
Brett mit ~300 LEDs, das einen Text anzeigen kann. (Text in PC -> ft232 
-> µC -> anzeigen). Beim Ausschalten muss der Text gespeichert werden, 
damit er beim Einschalten wieder/immernoch das ist. Wo rein damit? -> 
EEPROM

Gruß

von Tobi L. (derarzt)


Lesenswert?

> Als Beispiel wofür ein EEPROM zu gebrauchen ist (ganz aktuell,
> Abschiedsprojekt von 2 Ausgelernten, wo ich aufgrund meiner Fähigkeiten
> etwas  bei der Software mitmischen (= ich muss sie schreiben) soll): Ein
> Brett mit ~300 LEDs, das einen Text anzeigen kann. (Text in PC -> ft232
> -> µC -> anzeigen). Beim Ausschalten muss der Text gespeichert werden,
> damit er beim Einschalten wieder/immernoch das ist. Wo rein damit? ->
> EEPROM
>
 Also ist das EEPROM doch eine datenhaltungsspeicher? aer nochmacl dann 
meine frage warum dann nicht auch .....Wo rein damit? -> flash

die einzige lösung für mich wäre ins eeprom weil ich dann mehr platz für 
"richtige" anweisungen wie for-schl. usw habe.

von Timm T. (Gast)


Lesenswert?

Tobi L. schrieb:
> Also ist das EEPROM doch eine datenhaltungsspeicher? aer nochmacl dann
> meine frage warum dann nicht auch .....Wo rein damit? -> flash

Ich schreibs nochmal ganz langsam: Weil Du den EEPROM Byte für Byte 
beschreiben kannst, den Flash aber - und auch nicht bei allen µcs - 
üblicherweise seitenweise löschen musst und dann entweder seitenweise 
schreiben oder bei einigen auch byteweise schreiben kannst. Der Flash 
erfordert aber bis auf wenige Ausnahmen* immer ein vorheriges Löschen, 
was das Ganze natürlich aufwendiger macht.

Beispiel: Bei einer Heizungssteuerung soll der Wert für die 
Puffersolltemperatur geändert werden, nach Eingabe des neuen Wertes wird 
der einfach an eine definierte Speicherstelle im Eeprom geschrieben. 
Soll der Wert in den Flash geschrieben werden, muss vorher der gesamte 
Block im Flash (Page) gelesen und im Ram abgelegt, dann der Block 
gelöscht und dann der Block mit den alten Daten aus dem Ram und der 
neuen Temperatur geschrieben werden.

Bißchen ineffizient, nicht?

"Description:
SPM can be used to erase a page in the Program memory, to write a page 
in the Program memory (that is already erased),
and to set Boot Loader Lock bits. In some devices, the Program memory 
can be written one word at a time, in other devices
an entire page can be programmed simultaneously after first filling a 
temporary page buffer. In all cases, the Program
memory must be erased one page at a time. When erasing the Program 
memory, the RAMPZ and Z-register are used as
page address. When writing the Program memory, the RAMPZ and Z-register 
are used as page or word address, and the
R1:R0 register pair is used as data(1). When setting the Boot Loader 
Lock bits, the R1:R0 register pair is used as data.
Refer to the device documentation for detailed description of SPM usage. 
This instruction can address the entire Program
memory."

"In all cases, the Program memory must be erased one page at a time." 
ist die entscheidende Aussage.

*) Eine Ausnahme ist, wenn man in der Speicherstelle bitweise 
runterzählen will. Da ein gelöschter Flash mit 0xFFFF gefüllt ist, kann 
man immer ein Bit löschen und damit pro Speicherwort 16 Zustände 
abspeichern. Ein gelöschtes Bit wieder setzen geht aber ohne vorheriges 
Löschen nicht.

von ich (Gast)


Lesenswert?

@Tobi L. (derarzt)

...und jetzt das Ganze im Schnelldurchgang

früher gab es

Eprom  --- beschreiben elektrisch, löschen mit UV-Licht

dann kam

EEprom --- beschreiben elektrisch, löschen elektrisch

und etwas später wurden

Flashspeicher erfunden.




Alles klar, wenn nicht kaufe dir einen Legobaukasten.

von Thomas E. (thomase)


Lesenswert?

Druckt das Datenblatt aus, nehmt die Seiten mit der Beschreibung für das 
EEPROM raus und verbrennt diese. Dann vergesst ihr, daß ihr jemals was 
davon gehört habt.

Zukünftig schreibt ihr dann die Daten ins Flash.

Wenn das irgendwann mal zu umständlich ist, kauft ihr euch ein EEPROM 
und lötet das an eure Schaltung damit ihr komfortabel eure Daten ablegen 
könnt.

So einfach ist das.

Und noch eine Frage: Warum gibt es eigentlich einen 16-Bit-Timer im AVR?

Das könnte ich doch auch mit ein wenig Software mit einem 8-Bit-Timer 
erledigen.

mfg.

von Karl H. (kbuchegg)


Lesenswert?

Was hier von einigen betrieben wird, nennt man im Englischen 
"Nitpicking": Das Herumreiten auf für die Fragestellung irrelevanten 
Details.

Natürlich kann man das Flash beschreieben. Ein Speicher den man nicht 
beschrieben kann wäre auch ziemlich sinnlos.
Aber: Das war und ist bei den AVR niemals die Idee hinter der ganzen 
Sache gewesen, dass man den Flash zur Laufzeit eines Programmes als 
veränderbaren Speicher benutzt. Für ein Anwenderprogramm ist der Flash 
als unveränderlich anzusehen. Genau das ist ja die ganze Idee hinter der 
Harvard Architektur: die strikte Trennung zwischen Programmspeicher und 
Datenspeicher, damit ein verunglückter Zugriff auf den Datenspeicher (zb 
Array Overflow) eben NICHT das Programm an sich in Mitleidenschaft 
ziehen kann.

Für ein Anwenderprogramm reicht es völlig aus, dass es die Sichtweise 
hat:
Das Programm selber sitzt im Flash und ist durch das Flash unveränderbar
Daten die einen Stromausfall nicht überleben müssen sitzen im SRAM
Daten die einen Stromausfall überleben müssen kommen ins EEPROM


Dass ein Bootloader das Flash ändern kann ist eine der großen Ausnahmen, 
die aus praktischen Gründen zugelassen wird (für die es auch 
Restrilktionen gibt und die mit einer Fuse auch unterbunden werden 
kann). Für den normalen Anwendungsprogrammierer ist diese Ausnahme aber 
völlig irrelevant.

von (prx) A. K. (prx)


Lesenswert?

Karl Heinz Buchegger schrieb:

> Ein Speicher den man nicht
> beschrieben kann wäre auch ziemlich sinnlos.

Um beim Nitpicking zu bleiben: Maskenprogrammierter Speicher wird nicht 
beschrieben, sondern gleich mitsamt Inhalt produziert. ;-)

> Aber: Das war und ist bei den AVR niemals die Idee hinter der ganzen
> Sache gewesen, dass man den Flash zur Laufzeit eines Programmes als
> veränderbaren Speicher benutzt.

Bei anderen Controller-Familien ist das allerdings gebräuchlich. Wenn 
kein EEPROM drinne.

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.