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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren