Hi!
Wenn ich sowas wie
uart_puts("Ich bin eine Stringkonstante im RAM!");
schreibe, dann lagert er diesen String ja im Ram aus. Wenn ich den gerne
im Rom hätte müsste ich dort extra über
char PROGMEM s[] = "Ich bin eine Stringkonstante im ROM!";
uart_puts(&s); // Funktion die über pgm_read_byte() die variable aus dem
ROM holt.
Geht das auch komfortabler so dass ich sowas wie uart_puts(PROGMEM
"balbla") schreiben kann? oder so ähnlich, oder ganz automatisch.
lg PoWl
Was du suchst, ist dieses:
1 | |
Aber weder diese Kurzform, noch deine lange Version, werden funktionieren, wenn uart_puts einen "normalen" String erwartet (also einen, der im RAM steht).
ah, dankeschön das kannte ich noch garnicht. welchen variablentyp muss eine funktion denn dann erwarten? uart_puts_pgm(const uint16_t *string); ?
Paul Hamacher wrote: > welchen variablentyp muss eine funktion denn dann erwarten? > > uart_puts_pgm(const uint16_t *string); ? Nein, das ist keine Frage des Variablentyps. Die Funktion muss den String aus dem Flash lesen, also speziell für Flash-Strings programmiert worden sein.
ich weiß, die funktion muss ich mir schon selbst schreiben, wollte nur wissen was die funktion dann als argument erwartet ;-)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
habs jetzt so, funktioniert prima. Danke! lg PoWl
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.