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
>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.
Tobi L. schrieb: > Ich kann meine daten doch genauso in das FLash schreiben... Aber nicht zur Laufzeit.
Markus R. schrieb: >> Ich kann meine daten doch genauso in das FLash schreiben... > Aber nicht zur Laufzeit. Doch. SPM.
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.
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.
Einstellparameter im EEPROM werden nicht zwingend gelöscht wenn du ein neues Programm überträgst. EEPROM ist 10x häufiger wiederbeschreibbar (wie schon geschrieben).
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.
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?
>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.
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).
>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ß
> 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.
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.
@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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.