LD, LDD, ST und STD im AVR.

Gast #109125
Lesenswert?

Hi!

Zu den Befehlen LD, LDD, ST und STD steht in der Hilfe von AVR-Studio
"Note that only the low byte of the Y pointer is updated in devices
with no more than 256 bytes data space. For such devices, the high byte
of the pointer is not used by this instruction and can be used for other
purposes."

Seh ich das richtig, das bei zugriffen auf den SRAM, wenn dieser nicht
größer als 256 Byte ist wie bei dem ATTiny26, das High-Byte in XH
(R27), YH (R29) und ZH (R31) weder berücksichtigt noch verändert wird
wie z. B. durch LD r16,y+?

Gruß
Andi
#109128
Lesenswert?

Das geht sogar soweit, daß auch der LPM r0,Z+ nicht ZH verändert, obwohl
er es müßte.

Da haben bei Atmel wohl einige Leute ganz schön getrieft.

Naja, inzwischen wurde der Fehler "behoben", indem dieser Befehl
einfach wieder aus dem Datenblatt genommen wurde :-(


Peter
Gast #109129
Lesenswert?

Das mit dem LPM ist mir bereits bekannt.
Allerdings gibs LPM r0,Z+ laut der Hilfe sowieso nicht zum Tiny26 bzw.
"das Resultat ist undefiniert".
Wenn natürlich wenigstens das low-Byte hochgezählt werden würde, könnte
man LPM r0,Z+ doch einsetzen wenn man sicher ist, das die Daten im Flash
sich nur in einer 256Byte-Seite befinden?

Gruß
Andi
Gast #109131
Lesenswert?

Das mit dem sicheren ADIW statt LPM rd,z+ ist schon klar aber wenn man
Code-Optimierung zwecks Platzmangel, weil man Anfangs wild drauf los
geprogt hat und nun der Platz ausgeht, sucht man halt nach
alternativen.

Gruß
Andi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren