Hallo mal! Bin absoluter Anfänger und setze mich erstmals mit MC-Programmierung auseinander. Deshalb versuch ich erst mal alles zu lesen und zu kapieren, was ich kriegen kann. Bisher dachte ich, im Flash wird der Programmcode beim Programmieren - und nur dann - reingeschrieben, der SRAM dient als flüchtiger Datenspeicher und das EEPROM als nichtflüchtiger Speicher, für Sachen, die halt bei Stromausfall erhalten bleiben sollen. Jetzt hab ich mir das "Heizungsprogramm" aus dem Forum von Ingo B. mal angesehen und festgestellt, dass dort sowohl ins EEPROM als auch in den Flash geschrieben wird. 1. Liege ich noch richtig mit meiner Annahme, welcher Speicher wofür ist. 2. kann ich den Flashspeicher tatsächlich aus dem Programm ändern. 3. wann verwende ich sinnvollerweise den Flashspeicher, wann das EEPROM Wär nett, wenn mir jemand auf die Sprünge helfen könnte. Bid denn! Didi
Hallo, Didi, Du kannst in der Tat Flash auch aus dem Programm heraus ändern. Der wesentliche Unterschied aus Softwaresicht zwischen EEPROM und FlashROM ist der, dass Du EEPROMS speicherzellenweise ansteuern kannst/musst und FlashROMS nur blockweise, also ganze Bereiche auf einmal, welche je nach Baustein unterschiedlich groß sind.
Hallo nochmal! Danke Jim, für die kurz gefasste und klare Antwort. Eigentlich ist die Antwort ganz plausibel, deckt sich aber nicht mit dem, was ich im Quellcode der Heizungssteuerung sehe. Dort werden beide Speicher fast gleich verwendet mit einem kleinen Unterschied. Codeauszug: (aus dem Zusammenhang genommen, aber zu diesem Zweck erlaubt) typedef eeprom struct { unsigned int Zeit; unsigned char Mode; } struct_daten; eeprom struct_daten Timer[65]; flash unsigned char Leds[3] = { 0x04, 0x08, 0x10 }; flash signed int KesselHysterese = 50; eeprom unsigned char ZeigerRingspeicher; Daraus schliesse ich, dass das FlashROM stets vorinitialisiert werden muß, das EEPROM nicht. Oder war die Antwort genau so gemeint?
Hallo Didi, man kann den internen Flash-Speicher vieler AVR-Controller nur während der Programmierung verändern. Die neueren ATmega-Typen unterstützen dagegen einen Modus, in dem aus dem Programm heraus der Flash-Speicher beschrieben werden kann. Dazu ist jedoch ein spezielles Verfahren einzuhalten. In der Regel legen C-Compiler im Flash deshalb nur Konstanten ab, keine Variablen. Ob und ggf. welche C-Compiler den schreibenden Zugriff auf Flashspeicher über Bibliotheksroutinen unterstützen, entzieht sich meiner Kenntnis. Auf das EEPROM kann aus dem Programm heraus bei allen AVR-Controllern sowohl schreibend als auch lesend zugegriffen werden. Ausführliche Erläuterungen zu den Zugriffsverfahren mit ihren Besonderheiten findest Du in den Datenblättern der ATmega-Typen. Gruß, Frank
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.