Was kommt in die Klammern von ISR()? - Interrupt, Atmega128

Gast #2509142
Lesenswert?

Hallo,

Ich möchte mit einem Atmega128 ein Interrupt auslösen, wenn sich der 
Pegel an INT0 (External Interrupt Request 0) ändert.
Für die implementierung des Interrupts verwende ich das ISR Makro.
also z.B:

ISR(vektorname)
{
  ..
}

In die Klammern von ISR() sollte ja der Interrupt Vektor Name kommen. 
Doch wie finde ich den heraus? Im Datenblatt wird auf auf Seite 60 in 
der Interrupt Vektor Tabelle für meinen INT0 Interrupt unter "Source" 
"INT0" angegeben.
Heisst jetzt der Vektorname "INT0_vect"? Oder anders?
Oder kommt in diese Klammern die Adresse des Interrupts?


Danke für eure Hilfe
#2509145
Lesenswert?

Tim Schneider schrieb:

> In die Klammern von ISR() sollte ja der Interrupt Vektor Name kommen.
> Doch wie finde ich den heraus? Im Datenblatt wird auf auf Seite 60 in
> der Interrupt Vektor Tabelle für meinen INT0 Interrupt unter "Source"
> "INT0" angegeben.

An den hängst du noch _vect drann und im Regelfall hast du damit den 
Namen des Interrupt Vektors, so wie er im AVR-GCC heißt.

> Heisst jetzt der Vektorname "INT0_vect"? Oder anders?

Genau so.


ISR( INT0_vect )
{
  ...
}
#2510008
Lesenswert?

Für deinen Fall findest du die Defines in der Datei "iom128.h". Die sich 
bei WINAVR in Ordner ... WinAVR\20090313\avr\include\avr\ befindet.
Dort gigt es den folgenden Abschnitt:
1
/* Interrupt vectors */
2

3
/* External Interrupt Request 0 */
4
#define INT0_vect      _VECTOR(1)
5
#define SIG_INTERRUPT0      _VECTOR(1)
6

7
/* External Interrupt Request 1 */
8
#define INT1_vect      _VECTOR(2)
9
#define SIG_INTERRUPT1      _VECTOR(2)
Dort stehen die vordefinierten Bezeicher für alle Vektoren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren