ich nutze recht häufig die "F" Deklarierung um Speicherplatz freizuhalten.
So ala:
for (byte c = 0; c < 100; c++) {
oled.print(F("Hallo Welt"));
};
Ich frage mich, wie es ist, wenn diese in einer Loop stehen.
Wird die Variable dann nur einmal geschrieben und dann immer wieder gelesen, oder erfolgt das jedes Mal?
Hintergrund ist, dass ich defekte Arduinos habe, die Langzeittests hinter sich haben und zerstörte Flash Speicher durch zu häufiges Schreiben als Ursache vermute.
Alternativ lässt sich ja der String auch per #define einmal festlegen
#define Text F("Hallo Welt")
und dann immer wieder unter seinem Bezeichner aufrufen.
for (byte c = 0; c < 100; c++) {
oled.print(Text);
};
Macht das einen Unterschied beim Schreiben auf den Flash Speicher?
Gibt es eine einfache Möglichkeit den Flashspeicher auf Defekte und nutzbare Größe zu prüfen?
Das ist auch noch nach 10000 Schreibzyklen vom Hersteller garantiert.
Der Umstand daß Du ein Byte schreibst und dann wieder liest sagt nichts darüber aus wie kaputt der Speicher wirklich ist. Ok, wenn das lesen fehlschlägt dann kannst Du sicher sein daß diese Speicherstelle kaputt ist. Sind die gelesenen Daten aber gleich den geschriebenen sagt das nichts aus wielange sie unverändert drin bleiben. Ob das 1 Sekunde oder 10 Jahre sind kannst Du mit einem einfachen lesen nicht ergründen.
Auch kannst Du nicht einzelne Speicherzellen des Flash vom Gebrauch außsschließen. Das Programm/Bootloader fängt immer an der gleichen Stelle an.