mikrocontroller.net

Forum: Compiler & IDEs Pointer auf Funktion in einem Struct ablegen


Autor: André Wippich (sefiroth)
Datum:

Bewertung
0 lesenswert
nicht 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:
typedef struct
{
   // Hier Zeiger auf Funktion speichern
} Strukur_t;

Struktur_t MeineStruktur;

// Funktion die in der ISR aufgerufen werden muss
void Action (void)
{
   // ...   
}

// Interrupt Service Routine
ISR (CANIT_vect)
{
   // Hier die Funktion anhand des in der Struktur "MeineStruktur" abgelegten Zeigers aufrufen
}

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

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!

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: André Wippich (sefiroth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lol, das hatte ich echt nicht gefunden. schäm

Danke Euch für die Links, jetzt bekomm ich's auch hin ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.