HaWe:
zum Flash habe ich 2 Fragen:
Ist es nicht so, dass Flashs nur begrenzt oft geschrieben werden können (nur wenige 1000 mal oder so )? Ist es dann nicht riskant, den Flash unnötig zu "belasten"? Oder findet hier keine extra Schreibaktion statt?
Du verwechselst das vielleicht mit dem EEPROM. Das geht eher kaputt. Da sind nur minimal 100.000 Schreibzyklen garantiert. Flash hält weit mehr aus.
Aber bei beiden gilt es nur das Schreiben begrenzt. Lesen geht unbegrenzt.
Und wie ist die Ausführungsgeschwindigkeit auf dem Flash? Ist der nicht viel langsamer als als aus dem RAM, was u.U. gerade bei sehr schnellen serial Ausgaben (115000 baud oder so) ziemlich bremsen kann?
Im Flash steht ja auch das Programm das ständig gelesen wird.
Daten im Flash zu speichern ist etwas langsamer, da mehr etwas Code generiert werden muss um die Daten aus dem Flash ins RAM zu kopieren. Das liegt daran das die normalen Assembler OpCodes fast alle ins RAM zeigen und es für die Flash-Behandlung nur Laden und Lesen gibt.
Das spielt aber meistens keine große Rolle. Wenn man HTML für Ethernet im Flash speichert, merkt man das es langsamer ist. Aber das ist es meistens Wert, der RAM halt so sehr begrenzt ist. String Konstanten fressen da schnell hunderte von Bytes. Es kommst ständig vor dass deswegen Programme abstürzen.
@lichtfilter
in Ermangelung von C++ - Kenntnissen weiß ich nicht wie man das Ergebnis auf den serieellen Monitor ausgeben kann.
Wirklich? Wie kannst du dann ein 30kB Programm schreiben? Was ist an Serial.println(getFreeRAM()) so kompliziert? Kann man z.B. am Anfang in setup() machen, dann sollte es das erste sein das angezeigt wird.
Gibt das freie RAM in Bytes aus. Wobei ich gelesen habe, dass die Funktion nicht ganz korrekt funktioniert wenn man dynamischen Speicher verwendet.
Wie oben gesagt, verursacht der Gebrauch von PROGMEM/PSTR()/F() systembedingt etwas mehr Code, aber das es so extrem ist war mir nicht bekannt...
Was hast du da überhaupt, dass du so viel Flash verbrauchst? Ein TFT oder LCD mit Font Definition? Das kann man eventuell kürzen, je nachdem was man davon verwendet.