allgemeine Frage zur LPM Adressierung

OP #445144
Lesenswert?
• ▲
▼
Hallo,
habe endlich mein Prog zum laufen gebracht. Geschieben mit AVR 
Studio4.12. Das Programm beinhaltet 63 16Bit Konstanten, die ich im 
Programmspeicher folgendermaßen abgelegt habe:

  .org 0x0F00
  .dw 0x1122,0x1159,0x1190,0x11C7,0x11FE,0x1235,0x126C,0x12A2
  .dw 0x12D9,0x1310,0x1347,0x137E,0x13B5,0x13EC,0x1422,0x1459
  .dw 0x1490,0x14C7,0x14FE,0x1535,0x156C,0x15A2,0x15D9,0x1610
  .dw 0x1647,0x167E,0x16B5,0x16EC,0x1722,0x1759,0x1790,0x17C7
  .dw 0x17FE,0x1835,0x186C,0x18A2,0x18D9,0x1910,0x1947,0x197E
  .dw 0x19B5,0x19EC,0x1A22,0x1A59,0x1A90,0x1AC7,0x1AFE,0x1B35
  .dw 0x1B6C,0x1BA2,0x1BD9,0x1C10,0x1C47,0x1C7E,0x1CB5,0x1CEC
  .dw 0x1D22,0x1D59,0x1D90,0x1DC7,0x1DFE,0x1E35,0x1E6C

adressiert wird das ganze mit dem Z-Pointer. Ausgelesen mit LPM. Die 
Adresse vom Z-Low-Byte muss verdoppelt werden, da pro Adresse zwei 8-Bit 
Werte abgespeichert wurden. Nun zu meiner Frage:
"Wieso muss ich für das High-Byte des Z-Pointers die Adresse 
verdoppeln?"
hab es durch probieren herausgefunden. Aber verstehen tuh ich das nicht!
Gast #445155
Lesenswert?
• ▲
▼
Der Programmspeicher (Flash) des AVR ist wortweise
also in 16-Bit Schritten organisiert.
Der LPM-Befehl spricht den Speicher aber byteweise an.
Deshalb muss man die Adressen verdoppeln.
Immer wieder eine beliebte Fehlerquelle bei der Programmierung. :-)


MFG Willi



Antwort schreiben

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.

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.