mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega2561: 256KB flash mit 8Bit -Architektur. trick?


Autor: rufto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast dir die ANtwort doch schon selbst gegeben:

>>einen 17Bit breiten Programmcouter

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.