Forum: Mikrocontroller und Digitale Elektronik adiw SRAM lesen


von ebby (Gast)


Lesenswert?

Hallo
ich möchte ein im SRAM abgelegtes Byte lesen. Dafür nutze ich den 
X-Zeiger als Lese-Zeiger und die Routine call read_SRAM (der X-Zeiger 
wird darin erhöht).
Nun ist mir beim Programmieren aufgefallen, dass das Lesen nur nach der 
Variante A funktioniert, NICHT aber nach Variante B.
Ich frage mich nur, warum das nicht geht.
Im SRAM habe ich 64 Byte ab $0060 reserviert.

Variante A:

  adiw XH:XL,28
  call read_SRAM
  mov temp1, SRAM_register
  call lcd_data

  call read_SRAM
  mov temp1, SRAM_register
  call lcd_data

  call read_SRAM
  mov temp1, SRAM_register
  call lcd_data

  call read_SRAM
  mov temp1, SRAM_register
  call lcd_data

  call read_SRAM      ;A wird gelesen
        mov temp1, SRAM_register
  call lcd_data

;-------------------------------------------

Variante B:

  adiw XH:XL,32
  call read_SRAM            ;A wird NICHT gelesen
  mov temp1, SRAM_register
  call lcd_data

von Jochen M. (taschenbuch)


Lesenswert?

ebby,

Etwas mehr Kontext bitte, besonders die read_SRAM Routine möchte ich 
sehen.
Auf welchem Wert steht XH:XL vor dem adiw?
Als was ist SRAM_REGISTER deklariert?

Jochen Müller

von Johannes M. (johnny-m)


Lesenswert?

Und wie sieht read_SRAM aus? Ohne zu wissen, wie die Parameter übergeben 
werden, kann man da viel spekulieren.

von Fred (Gast)


Lesenswert?

.. mann kann JEDES Prog Optimieren bis es eine Hure ist.
wenn es geht, dann lass doch dien Finger davon!

meine Erfahrung

Fred

von ebby (Gast)


Angehängte Dateien:

Lesenswert?

okay SRAM-Routine angehängt

Programm:           buffer = reservierte Bytes im SRAM

ldi XL,low(buffer)         ; read-Pointer
ldi XH,high(buffer)

und dann

    weiter mit Variante A oder B

von Fred (Gast)


Lesenswert?

wer bewegt dann da den Pointer?
oder hab's übersehen?


Fred

von ebby (Gast)


Lesenswert?

habe den Fehler schon gefunden
hatte buffersize nochfalsch deklariert

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.