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

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.