PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verwendung von Interrupts



Hero_123
25.03.2011, 20:35
Hallo

Ich habe da eine Verständnisfrage....

ich verwende eine vom Roboterhersteller bereitgestellte Lib; in dieser Lib sind u.a. Funktionen für den USART definiert, wobei auch Interrupts (ISR(USART1_RX_vect) und ISR(USART1_UDRE_vect) zum Senden und Empfangen) verwendet werden.

Ich benutze diese USART-Funktionen nicht, sondern habe mir meine eigenen geschrieben, verwende aber die selben Interrupts (ISR(USART1_RX_vect) und ISR(USART1_UDRE_vect) und nutze andere Teile der Hersteller-Library bei meinen Programmmen.

Jetzt meine Fragen:

1.) - kann es da zu Problemen kommen, wenn ein Interrupt einmal "richtig" im Programm zugewiesen und verwendet wird (bei meinem Programm) und das zweite mal "nur" in einer Library, die zwar beim Programm dazugebunden wird, aber diese USART-Funktionen nicht aufgerufen werden?

2.) Würde der Compiler (oder das AVR-Studio) "meckern", wenn ich den (ISR(USART1_RX_vect)) in meiner Anwendung 2mal verwende:
- einmal direkt in meinem Programm einer Funktion zuweise verwende
- und zusätzlich eine Funktion aus der Lib des Herstellers verwende, die den selben Interrupt nutzt (ich frage deshalb, weil aus der Doku der Lib NICHT ersichtlich ist, welche Interrupts schon genutzt werden; klar, ich könnte die ganzen source-files durchwühlen :(, das ist aber ganz schön nervig)

mfg

Hero_123

sternst
25.03.2011, 22:13
Die ISRs aus der Lib werden zu deinem Programm gar nicht hinzugelinkt, ansonsten würdest du nämlich vom Linker eine Fehlermeldung bekommen.

Hero_123
25.03.2011, 23:56
Hi sternst

Danke für die Antwort, das mit Linker war mir nicht so ganz klar. Der Linker würde jedenfalls eine Fehlermeldung erzeugen, wenn ich EINE ISR in verschiedenen Programmen (*.c-files) erzeugen und diese Programme in meinem "Haupt- Programm" verwenden würde (per #include etc).

mfg

Hero_123