Verständnisfrage zum ATMEGA328P Datenblatt Speicherverwaltung Interruptvektortabelle

OP #6442790
Lesenswert?
• ▲
▼
hallo;
im Datenblatt des ATMEGA328P steht:
Address Labels Code Comments
0x0000 jmp RESET ; Reset
0x0002 jmp INT0 ; IRQ0
0x0004 jmp INT1 ; IRQ1
0x0006 jmp PCINT0 ; PCINT0
usw.
Die Adresse zählt hier von Befehl zu Befehl nur 2 Byte weiter.
Im Simulatorprogramm des AVR Studio 5 sehe ich aber im Speicher:
prog 0x0000  0c 94 1c 00 0c 94 2b 00  .”...”+.
prog 0x0008  18 95 18 95 18 95 18 95  ........
prog 0x0010  18 95 18 95 18 95 18 95
Hier zählt die Adresse von Befehl zu Befehl 4 Byte weiter.
(Mein Programm beginnt so:
jmp  start    ; 1     Reset
jmp  inter0    ; 2   External Interrupt Request 0   INT0_vect
reti      ; 3   External Interrupt Request 1   INT1_vect
reti      ; 4   Pin Change Interrupt Request 0   PCINT0_vect
reti      ; 5   Pin Change Interrupt Request 1   PCINT1_vect
reti      ; 6   Pin Change Interrupt Request 2   PCINT2_vect
usw.)
Wo ist mein Denkfehler ?
#6468576
Lesenswert?
• ▲
▼
und noch ein Tipp:
Es empfiehlt sich die einzelnen Vectoren per .ORG auf die Adresse aus 
dem Datenblatt zu setzen, bei größeren AVR sind die Einträge 4 Byte groß 
um auch direkte Sprünge unterzubringen. Ein nacktes RETI würde bei 
einfachem hintereinander schreiben zu einem Versatz führen.
Ist hier nicht nötig, aber manchmal portiert man ja was auf ein größeres 
Model und wundert sich dann.

Sascha
#6468617
Lesenswert?
• ▲
▼
Sascha W. schrieb:
> bei
> einfachem hintereinander schreiben zu einem Versatz führen.
> Ist hier nicht nötig, aber manchmal portiert man ja was auf ein größeres
> Model und wundert sich dann.

Schon passiert ;-)

Beitrag "Verständnisfrage zum ATMEGA328P Datenblatt Speicherverwaltung Interruptvektortabelle"
1
jmp  inter0    ; 2   External Interrupt Request 0   INT0_vect
2
reti      ; 3   External Interrupt Request 1   INT1_vect
#6468697
Lesenswert?
• ▲
▼
Sascha W. schrieb:
> per .ORG auf die Adresse aus dem Datenblatt zu setzen

Besser noch die Namen der Vektoren aus dem Include-File.
Dann ist man noch flexibler und übersichtlicher.
1
.org $0000
2
jmp RESET ; Reset Handler
3

4
.org TCC0_OVF_vect
5
jmp TCC0_OVF_irq
6

7
.org TCC0_CCA_vect
8
jmp TCC0_CCA_irq
9

10
.org PORTD_INT0_vect
11
jmp PORTD_INT0_ISR
12

13
.org TCF0_OVF_vect
14
jmp TCF0_OVF_irq

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.