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);
}
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
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; |
Fehler gefunden: das SRE Bit von XMRA Register des 2561 war nicht gesetzt -.-... wie gesagt: Frischling. Danke an alle!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.