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
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 ) { ... }
Ich würde mal frech behaupten, dass die Vektoren in der entsprechenden Device-Headerdatei definiert sind... Ralf
Tipp für die Zukunft ausprobieren und erzeugte lss lesen....
Max schrieb: > Tipp für die Zukunft ausprobieren und erzeugte lss lesen.... Hä? Und wie willst du daraus den ISR-Namen finden?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.