Forum: Mikrocontroller und Digitale Elektronik C-Programierung: Register innerhalb eines Structs mit Makro beschreiben


von Der kleine Nils (Gast)


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

von Olaf (Gast)


Lesenswert?

Meine Vermutung geht dahin das du nicht weisst was ein struct ist. Aber 
sicher kann ich mir da nicht sein.

Olaf

von Ralph (Gast)


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.

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.