mikrocontroller.net

Forum: Projekte & Code AVR 32Bit Makro sammlung für Assembler


Autor: Alexander B. (ababab)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
neg32:                com r16
                      com r17
                      com r18
                      com r19
                      subi r16,Low(-1)
                      sbci r17,byte2(-1)
                      sbci r18,byte3(-1)
                      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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Alexander B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alexander B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ääää sory, ich hab mich oben verschrieben, ich meinte 600 Cycles.

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Bei ATMegas mit Hardware-Multiplizierer reichen 80 Takte.

MfG Spess

Autor: Alexander B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alexander B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

@Spess53:  Danke werd ich machen :-)

mfg Alex

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier haben wir auch noch einiges zusammengetragen:

Beitrag "DIVISION 32 BIT / 32BIT Beispiel (Assembler) ATmega8"

Bernhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.