was bedeutet eine größere Interrupt Vector Size

OP #2768672
Lesenswert?

Hallo!

ich hätte hier mal ne theoretische Frage! Und zwar soll ich in einem 
Protokoll die Unterschiede der ATmega8 Familie erklärn. Also die Familie 
unterscheidet sich nur in Speichergrößen, Boot Loader Support und 
Interrupt Vector Size. Die ersten Beiden Dinge sind mir klar. Nur weiß 
ich nicht was die Größe des Interrupt Vectors für Vorteile bringt????. 
Vl. heißt das, mann kann mehr Codezeilen für ISR reintexten?... Kennt 
sich da wer aus?
Gast #2768681
Lesenswert?

Hi

>Und zwar soll ich in einem
>Protokoll die Unterschiede der ATmega8 Familie erklärn.

Welche ATMega8 Familie?

>Nur weiß
>ich nicht was die Größe des Interrupt Vectors für Vorteile bringt????.
>Vl. heißt das, mann kann mehr Codezeilen für ISR reintexten?... Kennt
>sich da wer aus?

Ich rate mal: Bei AVRs bis 8Kb Flash reicht ein rjmp um an jede Stelle 
des Programmspeichers zu springen. Bei mehr Flash wird ein jmp benötigt. 
rjmp belegt ein Word im Programmspeicher. Ein jmp 2 Word.

MfG Spess
OP #2768699
Lesenswert?

OK ich meinte exakt die 8-bit Familie megaAVR (ATmega8 ist natürlich nur 
ein Controller daraus)!

@ PeterII:
heißt das ich kann also mit einer Interrupt Vector Size von 1 
instruction Word/Vector nur 2^8=256 Codezeilen für ISR verwenden. Bei 
einer Size von 2 instruction words/vector jedoch schon 2^16= 65536. D.h. 
mit 65536 kann ich  einen Flash von 8, 16 oder 32Bytes schon vollständig 
adressieren.
Habe ich das richtig verstanden, 256 Zeilen für ISR sind nämlich nicht 
wirklich viel?!
Gast #2768708
Lesenswert?

Johannes Ferdinant schrieb:
> heißt das ich kann also mit einer Interrupt Vector Size von 1
> instruction Word/Vector nur 2^8=256 Codezeilen für ISR verwenden. Bei
> einer Size von 2 instruction words/vector jedoch schon 2^16= 65536. D.h.
> mit 65536 kann ich  einen Flash von 8, 16 oder 32Bytes schon vollständig
> adressieren.
> Habe ich das richtig verstanden, 256 Zeilen für ISR sind nämlich nicht
> wirklich viel?!
nein


- wenn die Interrupt Vector Size 1 ist, dann ist es ein WORD also 2byte. 
dort müssen die opcodes und werte rein. also JMP 0x12

- bei 2 hat man also 4byte platz, man könnte also auch 4 NOPs 
reinschreiben. aber üblicher ist denn ein (R)JMP 0x1234

mit der größe der ISR hat das überhaupt nichts zu tun, ausser wenn du es 
schaffst du ISR auf 2 oder 4byte unterzubekommen, dann kannst du dir den 
JMP sparen.

(sind bestimmt noch fehler drin, aber grundstätzlich sollte es so 
passen)
Persönliche Seite #2768718
Lesenswert?

Nein. Beim Interrupt-Vektor ist entweder nur 1 Instruction-Word pro 
Interrupt oder 2 Words. Bei AVRs mit bis zu 8kB Flash reicht 1 Word aus, 
um mit einem Sprung (RJMP) bis ans Ende des Flashs zu kommen, wo dann 
die Interrupt-Routinen sind. Bei einem größeren Flash reicht ein RJMP 
nicht mehr aus, da es nicht den ganzen Flash adressieren kann. Deshalb 
muss man ein JMP nehmen, welches 2 Words groß ist. Und genau deshalb 
sind bei größeren AVRs die Interrupt-Vektoren größer - damit da auch ein 
JMP reinpasst. Die Interrupt-Routinen selbst liegen ja nicht im 
Int-Vektor und können deshalb beliebig groß sein. Sie müssen nur 
angesprungen werden können, was bei großen AVRs mit einem RJMP nicht 
geht. Amen.

BTW: Hast Du eigentlich schonmal ins Datenblatt eines AVRs geschaut? Ich 
sach nur: RTFM! Das steht da alles drin.


Gruß
Jonathan
Gast #2768799
Lesenswert?

Jonathan Strobl schrieb:
> Bei einem größeren Flash reicht ein RJMP
> nicht mehr aus, da es nicht den ganzen Flash adressieren kann. Deshalb
> muss man ein JMP nehmen, welches 2 Words groß ist.

Hallo,

das stimmt schon, aber der Vorteil ist trotzdem recht gering, von 
"Müssen" kann sowieso keine Rede sein. Man kann immer und bei jedem 
Prozessor eine relativen JUMP auf einen absoluten JUMP führen und damit 
jeden Speicherplatz erreichen. Der eine Befehl mehr fällt weder 
platzmässig noch zeitlich ins Gewicht. Man kann daher sogar mit 8 bit 
Vektoren auskommen, dann steht halt am Anfang des Speichers eine 
Interrupt Tabelle mit 256 Sprungbefehlen. Mehr IRQs braucht niemand.

Gruss Reinhard

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