mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit x-Pointer und Tabelle im dseg


Autor: nick01 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuche jetzt schon ne Ewigkeit mit einem Mega8 eine Tabelle aus
dem dseg auszulesen. Der Teil des Programms sieht in etwa so aus:

...
ldi  xl,low(tabelle)
ldi  xh,high(tabelle)
...
main:
ld  r1,x+
out portb,r1
rjmp main
...
...
.dseg
tabelle: .db 0,1,2,3,4,5,6,7
...

Wenn ich in der main auslese wird das r1 nur mit FFh gefüllt. In der
Memory-Anzeige von AVRStudio werden die entsprechenden Bereiche ab $60
in der die Tabelle ja stehen sollte eben nur mit FFh angezeigt.

Ich habe im gleichen Programm im .cseg eine Tabelle welche ich mit dem
z-Pointer per lpm auslese - das klappt ohne Probleme..

Was ist im dseg anders??

Bin für jeden Tipp dankbar!!

Grüße, Nick01

Autor: Christoph Kessler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
beim Z-Register und lpm muß man doch erst noch ein Bit links schieben
wegen der 16Bit-Adressierung, das fehlt hier offensichtlich, ist das
der Fehler?

Autor: nick01 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Sache mit dem z-Pointer klappt ja wie gesagt. Probleme habe ich mit
dem x und y-Pointer, da die ja auf Teile im dseg zugreifen.

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur weil du im Quellcode .dseg machst, heißt das nicht, dass die nacher
im RAM stehen.

Du musst am Anfang vom Programm die Daten da auch hinladen!

Autor: nick01 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
d.h. ich muss die ganzen einträge einzeln über die store-befehle in den
dseg laden??

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder du schreibst sie mit .db ins Flash (cseg) und liest sie mit LPM
über den Z-Pointer aus. Für Tabellen mit zur Entwurfszeit bekannten
Konstanten würde ich sowiso kein SRAM verschwenden (cseg=Flash,
dseg=SRAM, eseg=EEPROM).

...

Autor: GaryB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
also diese Foren sind schon Klasse ich habe gerade genau das Problem
von nick01. Ich habe auch gerade verstanden das was ich da vor hatte
gar nicht gehen kann >> Daten/Konstanten im SRAM zu "programmieren".
Aber im Moment habe ich nun den Hänger - wozu kann ich den dann
bitte die .dseg-Anweisung des Assemblers nehmen... nur um
Speicherzellen zu reservieren bzw. symbolisch zu addressieren?

Hilft mir da mal jemand aus dem Loch raus?

Vielen Dank,
Gary

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wozu kann ich den dann
> bitte die .dseg-Anweisung des Assemblers nehmen... nur um
> Speicherzellen zu reservieren bzw. symbolisch zu addressieren?

So ist es...

...

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.