LPC1768 / IAR / C++ und Interrupts

Gast #1451112
Hi zusammen,

ich habe das LPC1768 KickStart Kit von IAR und versuche gerade in C++ 
eigene Interruptroutinen zu schreiben.

Die Datei cstartup_M.c habe ich so definiert, dass alle INT-Routinen 
__weak sind. Wenn ich jetzt unter "C" eine Interrupt-Routine schreibe, 
die in der cstartup_M.c als __weak definiert ist, wird meine neue 
Routine genutzt.

Wenn ich das ganze unter "C++" versuche, dann geht leider garnix. D.h. 
die leere Platzhalter-Routine aus der cstartup_M.c wird verwendet. Wenn 
ich den Interrupt in eine eigene Klasse packe geht es auch nicht.

Das sieht man auch schön im Linker-Logfile. Anscheinend macht der was 
nicht ganz richtig.

Hat jemand vielleicht eine Idee, an was das liegen kann?

Danke
 Dominik
Gast
Super. Danke, das funktioniert.


Kannst du (oder jemand anderes) mir vielleicht auch sagen, 
Klassenmethoden als IRQs nutzen kann? Das funktioniert bei mir mit 
extern "C" nicht...

Danke nochmal!
 Dominik
(...habe keine Ahnung von LPC1768...)

Dazu müssen die auch sicher static sein in der Klasse.
Damit ist verbunden, daß sie auf nichts zugreifen, was zu
einem Objekt gehört, sondern nur auf static-Elemente der Klasse
und entsprechend auch nur static-Methoden wiederum aufrufen.

Schließlich hat man in der ISR ja kein Objekt.

Falls das nicht reicht: eine Wrapper-Funktion außerhalb der
Klasse schreiben, die dann die statische Methode aufruft.
Gast
Danke!

Mit Wrapper funktionierts, ohne allerdings nicht (static hatte ich 
schon). Auf die Idee hätte ich auch selbst kommen können :)

Vielleicht kennt doch noch jemand eine Möglichkeit es ohne Wrapper zu 
machen?
Irgendwie ist das unschön... ;)


Ciao
 Dominik
Persönliche Seite
Hi

das kann, so wie du deine Umgebung beschreibst, nicht funktionieren da 
eine Klassenmethode an ihrem Namen immer auch den Klassennamen in 
irgendeiner Form "drankleben" hat. Sonst könnte sie der Linker nicht der 
Klasse zuordnen. Du müsstest also bei der Definition der 
Interruptvektoren den passenden Namen eintragen. Obs das aber Wert ist?

Matthias

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.