Forum: Compiler & IDEs Interrupt in Assembler


von Walter (Gast)


Lesenswert?

ich möchte unter gcc eine Interruptroutine in Assembler schreiben.

wenn ich wie angegeben
#include <avr/io.h>
.global PCINT0_vect
PCINT0_vect:
  push  r2
  pop  r2
  reti

wird nichts in die Sprungtabelle eingetragen,

so gehts aber:
#include <avr/io.h>
.global __vector_2
__vector_2:
  push  r2
  pop  r2
  reti

was kann da falsch sein?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Walter wrote:

> was kann da falsch sein?

Der Name des Vektors?  Deine avr-libc-Version zu alt?

Guck doch mal in <avr/ioXXX.h> nach, welche Vektornamen es für deinen
Prozessor wirklich gibt.

von Walter (Gast)


Lesenswert?

ist für den Tiny24,
in iotnx4.h steht:

/* Pin Change Interrupt Request 0 */
#define PCINT0_vect      _VECTOR(2)

es funktioniert auch wenn ich den Interrupt mit
ISR(PCINT0_vect)
in C schreibe

wie erfahre ich die avr-libc-Version?

von Walter (Gast)


Lesenswert?

uups, peinlich,
sorry für die Aufregung

ich hatte mir die Sprungtabelle im Simulator in AVRStudio angeschaut,
und da zeigt er die Sprungtabelle nicht immer von 0 an (hab einfach 
nicht auf die Adresse links geschaut), in dem Fall ab Vektor11, warum 
auch immer.

Im Listing ist es korrekt ...

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.