mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tabellen in SRAM


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo...
Was ist nochmal der Grund dafür

ldi ZH,high(Tabelle*2)
ldi ZL,low (Tabelle*2)

das wenn auf Tabellen zugreifen (mit Pointern) möchte der Inhalt mit 2
multipliziert werden muss.

Danke für eure Antworten

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die Tabelle 16-Bit-Werte enthält, dann ist alle zwei Bytes ein
neuer Wert darin zu finden. Klar?

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil die Tabelle im Flash wortweise organisiert ist.
Im SRAM siehts doch anders aus, oder?
AxelR.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö.

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das macht man wohl, wenn "Tabelle" im Flash liegt und mit dem
Z-Pointer danach per LPM darauf zugegriffen werden soll, da das Label
"Tabelle" die Adresse in 16-Bit words enthält, während LPM die
Adresse in Bytes, also 8-Bit words erwartet.

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt immer auf den Compiler bzw. Assembler an. Bei Atmel AVR Assembler
ist der Programmcounter "WORD" organisiert angelehnt an die
Organisation des Progammspeichers. Daher kann auf sind auch alle Labels
im .CSEG nur equivalent "gerade Adressen", daher die Multiplikation
mit 2. Der LPM Befehl greift ja byteweise auf den Programmspeicher zu.
Andere z.b. IAR Assembler verhalten sich da etwas anders, da sind auch
Labels auch im .CODE Segment byteweise organisiert.

Autor: ThoWi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
im SRAM werden die Tabellen IMHO schon byteweise abgelegt und
verarbeitet. Jedenfalls funtioniert

.DSEG
tabelle: .byte Länge
.CSEG
...
ldi ZH,high(Tabelle)
ldi ZL,low(Tabelle)

bei meinen Programmen und dem Atmel AVR Assembler recht
zufriedenstellend und liefert bisher immer die richtigen Ergebnisse.

Gruß
Thorsten

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Alex
kannst ja die Frage vielleicht nochmal spezifizieren:
Tabelle im SRAM oder FLASH?
LPM-Befehl?

Gruß nochmals an alle
AxelR.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja also ich hab jetzt speziell die Tabelle im Flash gemeint...Danke für
die Antworten

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.