ich werde demnächst mit dem Mega 2560 arbeiten und benötige auch den Flashspeicher. Allerdings kann ich nirgends - hab ca. 2 Stunden gegooglet und gefühlt 1000 Seiten durchsucht - etwas finden, wie man den Flashspeicher beschreibt, ausliest und wieder löscht. Kann mir da bitte jemand ein paar Info's geben?
Den Flash Speicher kannst du nur beim Compilieren beschreiben.
Im Prinzip landet erst mal alles im Flash. Aber weil der AVR eine modifizierte Harvard Architektur hat - und daher Daten und Programm unterschiedliche Adressräume haben - können normale Funktionen nicht mit Adressen im Flash arbeiten. Deshalb werden nach dem Start automatisch alle Variablen vom Flash ins RAM kopiert.
Du kannst aber mit ein paar Makros sagen "Lass dass im Flash". Danach gibt es weitere Makros und spezielle Funktionen, die mit denen du mit Flash-Adressen arbeiten kannst.
Okay, danke für die Info. Aber das von dir verlinkte übersteigt meine aktuellen Kenntnisse noch weit^^.
Was ich aktuell suche ist halt folgendes:
Beim ersten starten vom Arduino soll eine Variable 0 enthalten. Diese soll dann - über Tastenfuntionen - einen bis zu zweistelligen int-Wert erhalten. Dieser Wert soll auch nach dem abschalten und erneuten starten erhalten bleiben. Alle anderen Variablen müssen das nicht, nur diese eine. Gibt es ansonsten eine Möglichkeit dazu? Oder hab ich nur was falsch verstanden?
Da musst du allerdings aufpassen, dass du da nicht zu oft auf eine Zelle schreibst, da die Schreibzyklen auf 100.000 begrenzt sind. Bzw. das ist der Wert für den die Datenintegrität garantiert ist. Wenn du das nur über Taster machst wird das ok sein, da das relativ selten geschieht und du wohl nicht auf 100.000 kommst, aber wenn man automatisch Werte speichert, ist das problematischer.
Eine gute und billige Alternative ist hier eine DS1307 Real Time Clock. Die hat 56 Byte batteriegepuffertes SRAM.
oder eine etwas teurere Lösung die sich FRAM von RAMTRON nennt. zB FM25C160B-G (2kByte 5V SPI) oder FM24C16B-G (2kByte 5V I2C); Preis bei RS ca 2,5€ bzw 2€
Die können 10^12 Schreibzyklen und ohne Wartepausen. Pin-kopatibel zu vielen I2C oser SPI- EEPROMS
Grüße Uwe
Da aber mein Projekt schon teuer genug wird und die eine Menge Arduinoboards und dann auch die extra Bauteile benötige, kann ich mir es nicht leisten, noch extrige zu verwenden. Ich bleibe bei der EEPROM-Lösung, da diese genügt.