www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt deklaration in Headerdatei


Autor: Totti (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.?


Autor: Totti (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Totti (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.