Pointer auf Funktion in einem Struct ablegen

OP #608625
Lesenswert?

Hallo,

ich bin leider gerade völlig im Zeigerwirrwarr gefangen - vielleicht 
kann mir wer da raushelfen ;-)

Ich möchte in einer Struktur einen Zeiger auf eine Funktion ablegen und 
später dann bei Auslösung einer ISR die Funktion anhand des abgelegten 
Zeigers aufrufen. Ich brauche das für eine recht komplexe Ansteuerung 
des CAN-Controllers im AT90CAN128.

Als Beispiel:
1
typedef struct
2
{
3
   // Hier Zeiger auf Funktion speichern
4
} Strukur_t;
5

6
Struktur_t MeineStruktur;
7

8
// Funktion die in der ISR aufgerufen werden muss
9
void Action (void)
10
{
11
   // ...   
12
}
13

14
// Interrupt Service Routine
15
ISR (CANIT_vect)
16
{
17
   // Hier die Funktion anhand des in der Struktur "MeineStruktur" abgelegten Zeigers aufrufen
18
}
19

20
int main (void)
21
{
22
   // Zeiger auf "Action()" in "MeineStruktur.Zeiger" ablegen
23
}

Sorry, dass es so ein "bitte programmiert mir das mal" Beitrag ist. Mit 
einfachen Zeigern kann ich umgehen, aber ich habe leider Null Erfahrung 
mit Zeigern auf Funktionen und konnte bisher auch noch nichts finden, 
was mir wirklich bei meinem Problem weitergeholfen hat. Ich bekomme den 
Funktionszeiger einfach nicht in die Struktur und in der ISR klappt der 
Aufruf nicht. Ich könnte hier schreiben,w as ich alles probiert habe, 
aber ich denke das verkompliziert die Sache nur noch mehr...

Bin sehr dankbar, wenn mir jemand da Unterstützung geben kann!
Persönliche Seite #608632
Lesenswert?

André Wippich wrote:
> Sorry, dass es so ein "bitte programmiert mir das mal" Beitrag ist. Mit
> einfachen Zeigern kann ich umgehen, aber ich habe leider Null Erfahrung
> mit Zeigern auf Funktionen und konnte bisher auch noch nichts finden,
> was mir wirklich bei meinem Problem weitergeholfen hat.

Echt nicht?
http://www.google.de/search?q=function+pointer

Alternativ gibts dazu auch schon diverse Threads in diesem Forum.

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