Forum: Mikrocontroller und Digitale Elektronik Interrupt SPC56


von pat1984 (Gast)


Lesenswert?

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

von foo (Gast)


Lesenswert?

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.

von foo (Gast)


Lesenswert?

lies natürlich, scheiß Autokorrektur.

von pat1984 (Gast)


Lesenswert?

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.

von foo (Gast)


Lesenswert?

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.

von pat1984 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.