Forum: Mikrocontroller und Digitale Elektronik AVR Ports mit LD statt OUT ansprechen


von ul5255 (Gast)


Lesenswert?

Liebe Forenten,
in einem zeitkritischem AVR Assembler Loop muss ich Werte
auf ATTiny861's Port A ausgeben. Die Werte werden ueber
das Z Register indiziert:
1
forever:
2
    ...
3
    LD      tmp_register, Z
4
    OUT     _SFR_IO_ADDR(PORTA), tmp_register
5
    ...
6
    RJMP    forever

Waere es moeglich, das ganze abzukuerzen, da I/O Ports
ja wie Register in den Anfang des SRAM gemappt werden:
1
    LD     _SFR_IO_ADDR(PORTA + 32), Z

Ich habe leider aktuell keinen Zugriff auf meine
Entwicklungsumgebung, um die Idee zu verifizieren.
Das Datenblatt scheint die Target Registerwerte bei
dem LD Befehl auf 0 bis 31 zu limitieren.

von Jonas B. (jibi)


Lesenswert?

geht nicht.

von ul5255 (Gast)


Lesenswert?

Jonas Biensack schrieb:
> geht nicht.

Mit anderen Worten: Um einen Wert vom SRAM auf einen Port zu bringen 
muss ich immer den Umweg ueber ein Register machen?

von Karl H. (kbuchegg)


Lesenswert?

Drum heißt es ja auch RISC
Reduced Instruction Set

Nicht alles geht, aber das was geht geht dafür schnell.

> Das Datenblatt scheint die Target Registerwerte bei
dem LD Befehl auf 0 bis 31 zu limitieren.

Kunststück. Wenn die Bits zur Codierung des Targets im Opcode 
aufgebraucht sind, dann sind sie aufgebraucht.

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.