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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.