ISR; Woher weiß ich das Vecotr mit _vect aufhört?

Gast #4719411
Hallo,

ich beschäftige mich gerade mit den Interrupten und ISR.
Jetzt komme ich auf Frage, die ich nirgends per "google" beantwortet 
bekomme.

Es geht um folgendes:

Speziell geht es um die ISR:
Das Datenblatt habe ich mir angeschaut und genau deswegen komme ich auch 
zu den Fragen, ansonsten hätte ich vermutlich einfach kopiert ;)

http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf

Die Interrupt-Vector-Tabelle ist auf Seite 48.
Mir geht es um PCINT0:
3 0x0002 PCINT0 Pin Change Interrupt Request 0

Woher weiß Arduino jetzt beim dem Befehl:
ISR (PCINT0_vect){}, das _vect auf die Vecotor Referenz geht?

Ich finde keine Dokumentation darüber, was "_vect" tut!
Desweiteren habe ich gesehen, das unterschiedliche AVRs PCINT0 andere 
ProgrammAdressen sind.

Könnte ich auch einfach folgendes schreiben?
ISR (0x0002){}

Wo liegt in Arduino die Referenz von der Variablen PCINT0_vect?
Das habe ich noch nicht geblickt.


Vielen Dank
@ Daniel Kraft (Gast)

>Woher weiß Arduino jetzt beim dem Befehl:
>ISR (PCINT0_vect){}, das _vect auf die Vecotor Referenz geht?

Das haben die Leute vom avr gcc Compiler so festgelegt, der steckt auch 
im Arduino drin

>Ich finde keine Dokumentation darüber, was "_vect" tut!

Es ist ein Name, der so definiert wurde. Hat den nicht ganz kleinen 
Vorteil, daß man einfach die Namen der Vektoren aus dem Datenblatt + 
_vect hinschreiben kann.

>Desweiteren habe ich gesehen, das unterschiedliche AVRs PCINT0 andere
>ProgrammAdressen sind.

>Könnte ich auch einfach folgendes schreiben?
>ISR (0x0002){}

Lass es.

>Wo liegt in Arduino die Referenz von der Variablen PCINT0_vect?

In den Headerfiles tief im avr gcc.
Gast
Hi

>Die Interrupt-Vector-Tabelle ist auf Seite 48.
>Mir geht es um PCINT0:
>3 0x0002 PCINT0 Pin Change Interrupt Request 0

>Woher weiß Arduino jetzt beim dem Befehl:
>ISR (PCINT0_vect){}, das _vect auf die Vecotor Referenz geht?

Deine Frage ist irgend wie unverständlich. Aber S.49 hast du auch schon 
angesehen?

MfG Spess
Gast
Hallo Spess,

was soll ich auf Seite49 sehen?

Fragen:

1.Woher weiß Arduino, was PCINT0_vect ist, speziell _vect ist
2.Wo liegt die Referenz für die _vect Tabelle, gibt es sowas überhaupt?
3.Kann ich auch einfach ISR(0x0002){} schreiben und habe das gleiche 
Ergebnis

Das wären in Kurzform meine Fragen
Gast
ich verstehs leider nicht was du mir damit sagen willst?
Bist du jetzt auf Seite 49 oder bei dem Link?

Bitte ein bisschen genauer erklären, sonst verstehe ich es einfach nicht
C:\Arduino\hardware\tools\avr\avr\include\avr

aus iotn48.h

1
/* Interrupt Vectors */
2
/* Interrupt vector 0 is the reset vector. */
3

4
#define INT0_vect_num     1
5
#define INT0_vect         _VECTOR(1)
6

7
#define INT1_vect_num     2
8
#define INT1_vect         _VECTOR(2)
9

10
#define PCINT0_vect_num   3
11
#define PCINT0_vect       _VECTOR(3)
12

13
#define PCINT1_vect_num   4
14
#define PCINT1_vect       _VECTOR(4)
15

16
#define PCINT2_vect_num   5
17
#define PCINT2_vect       _VECTOR(5)
18

19
#define PCINT3_vect_num   6
20
#define PCINT3_vect       _VECTOR(6)
Moderator Persönliche Seite
Daniel Kraft schrieb:
> 1.Woher weiß Arduino, was PCINT0_vect ist, speziell _vect ist

Arduino benutzt den GCC und die avr-libc, und die Leute von der
avr-libc haben sich dieses Schema mal ausgedacht.  Die Benamsung
ist dabei jeweils „hart am Datenblatt dran“ (mit dem angehängten
„_vect“, was du ja schon bemerkt hast).  Allerdings sind manchmal
die Datenblätter zwischen den AVRs nicht sehr konsistent, und haben
zuweilen auch seltsam anmutende Sonderzeichen in den Namen, die dann
für die Vektornamen weggelassen (Kommas) oder durch Unterstriche
ersetzt worden sind.  So heißt der Vektor für den Timerüberlauf des
Timer 0 beim ATtiny13 “TIM0_OVF_vect”, bei den meisten anderen AVRs
aber “TIMER0_OVF_vect”.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.