Forum: Mikrocontroller und Digitale Elektronik Speicherzuweisung


von Micha (Gast)


Lesenswert?

Hallo Elektronikkollegen,

ich habe eine etwas dümmliche frage, bin aber kurz vor dem Verzweifeln.
ich nutze das ASF.
Dabei habe ich verschiedene Funktionen die register beschreiben.
Zum Beispiel:
dacifb->cr |= (AVR32_DACIFB_CR_BOE_MASK);
(ich weiß ist nicht die funktion sondern nur die Zuweisung)
hier soll das ControlRegister des DACIFB Ínterfaces beschrieben werden.
Klappt auch alles wunderbar.
Da ich es aber komplett verstehen will und nicht einfachn nur zufrieden 
bin, weil es "funktioniert", würde ich gerne wissen wo die  Variable 
dacifb->cr, dem genauen Speicherort zugewiesen wird.
An der Stelle an der das Struct definieert wird, kann ich nichts finden.
ich hoffe ihr könnt mir helfen.

Lieben Gruß

Michael

von Peter D. (peda)


Lesenswert?


von Micha (Gast)


Lesenswert?

Sorry. das hilft mir irgendwie nicht weiter.
Entweder ich überlese die entscheidende stelle oder mein Problem wird da 
nicht behandelt

von Karl H. (kbuchegg)


Lesenswert?

Micha schrieb:

> An der Stelle an der das Struct definieert wird, kann ich nichts finden.
> ich hoffe ihr könnt mir helfen.

Du musst unterscheiden, wie und wo dacifb seinen Wert bekommt und dem, 
was sich an dieser Stelle im Speicher befindet.

dacifb wird einfach nur ein Pointer sein, der irgendwie einen 
numerischen Wwert zugewiesen bekommt.

Und dann wird der Compiler (mit einem Cast) so ausgetrickst, dass er an 
dieser Stelle im Speicher, diesem dort befindlichen Byte mittels der 
Struktur einen Bitaufbau mit benannten Bits zuweist.

Das ist nichts anderes als eine Aufbaubeschreibung mittels einer 
Struktur und dem umcasten eines Pointers auf diese Strukturbeschreibung. 
Der Cast besagt "tu einfach mal so, als ob an dieser Stelle im Speicher 
sich so ein Ding befinden würde"

von Peter D. (peda)


Lesenswert?

Micha schrieb:
> würde ich gerne wissen wo die  Variable
> dacifb->cr, dem genauen Speicherort zugewiesen wird.

Garnicht.
Irgendwo wird eine Struct definiert, die das Element "cr" enthält.
Irgendwo wird ein Pointer des Typs dieser Struct angelegt.
Und irgendwo wird diesem Pointer "dacifb" die Adresse einer Variable des 
Typs dieser Struct zugewiesen.

Es kann auch sein, daß es weder den Pointer noch die Variable wirklich 
gibt. Sondern eine IO-Adresse (integer-Zahl) wird nur zu einen Pointer 
auf eine Variable des Typs dieser Struct gecastet.

von Micha (Gast)


Lesenswert?

Ich danke euch.
Leider war mir das so zu mindest zum großteil klar.
Genau diese "casterei" und "zuweiserei" suche ich  im framework ASF und 
kann sie nicht finden

von Micha (Gast)


Lesenswert?

ich denke ich habe es gefunden.
danke euch

von Falk B. (falk)


Lesenswert?

@  Micha (Gast)

>ich denke ich habe es gefunden.

Wie? Und wo? Siehe 
http://www.mikrocontroller.net/articles/Netiquette#Happy_End

von Micha (Gast)


Lesenswert?

Sorry.
Es gibt für jeden Mikrocontroller eine configurationsdatei. die heißt 
dann wie der controller.
In denen steht das drin

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.