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
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.?
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.
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.
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.