ATmega8 ATmega16

#604239
Lesenswert?
• ▲
▼
Martin K. wrote:
> haben diese beiden den gleichen Assemblerbefehlssatz?
Nicht ganz. Der Mega16 hat mehr als 8 KiB Flash. Deshalb gibts bei ihm 
z.B. die Befehle jmp und call, weil rjmp und rcall nur bis 8 KiB 
addressieren können.

Aus dem Grund sind auch (*ACHTUNG*: Häufiger Umsteiger-Fehler) die 
Interrupt-Vektoren beim Mega16 doppelt so lang wie beim Mega8, weil jmp 
32 Bit (2 Wörter) lang ist, rjmp aber nur 16 Bit. Deshalb reicht es bei 
leeren Interrupt-Vektoren (also Vektoren nicht genutzter Interrupts) 
nicht, einfach ein reti reinzuschreiben, weil reti auch nur 16 Bit hat 
und dadurch die Vektortabelle durcheinandergerät. Entweder mit Adressen 
arbeiten (.org) oder "nop reti" reinschreiben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.