PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR-GCC Frage



krischan100
23.01.2004, 08:16
Hallo,
kann mir jemand von euch mal sagen was der eindeutige Unterschied zwischen folgenden Befehlen ist:
INTERRUPT
SIGNAL
Denn laut der Dokumentation geht es nicht ganz hervor. Und welches der beiden sollte man am besten einsetzen?

Danke

Krischan

kack0r
23.01.2004, 08:28
. Und welches der beiden sollte man am besten einsetzen?

für was willst du denn einen dieser befehle einsetzen??

gruss

krischan100
23.01.2004, 08:35
Ich möchte die Internen und Externen INTERRUPT´s auswerten.
AVR-GCC gibt mir hierfür aber zwei Befehle zur Verfügung.

Ich habe mit beiden jeweils etwas experimentiert und bin zu keinem richtigen Ergebniss gekommen, daher stelle ich hier mal die Frage.

Krischan

Kjion
23.01.2004, 10:22
Der Unterschied besteht darin, das eine INTERRUPT Routine unterbrochen werden kann, während die SIGNAL Routine erst komplett abgearbeitet wird. Im Zweifelsfall sollte man aber immer SIGNAL nehmen, da zum Beispiel INTERRUPT in Zusammenhang mit dem UART Empfang zu einigen Lustigen Fehlern bzw. Stack überlaufen führen kann.

Die Bezeichnung ist vielleicht etwas ungünstig Gewählt, da man zuerst denkt man sollte die INTERRUPT Routine benutzen ( Ging mir auch zuerst so ;) )

Und eigentlich steht das in der Dokumentation genau so drinnen ;), ist nur vielleicht nicht so schnell zu erkennen...

#define INTERRUPT ( signame )

Introduces an interrupt handler function that runs with global interrupts initially enabled. This allows interrupt handlers to be interrupted.

bzw. :

#define SIGNAL ( signame )

Introduces an interrupt handler function that runs with global interrupts initially disabled.

( Ist aus der Lib C Doku unter "Interrupts and Signals" )

MfG Kjion