für eine Anwendung möchte ich Texte auf einem OLED Display ausgeben. Wenn ich nun verschiedene Texte in der Form von
oled.println ("Dies ist ein Text");
in den Code schreibe, wird der Text im Flash gespeichert und belegt unnötig Speicherplatz.
Bei nur wenig Text ist das kein größeres Problem, benötige ich aber mehrere Texte, wird irgendwann der Programmspeicherplatz knapp. Die 1024Byte des EEPROM würden für die Texte aber (hoffentlich) ausreichen.
Daher wollte ich meine Texte im EEPROM ablegen und zur Laufzeit aus diesem auslesen und ausgeben.
Das Speichern würde ich mit einem zweiten Programm machen, welches einfach die Texte ins EEPROM speichert und anschließend das richtige Programm einspielen, welches die Texte nur ausliest. Allerdings habe ich noch nicht herausgefunden, wie ich strings im EEPROM ablegen und wieder aufrufen kann.
Ich würde der Einfachheit halber alle Texte auf 20 Zeichen begrenzen, so daß ich 51 verschiedene Texte speichern kann (mit Nullterminierung 48 Texte), was für meine Anwendung vollkommen ausreicht.
Kann ich strings direkt ins EEPROM schreiben und diese wieder auslesen oder bleibt mir nichts anderes übrig, als alles Byteweise zu speichern und auszulesen?
Und behält das EEPROM seinen Inhalt überhaupt, wenn man mit dem Bootloader einen neuen Sketch hochlädt?
Die Fuses und der Umgang damit sind mir schon bewusst. Aber die ändern sich ja nicht, wenn man über die IDE mit dem Bootloader ein Sketch hochlädt.
Die Frage bezog sich eher darauf, was in diesem Fall passiert. Das unterscheidet sich ja vollkommen vom Hochladen per ISP.
Wie soll das gehen? Wenn ich im selben Programm die Daten ins EEPROM speichere, belegen sie doch trotzdem Programmspeicher, den ich dadurch sparen will.
Sehe ich das richtig, daß die Texte, die ich über .println ausgebe, den Speicher vollmüllen?
Das würde einiges an seltsamen Abstürzen erklären.
Dann wäre es also das Beste, die Texte weiterhin direkt im Programm über .println (F("text")) ausgebe, weil das Arbeitsspeicher spart?
Danke für den Hinweis.
Im konkreten Fall geht es um Texte, die vor dem eigentlichen Programmstart als eine Art Anleitung ausgegeben werden.
Ich habe die Ausgaben angepasst und die Ausgabe über eine Funktion wieder herausgenommen und so tatsächlich etwas Programmspeicher eingespart. Und gelegentliche Abstürze, die ich hatte, sind auch weg.