Hallo, habe eine einfache Frage.
Ich habe eine Variable die eine Adresse als Wert hat. Jetzt möchte ich
dem Pointer diesen Wert (Adresse) zuweisen.
z.B.
Uint16 variable = 0x0A11 <-- Adresse
Uint16 *pointer = &variable
<-- hier weise ich die Adresse der Variablen zu, aber nicht den
benötigten Wert (0x0A11).
Danke
Gruß
Rufus Τ. Firefly schrieb:> Gewöhn Dir sowas ab. Dafür gibt es die Standardtypen wie eben> uint16_t.
Der Standardtyp, um einen Zeigerwert als Integer zu speichern, ist aber
intptr_t und nicht uint16_t.
Rolf Magnus schrieb:> Der Standardtyp, um einen Zeigerwert als Integer zu speichern, ist aber> intptr_t und nicht uint16_t.
Das mag wohl so sein, mir ging es primär um die Vermeidung der
Verwendung selbstgebastelter Typen(-bezeichner) wie "Uint16".
Hallo, hab immer noch ein kleines Problemchen. Folgende Sache. Ich
übertrage Daten immer als Hexzahlen. Möchte Daten im EEPROM unter einer
bestimmten Adresse speichern, und später diese Adresse auslesen.
EEPROM Adressen starten bei 0x3F0002, wobei die ersten zwei Werte fest
sind, die letzten vier variabel (0x3Fxxxx).
Problem ist, der Zeiger zeigt immer auf eine falsche Adresse, und gibt
das Array gibt mir unbeschriebenen Speicher aus (0xFFFF)
mein Code,
Durchstarter schrieb:> Page_Pointer = (Uint16 *) REGISTER_ADDRESS;> if(*Page_Pointer!=0x3F0104)
if(Page_Pointer!=0x3F0104)
ist was zu willst
void EEPROM_Read()
{
Uint16 i;
// Transfer contents of Current Page to Read Buffer
Read_Buffer[0] = *(Page_Pointer);
}
wer schreibt denn dort was rein?
wie ich dich verstanden habe, willst du erstmal verifizieren,
dass die zusammengebaute adresse korrekt ist?
du arbeitest meinem geschmack nach zu viel über globale variablen
die deklaration von REGISTER_ADDRESS fehlt^^
in c muss man höllisch aufpassen welcher typ (signed oder unsigned)
benutzt wird, insbesondere beim left-shiften.
Hallo,
die IF Abfrage ist einfach zum testen, ob die Adresse auf die der Zeiger
zeigt gleich der gewünschten Adresse ist (in diesem Fall 0x3F0104),
hatte LEDs zum leuchten gebracht.
1
Uint16REGISTER_ADDRESS
_received_data ist signed, werd das mal ändern und sehen, ob das was
bringt!
Gruß
Durchstarter schrieb:> Hallo,>> die IF Abfrage ist einfach zum testen, ob die Adresse auf die der Zeiger> zeigt gleich der gewünschten Adresse ist (in diesem Fall 0x3F0104),
Gerade deann willst du eben den * nicht.
Der * bedeutet: Sieh unter dieser Adresse nach.
Dich interessiert hier aber nicht der Wert der an dieser Adresse im
Speicher steht, sondern die Adresse selber die in der Pointer Variable
gespeichert ist. Daher ohne *
Ahhhh, OK, mach mir immer ein bisschen schwer mit den Pointern.
Was mein Problem angeht, ich glaube es lag wirklich an den
signed/unsigned Deklarationen. Ich kann jetzt die gewünschte Adresse
auslesen und unter der gewünschten Adresse speichern, kamen bis jetzt
keine Probleme auf.
Vielen Dank für die Tipps.
Adios