Hallo liebe Community, Ich bin im Moment ziemlich ratlos was die Implementierung von Interrupts betrifft. als Controller verwende ich einen SPC56 auf einem Discovery Board von ST. Als Entwicklungsumgebung verwende ich das SPC5 Studio. Damit habe ich einen Interruptvektor definiert und ihn auch aktiviert. Wo ich jetzt allerdings Probleme habe ist, wie und wo definiere ich was beim Interrupt passieren soll. Konkret möchte ich per Tastendruck über den Interrupt den Status eines GPIOs toggeln an dem eine LED geschaltet ist. Ich kenne es so, das in Main.c eine Funktion definiert wird wie ISR(INTERRUPTVEKTOR). Da meldet der Compiler aber einen Fehler. Vielleicht hat hier jemand Erfahrung mit diesem Controller und kann mir sagen wie ich das genau definiere. Oder ganz allgemein wo ich die Info finde wie ich den Interrupt definiere. Es wird ja vom Controller anhängen und nicht immer mit ISR() funktionieren. Danke
pat1984 schrieb: > Vielleicht hat hier jemand Erfahrung mit diesem Controller und kann mir > sagen wie ich das genau definiere. Oder ganz allgemein wo ich die Info > finde wie ich den Interrupt definiere. Es wird ja vom Controller > anhängen und nicht immer mit ISR() Das hängt vor allem vom Compiler ab. Also ließ das Compiler Manual.
Danke für den Tipp mit dem Compiler. Ganz an das Ziel gebracht hat mich das aber noch nicht. Wie bereits erwähnt verwende ich das SPC5 Studio mit der High Tec Compiler Lizenz. Dieses ist eine von ST angepasste Version von Eclipse. Der Compiler scheint auf dem GNU C Compiler zu basieren. Also habe ich mir das Manual von gcc angesehen und dort nach Hinweisen zum Thema Interrupt gesucht. Verstanden habe ich es aber nicht ganz. Dort wird auf das Attribut Interrupt hingewiesen, ich verstehe aber nicht wie ich das dann in den C Code packe. In diesem Zusammenhang stehen auch Varianten für unterschiedliche Architekturen, aber nichts für PowerPC.
Hallo ich kenne SPC5 Studio nicht. Beim kurzen überfliegen ist das wohl ein komplettes Paket mit IO Bibliotheken und RT-OS etc.. Verwendest Du ein OS? Dann steht normalerweise in der Doku des OS wie eine ISR zu deklarieren ist. Ohne OS funktioniert es meist mit einem pragma oder einem keyword (das steht dann im Compiler Manual) z.B: Place
1 | #pragma ghs interrupt
|
immediately before the function. • Prepend the
1 | __interrupt
|
keyword to the function definition.
Ja richtig. Auf Basis einer xml Konfiguration können damit in einem Konfigurationsmanager grundlegende Einstellungen getroffen werden (z.B. Verwendung der Pins, ADC, CAN,...). Daraus wird dann bereits ein Grundgerüst in C generiert und man spart sich so den ein oder anderen Codeteil. Außerdem kann man noch zwischen ChibiOS als RTOS oder OSAL wählen. Bei meinen aktuellen Tests habe ich mich auf OSAL beschränkt. Über den Konfigurationsmanager habe ich auch einen Interruptvektor definiert. Was mir jetzt beim Lesen einiger pdfs und Manuals aufgefallen ist: ich glaube mir fehlen eigentlich zwei Dinge um einen Interrupt über den Taster auszulösen: -Bisher habe ich nur einen Interruptvektor und dessen Priorität definiert, was fehlt ist aber sozusagen die Verknüpfung zwischen dem Interruptvektor und dem GPIO Pin an dem der Taster hängt. -Zusätzlich fehlt mir dann die Unterfunktion, die definiert was genau bei einem Tastendruck zu tun ist. Gut wäre für mich eine Art Tutorial damit ich verstehe wie diese Dinge prinzipiell zusammenhängen und wie ich die Implementierung in C machen muss. Kennt da vielleicht jemand etwas in der Richtung (kann auch ein Buch sein) das ich dann aber auch einfach auf diesen Controller und meinen Compiler umlegen kann? Während des Studiums hatten wir uns nur mit 8bit PICs beschäftigt und da schien mir das alles einfacher.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.