ATMega2561: 256KB flash mit 8Bit -Architektur. trick?

Gast #1189650
hallo,  schreibe gerade  ein bericht über ein praktikum .

mein betreuer wies mich daraufhin, in meinem Bericht zu erklären wie es 
möglich ist 256KByte flash mit dieser 8Bit-Architektur zu adressieren .

hab jetzt nochmal in datenblatt nachgesehen ..   also dort steht nur das 
es halt einen 17Bit breiten Programmcouter gibt. Instruktionen sind min 
16 Bit breit.

d.h. 2^17 =~ 128K * 2Byte pro Instruktion = ~ 256 KByte .

ist das alles.

also ich mein  die 17Bit müssen ja auch gehandled werden vom prozessor - 
wie funktioniert das ?

das ich das noch ein bissl vertiefe in meinem bericht.
Persönliche Seite
Es gibt auch spezielle Instruktionen SFRs zur Handhabung. Nur ein 17-Bit 
(bzw. 3-Byte-PC) genügt nicht; man muss ja auch Strünge ausführen 
können, d.h. dem PC neue Werte zuweisen. Weil ein (Doppel)Register nur 
16 Bit halten kann, gibt's den EICALL Befehl, der mit EIND verwurstet 
wird, um bestimmte Sprünge/Calls machen zu können.

Johann
Gast
Genau, der Programmzähler hat mit der linearen Ausführung ja nix am Hut: 
relative Sprünge funktionieren wie gehabt, genauso wie Rechnerei und 
'Überspringbefehle'. Interessant wirds erst bei absoluten Sprüngen, aus 
der Verktortabelle raus zum Bleistift, oder bei indirekten. Dazu gibts 
dann entweder spezielle Sprungbefehle (rjmp -> jmp -> ejmp), die 
funktionieren auch wie gehabt, werden aber im Programmspeicher 
entsprechend länger, um alle Adressbits unterbringen zu können.
Bei der indirekten Springerei reicht der Z-Zeiger auch nicht mehr aus, 
deshalb muss es irgendwo ein weiteres Adressregister geben, und wenns 
nur aus einem 'E'-Bit besteht.
Gast
Hi

Der Befehlcode von Calls und Jumps kann eine 24Bit-Adresse aufnehmen. 
Bei AVRs mit >128 KByte Flash werden 3 Byte auf den Stack gelegt.

>gibt's den EICALL Befehl, der mit EIND verwurstet
>wird, um bestimmte Sprünge/Calls machen zu können.

EICALL und EIJMP verwenden für die unteren 16 Bit Z und für die oberen 
das Register EIND.

MfG Spess

Antwort schreiben

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