Forum: Mikrocontroller und Digitale Elektronik Problem mit Pointer.


von H.Joachim S. (crazyhorse)


Lesenswert?

Geht primär um folgendes:
Beitrag "AVR-Bootloader mit Verschlüsselung"

Versionsnummer kommt an feste Adresse, beim Mega8 ist das 0xbfe, 0xbff.

#define ver_adr 0x0bfe
char flash *ptr_to_flash=ver_adr*2;
//dummy version, handled by bootlader @

.
.
.
printf (" TestV%d.", *ptr_to_flash++);
printf ("%d.", *ptr_to_flash++);
printf ("%d.", *ptr_to_flash++);
printf ("%d", *ptr_to_flash++);
.
.
.
klappt so auch.

Was mir nicht gelingen will: zur Laufzeit dem Pointer den Wert ver_adr 
zuzuweisen, meckert der Compiler (CodeVision)

ptr_to_flash=0x0bfe*2;
oder
ptr_to_flash=ver_adr*2;

Wo liegt mein Denkfehler??

von Walter (Gast)


Lesenswert?

0x0bfe ist eine Zahl, ptr_to_flash aber ein Zeiger
die Zuweisung erfordert also ein cast

von Random .. (thorstendb) Benutzerseite


Lesenswert?

> ptr_to_flash=ver_adr*2;

versuchs mal mit nem cast nach pointer. Du weist hier im Grunde einem 
pointer einen int zu, das funzt net.

vllt so? Ich kenn das "flash" attribut nciht...
ptr_to_flash=(char flash *)ver_adr*2;


VG,
/th.

Edit: Da hat wohl einer schneller getippt g

von H.Joachim S. (crazyhorse)


Lesenswert?

:-)
Das klappt wie gewollt, danke schön.
Muss mich mal näher mit dem Kram befassen, aber im Moment keine Zeit 
für.

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.