Forum: Mikrocontroller und Digitale Elektronik ATtiny102/104 Instruktionssatz?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Frage zum Instruktionssatz von ATtiny102/104:

Im neuesten Datenblatt von Atmel von 10/2016 sind im Abschnitt "25. 
Instruction Set Summary" u.a. folgende Befehle gelistet:

* ADIW, SBIW

* LDD, STD

Und in "8.7. The X-register, Y-register, and Z-register" wird "indirect 
with displacement" Adressierung genannt:

https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42505-8-bit-AVR-Microcontrollers-ATtiny102-ATtiny104_Datasheet.pdf

Das scheint nich korrekt zu sein, denn die Codierung der 16-Bit 
Instruktionen LDS und STS überschneidet sich mit denjenigen für LDD und 
STD: Alle haben 0xa als höchstes Nibble, wobei bei den normalen Cores 
mit 32 GPRs Bit 13 Teil des Offsets ist.  Siehe zum Beispiel wie 
Binutils die Instruktionen codiert:

https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=include/opcode/avr.h#l289

LDD und STD scheinen also Tipp- oder Kopierfehler aus Datenblättern zu 
normalen AVRs zu sein?

Für ADIW / SBIW finde ich keine Überschneidungen; aber dabei handelt es 
sich wohl auch um Fehler im Datenblatt?

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Johann L. schrieb:

> Aber dabei handelt es
> sich wohl auch um Fehler im Datenblatt?

Ja. Das ist Coreversion "AVR8L_0". Wie auch die Tinys 4, 5, 9, 10, 20, 
40. In älteren DBs steht's noch richtig (ich habe z.B. eins für den 
Tiny20 von 2014, immerhin schon im farbigen Design), später wurde es 
offensichtlich zumindest bei einigen Teilen verschlimmbessert.

Aber häh: mit den Teilen würde ich mich allenfalls abgeben, wenn ich 
noch viele tausende davon rumliegen hätte und eine Anwendung, in die die 
reinpasssen...

von S. L. (sldt)


Lesenswert?

> Im neuesten Datenblatt von Atmel von 10/2016 sind
> im Abschnitt "25. Instruction Set Summary" u.a.
>  folgende Befehle gelistet:
> * ADIW, SBIW
> * LDD, STD

Schon, aber dahinter steht doch "N/A"!?

Und der Abschnitt 8.7 - nun ja ...

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

S. L. schrieb:
>> Im neuesten Datenblatt von Atmel von 10/2016 sind
>> im Abschnitt "25. Instruction Set Summary" u.a.
>>  folgende Befehle gelistet:
>> * ADIW, SBIW
>> * LDD, STD
>
> Schon, aber dahinter steht doch "N/A"!?

Ja, tatsächlich, das habe ich (und wohl auch Johann) komplett übersehen. 
Aber wer sucht auch schon nach dieser Information in einer Spalte, deren 
Kopf mit dem Bezeichner "#Clocks" beschriftet ist?

Nö, wenn die Instruktion nicht verfügbar ist, dann hat sie in der 
Summary einfach nicht aufzutauchen. Früher ging das doch auch mit dieser 
einfachen und einsichtigen Logik.

Aber: in den neuesten DBs gibt's ja nicht mal mehr eine Summary. Statt 
dessen den Hinweis, man möge in der allgemeinen Instruction Set 
Reference nachsehen. Und dort wird es endgültig sehr spannend, 
herauszufinden, ob eine konkrete MCU eine konkrete Instruktion (und ggf. 
auch noch eine bestimmte Ausprägung davon) unterstützt und wie viel 
Takte die dort genau braucht.

Die spinnen, die MicroChip-ler...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

S. L. schrieb:
>> * ADIW, SBIW
>> * LDD, STD
>
> Schon, aber dahinter steht doch "N/A"!?
>
> Und der Abschnitt 8.7 - nun ja ...

ahhh ja.  Dann passt ja alles zusammen :-)

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.