Forum: Mikrocontroller und Digitale Elektronik Was kommt in die Klammern von ISR()? - Interrupt, Atmega128


von Tim Schneider (Gast)


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

von Karl H. (kbuchegg)


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 )
{
  ...
}

von Ralf (Gast)


Lesenswert?

Ich würde mal frech behaupten, dass die Vektoren in der entsprechenden 
Device-Headerdatei definiert sind...

Ralf

von Max (Gast)


Lesenswert?

Tim Schneider schrieb:
> Heisst jetzt der Vektorname "INT0_vect"?

Ja

von Max (Gast)


Lesenswert?

Tipp für die Zukunft ausprobieren und erzeugte lss lesen....

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Max schrieb:
> Tipp für die Zukunft ausprobieren und erzeugte lss lesen....

Hä? Und wie willst du daraus den ISR-Namen finden?

von Rangi J. (rangi)


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.

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
Noch kein Account? Hier anmelden.