Hallo,
ich habe ein Problem mit dem zeichenweise auslesen eines Strings aus
dem Flashspeicher eines AVR.
Den Text im Flash habe ich so angelegt:
1 | const char h1[] PROGMEM= "Hallo, ich bin aus dem Flash";
|
Die Zeichen sollen über die serielle Schnittstelle ausgegeben werden,
was ich bis jetzt so gemacht habe:
1 | for (i = 0; i < strlen_P(h1); i++) {
|
2 | zeichen = pgm_read_byte(&(h1[i]));
|
3 | uputchar(zeichen);
|
4 | }
|
So funktioniert es. Normalerweise mache ich sowas in einer Funktion mit
Pointerarithmetik, was jedoch nicht funktioniert:
1 | char *ptr_h1;
|
2 | ptr_h1 = h1;
|
3 |
|
4 | while (*ptr_h1) {
|
5 | zeichen = pgm_read_byte(ptr_h1);
|
6 | uputchar(zeichen);
|
7 | *ptr_h1++;
|
8 | }
|
Dann werden bei mir teilweise Zeichen gesendet die im String h1 so
nicht drinstehen, aber wieso?