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
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
Und wie sieht read_SRAM aus? Ohne zu wissen, wie die Parameter übergeben werden, kann man da viel spekulieren.
.. mann kann JEDES Prog Optimieren bis es eine Hure ist. wenn es geht, dann lass doch dien Finger davon! meine Erfahrung Fred
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.