Webserver HTLM CODE

pylon:

char buffer[50];

for (i = 0; i < 18; i = i + 1) {
           uint8_t l = snprintf_P(buffer, 50, "<th align="right">%d\r\n", pv1stundenges[i]);
           client.write(buffer, l);
         }

Bei der _P Version gehört allerdings ein PSTR() um den Format String herum, so dass dieser im Flash bleibt. Außerdem braucht man #include <avr/pgmspace.h>

@juergen01
Der zweite Paramter ist nicht "1", sondern ein kleines "L". snprintf() gibt die Länge des geschriebenen Strings zurück:
http://www.cplusplus.com/reference/cstdio/snprintf/

F() oder Flash Verwendung generell ist langsamer, weil durch das Kopieren jedes Zeichens aus dem Flash ins RAM nun mal ein Overhead entsteht. Man braucht einfach mehr Befehle um das gleiche zu machen. Es hat nichts mit Geschwindigkeit des Speichers zu tun. Aber meistens immer noch besser als das RAM voll zuschreiben.

http://www.nongnu.org/avr-libc/user-manual/pgmspace.html

The macros and functions used to retrieve data from the Program Space have to generate some extra code in order to actually load the data from the Program Space. This incurs some extra overhead in terms of code space (extra opcodes) and execution