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
das YH wird nicht verändert steht da :-) und kann für andere zwecke genutzt werden...
Und das gleiche gilt bei SRAM-Zugriffen dann wohl auch für XH und ZH? Gruß Andi
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
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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.