C-Programierung: Register innerhalb eines Structs mit Makro beschreiben

Gast #3646168
Lesenswert?

Moin,

meine letzte Frage zum ATMEGA16m1 konnte mir gut beantwortet werden, 
daher kommt hier direkt die nächste - und vermutlich kniffeligere - 
Frage.

Der Mega16m1 arbeitet im CAN-Bereich ja mit diesen "MessageObjects". Das 
aktuelle Object wird über das "CANPAGE"-Register aufgerufen. Ich würde 
der Übersichtlichkeit halber gern versuchen das alles in ein Struct zu 
quetschen. Daher stellt sich mir als erstes die Frage, ob es die 
Möglichkeit gibt, dass jedes mal, wenn ein Struct - nennen wir es mal x 
- ein Makro ausgefürt wird, welches dann über das Register "CANPAGE" das 
entsprechende MessageObject aufruft.

Klingt recht komplex in meinen Augen.

Eventuell wäre ja vielleicht auch eine Alternative drin? Ich denke da an 
sowas wie "CANPAGE" aufrufen und sich die ganzen Adressen von den 
Registern darin speichern. Meine Vermutung geht dahin, dass die Register 
eines MessageObjects auch nur Zeiger sind, die beim verändern des 
"CANPAGE"-Registers umgebogen werden. Daher müsste es doch theoretisch 
möglich sein, die Absoluten Adressen der Register abzuspeichern und 
diese dann direkt anzusprechen? Oder ist das PfuiPfui?

Gruß
Nils
Gast #3646253
Lesenswert?

Ich werde aus deiner Frage auch nicht so ganz schlau.

Aber,
Man kann die Adresse von Registern als Pointer in einer Struct ablegen.
Und über diesen Pointer auf das Register zugreifen.
Man kann aber auch einen Funktionspointer in einer Structur ablegen. 
Diese Funktion kann dann über den hinterlegten Pointer aufgerufen 
werden.

Ich nehme mal an das eine der beiden Varianten das ist was du suchst.

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