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!