#define macht eine Textersetzung vor dem kompilieren. Darum ist es egal ob Du das mit #define oder 500 mal F("Hallo Welt") schreibst.
Bezweifle ich. Der Flash wird nur beim Upload geschrieben. Du kannst während des abarbeiten des Programms keine Variablen im Flash verändern.
Flash und EEprom können unendlich viele male gelesen werden. Nur das Schreiben bzw vorhergehende Löschen beschädigt sie auf lange dauer.
Nein. Du kannst nur vorhandene Totalausfälle finden aber nicht einen schleichendes Umspringen eines Bits nach langer Zeit.
Die garantierte durchschnittliche Schreibanzahl bezieht sich auf :
Seite 8 von https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
" 4. Data Retention
Reliability qualification results show that the projected data retention failure rate is much less than 1 PPM over 20 years at
85°C or 100 years at 25°C."
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.
Grüße Uwe