Forum: Mikrocontroller und Digitale Elektronik LD, LDD, ST und STD im AVR.


von Andi (Gast)


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

von LameM (Gast)


Lesenswert?

das YH wird nicht verändert steht da :-) und kann für andere zwecke
genutzt werden...

von Andi (Gast)


Lesenswert?

Und das gleiche gilt bei SRAM-Zugriffen dann wohl auch für XH und ZH?

Gruß
Andi

von Peter D. (peda)


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

von Andi (Gast)


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

von ...HanneS... (Gast)


Lesenswert?

Hi...

Dann erhöhe ich Z aber lieber per ADIW und nutze LPM ohne Parameter
(wie bei den Classic-AVRs), kostet ein Wort Code mehr, funktioniert
aber bei allen Typen.

...HanneS...

von Andi (Gast)


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

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.