AVR 32Bit Makro sammlung für Assembler

OP #1933739
Lesenswert?
• ▲
▼
Ich hab mir gedacht diese Makrosammlung könnte auch für andere Leute 
interesant und nützlich sein.

Die datei mit den Makros sollte im anhang sein.

Fals ihr Fehler findet bitte sagen, der code sollte aber eigendlich 
fehlerfrei sein. Aber eine 100%tige Sicherheit gibt es ja nie :D

Cool währ ja noch, wenn man die 32Bit multiplikation und Division
irgendwie reinpacken könnt.
Vieleicht mach ich das noch.

mfg Alex
Angehängte Dateien:
Gast #1938652
Lesenswert?
• ▲
▼
Hi

>Fals ihr Fehler findet bitte sagen, der code sollte aber eigendlich
>fehlerfrei sein.

Ist er nicht. Zumindest die Makros für 'neg' funktionieren so nicht. Um 
eine 32Bit-Zahl zu negieren ist folgender Code notwendig:
1
neg32:                com r16
2
                      com r17
3
                      com r18
4
                      com r19
5
                      subi r16,Low(-1)
6
                      sbci r17,byte2(-1)
7
                      sbci r18,byte3(-1)
8
                      sbci r19,byte4(-1)

>Cool währ ja noch, wenn man die 32Bit multiplikation und Division
>irgendwie reinpacken könnt.

Aber nicht als Makro! Ansonsten sieh dir diese App-Notes an:

AVR200: Multiply and Divide Routines
AVR201: Using the 8-bit AVR Hardware Multiplier
AVR202: 16-Bit Arithmetics on tinyAVR and megaAVR devices

MfG Spess
Gast #1939798
Lesenswert?
• ▲
▼
Hi Leute :-)

Ich hab mir das Dividieren und Multiplizieren mal angesehen und 
verstanden.
Ist eigendlich recht einfach, braucht aber einiges an rechenzeit :)
Das Dividieren braucht so um die 300 Cycles, das Multiplizieren ein
bischen weniger. Beim Multiplizieren hatt man hald das problem das wenn 
man
zwei 32bit zahlen Multipliziert, die höchste zahl die entstehen kann 
eine
64bit zahl ist.


@spess53: Danke für die korektur.
          Du hast reht, als makro ist das Dividieren und Multiplizieren
          nicht gut zu implementieren.

@Peter Dannegger: Danke für die Links.

mfg Alex
Gast #1940881
Lesenswert?
• ▲
▼
Hi Leute

Danke spess53 für dieses Beispiel. Diese Art zu Multiplizieren hab
ich noch garnicht gekannt. Ich hatte ganz übersehen das die beiden MCU's
(ATmega16 und ATmega32) einen MUL befehl haben :-)

mfg Alex
Gast #1941123
Lesenswert?
• ▲
▼
Hi

>Diese Art zu Multiplizieren hab ich noch garnicht gekannt.

Sieh die einfach mal die App-Notes von Atmel an. Das Ganze beruht auf:

AVR201: Using the 8-bit AVR Hardware Multiplier

Dann werden auch die Kommentare verständlicher.

MfG Spess

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.