Forum: Mikrocontroller und Digitale Elektronik Interrupt deklaration in Headerdatei


von Totti (Gast)


Lesenswert?

Hallo alles zusammen,

ich habe ein Problem mit den Interrupts. Ich wollte ein eigens Int.c 
file für alles Interrupts erstellen. Beim IAR Compiler sehen die 
Interrupts für den MSP so aus:

#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
.......
}

Mein Problem ist jetzt: Wie mache ich diese Interrupts in der 
zugehörigen Headerdatei für den Rest des Programms bekannt??

Gruß,
Totti

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gar nicht.
Wozu auch, Dein Programm ruft die Interruptfunktionen auch nicht auf, 
das macht ja der Controller, und der C-Compiler/Linker erzeugt den 
korrekten Code mitsamt Initialisierung der Interrupttabelle.

Ist es wirklich sinnvoll, alle Interruptroutinen in einem Modul 
zusammenzufassen? Wäre es nicht angebrachter, die Interruptroutine für 
die Behandlung von Peripherieelementen jeweils in dem Modul 
unterzubringen, das sich mit der betreffenden Periphere beschäftigt, 
also den Timer-Interrupt im Timer-Modul, den UART-Interrupt im 
UART-Modul etc.?


von Totti (Gast)


Lesenswert?

Hm, ob ich alle Interrupts in einem Modul packe, oder so wie du 
vorgeschlagen hast, sollte für die Funktion ja erst mal egal sein..

Leider funktioniert es so nicht:( Wenn ich alles in einem einzigen .c 
file zusammenpacke, dann geht es. lagere ich die Interrupts aus, springt 
er sich nicht mehr an. Deshalb dachte ich ja, dass man die Interrupts im 
headerfile bekannt machen muss.

von Uhu U. (uhu)


Lesenswert?

Sieh Dir doch einfach mal die Interruptvektoren im Debugger an.

Wenn der UART0RX_VECTOR korrekt auf usart0_rx zeigt: Prüfe nach, ob der 
Interrupt freigegeben ist.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ist denn Dein Sourcefile, in das Du die Interruptroutinen ausgelagert 
hast, überhaupt Bestandteil Deines Projektes?

Die Interruptroutinen müssen definitiv nicht in einem Headerfile 
bekanntgemacht werden - das hast Du bei einem Projekt, das aus einem 
Sourcefile besteht, ja schließlich auch nicht gemacht und Du gibst 
nirgends außer bei der Definition der Interruptroutinen überhaupt an, 
daß es diese Interruptroutinen gibt.

von Totti (Gast)


Lesenswert?

@all: Danke für die Antworten:)

Ich hab mal eine anderes, kleines Projekt mal auf eine gleich File 
Struktur gebracht. Hier funktioniert es ohne Probleme. Dann muss der 
Fehler also woanders im Programm liegen...

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.