Forum: Mikrocontroller und Digitale Elektronik atMega memcpy_P liefert unerwartete Ergebnisse


von Tom (Gast)


Lesenswert?

Hallo,

ich bin zum ersten Mal seit langem wieder in C und auf dem atMega 
unterwegs.
Die Anwendung ist so gut wie fertig, mir bereitet allerdings memcpy_P 
Kopfzerbrechen. Es ist bestimmt eine Kleinigkeit, die ich vergessen 
habe.

buffer0: data 0x01D3    80 00 7f 61 38 7f 34 00 7f 7f 7f 00 00
panel:   data 0x0102    00 00 00 00 00 00 00 00 00 00 00 00 00

memcpy_P(&panel, buffer0, sizeof(panel));

Speicher nach memcpy:
buffer0: data 0x01D3    80 00 7f 61 38 7f 34 00 7f 7f 7f 00 00
panel:   data 0x0102    91 cf 91 08 95 cf 93 df 93 00 d0 00 d0

Wenn ich per Schleife byte für byte kopiere gehts.

Was läuft hier falsch?

von Stefan E. (sternst)


Lesenswert?

Tom schrieb:
> Was läuft hier falsch?

Dass du memcpy_P verwendest, obwohl doch die Quell-Daten offenbar im RAM 
liegen, und nicht im Flash.

von Jim M. (turboj)


Lesenswert?

Die memcpy_P liesst aus Flash, nicht aus data (SRAM). Für RAM->RAM musst 
Du das normale memcpy() benutzen.

von Tom (Gast)


Lesenswert?

...und schon gehts, Danke!

von Tom (Gast)


Lesenswert?

Gibt es auch memzero unter avr/gcc?

von MaWin (Gast)


Lesenswert?

memset

von guest (Gast)


Lesenswert?

Tom schrieb:
> Gibt es auch memzero unter avr/gcc?

Nimm doch memset.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.