Wert in externen Speicher an bestimmter Adresse

Gast #3428367
Lesenswert?

Hi,

ich möchte den Wert 'zahl' (DEF1 und DEF2) in den externen Speicher an 
einer vorher definierten bestimmter Adresse (DEF1 und DEF2)schreiben.
Also Wert 'zahl' bei 0x123A und 0x123B reinschreiben. So wie unten 
überschreibe ich ja nur den Pointer, wie mache ich es aber richtig?

#define  DEF1   0x123A
#define  DEF2   0x123B

...

void set_zahl(uint16_t zahl)
{
  uint8_t  *ptr1  =  DEF1;
  uint8_t *ptr2  =  DEF2;

  ptr1  =  zahl;
   ptr2  =  (zahl>>8);
}
#3428420
Lesenswert?

Frischling schrieb:
> Hi,
>
> vielen Dank für die flinken Antworten. Genau das hatte ich auch schon
> gemacht, allerdings bleibt beim Durchsteppen der Wert an dieser Adresse
> unverändert und enthählt nicht 'zahl'. :-S

Dann schau dir den Assemblercode an, ob der Optimizer die eigentliche 
Zuweisung an eine etwas andere Stelle geschoben hat.

Wenn es vital ist, dass die Zuweisung exakt an dieser Stelle passiert, 
dann eben als
1
volatile uint8_t * Ptr1 = (volatile uint8_t*)DEF1;
2
...
3

4
  *Ptr1 = 0x30;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren