tschoeatsch schrieb:
Ein ganzer Sack voll Bahnhöfe.
Kann jemand meinen Beitrag #32 löschen? Ich versteh' nicht mehr viel.
Ledmatrix 32x64 RGB mit 12bit-Farben. Wie machen die das?
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.
Hinweis kann nach Kenntnisnahme deaktiviert werden!
-
-
Warum wird in dem Macro
- !SUBI R24,0xFF
- !SBCI R25,0xFF
- ADIW r24,1
- !SUBI R24,0xFF
-
Das geht natürlich schneller, wenn die Doppelregister frei sind (ab R24).Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.
-
Mitch64 schrieb:
Warum wird in dem Macro
- !SUBI R24,0xFF
- !SBCI R25,0xFF
- ADIW r24,1
Nein, der Operationscode ist imho der Gleiche wie bei Adiw. Das ich es übernahm rührt aber daher, das ich mir zuvor das Kompilat der verschiedenen Varianten zum Vergleich angesehen habe und für einen um 2 Takte schnelleren Vorschlag, aus Bequemlichkeit den Code zusammengeschoben habe.
Ist aber nicht ungewöhnlich, das Additionen auf ein einzelnes Register mit dem imediate-Sub Befehl und Kompliment bewerkstelligt werden. Es gibt nun mal kein ADDI.
Aber ja, Adiw macht's Gleiche.
Mitch64 schrieb:
Man könnte doch auch die Addition von Hand machen mit ADD und ADC.
Es ist etwa doppelt soviel Getippe. - !SUBI R24,0xFF
-
Die Variante zu Inkremntieren mit dem SUBI und SBIC war mir neu.
Kann ich aber logisch nachvollziehen.
Mit ADD und ADC war mir klar, dass es aufwendiger ist, schließlich muss man das per Register machen, die müssen auch zuvor geladen werden.
ADIW wird auch nicht von allen Controllern unterstützt.
So gesehen ist das ein guter Weg, Werte zu Inkrementieren.
Schön ist, dass sich das auch erweitern lässt auf Erhöhung um 2 oder mehr und man nicht auf 16-Bit Werte beschränkt ist.
Es klappt auch wunderbar mit Long und DWord Werten.
Danke nochmal für deine Erklärung. -
Mitch64 schrieb:
Danke nochmal für deine Erklärung.
Mitch64 schrieb:
Mit ADD und ADC war mir klar, dass es aufwendiger ist, schließlich muss man das per Register machen, die müssen auch zuvor geladen werden.
BASCOM-Quellcode
Doch sind 12 Takte aber auch nicht das Ende der Fahnenstange. Nicht das nachher einer glaubt, 12 sind das Limit Es geht auch in 10!
Mitch64 schrieb:
ADIW wird auch nicht von allen Controllern unterstützt.
-
Das steht so im "Instruction Set" zum AVR auf Seite 33.
Kandidaten sind z.B Tiny 11,12
Auszug aus dem Dokument:
7. ADIW – Add Immediate to Word
7.1. Description
Adds an immediate value (0 - 63) to a register pair and places the result in the register pair. This
instruction operates on the upper four register pairs, and is well suited for operations on the pointer
registers.
This instruction is not available in all devices. Refer to the device specific instruction set summary.