mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Berechnung im Mega


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

Ich habe eine grundsätzliche Frage zu Berechnungen in einem uC. Und zwar 
muss ich eine Division durchführen, wo im Zähler eine Menge 
Multiplikationen kombiniert mit Additionen und Subtraktionen stehen. Der 
Nenner sieht ähnlich aus. Nun, wenn ich diese Berechnung programmieren 
sind gut 50% des Flash belegt.
Wie macht man sowas normalerweise? Tippt man einfach die Funktion ein, 
oder macht man das über andere Wege?

Bin gespannt auf eure Antworten!

Vielen Dank,
Andy

Autor: Anselm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wüsste nicht wie ich alleine mit Berechnungen so viel Platz brauchen 
könnte...
Allgemein solltest du alles was vorher berechenbar ist, auch so 
machen...
Jeder Zwischenwert den der uC nicht berechnen braucht, ist gesparte Zeit 
& Platz.

Schreib doch mal diese Formel hier rein ;)

Gruß Anselm

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nun, wenn ich diese Berechnung programmieren
>sind gut 50% des Flash belegt.

Dann sind ja noch 50% frei ;) Wo ist das Problem?

>Wie macht man sowas normalerweise?

Das hängt meistens vom jeweiligen Fall ab.
Man muß halt schauen wo sich etwas optimieren lässt.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Recht simpel: Man benutzt keine floats dafür.

Stichwort 'Festkommarechnung'.

Autor: aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuerst sollte mach sich ueberlegen, ob man Float wirklich braucht, oder 
ob die Funktionalitaet auch mit Ganzzahlrechnungen erreicht werden kann.

Falls, ja. Ist die Berechnung fuer den Benutzer ? zB fuer einen LCD, 
dann braucht man davon keine 10000 updates pro sekunde, sondern 
vielleicht eine, oder zwei.

Moeglicherweise kann man die Rechnung auch vereinfachen, zB einen 
Exponential, oder trigonmetrischen auch durch durch ein Polynom 
ersetzen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nun, wenn ich diese Berechnung programmieren
>sind gut 50% des Flash belegt.

Da die float-Routinen nur jeweils einmal eingebunden werden, hast du 
damit fast alle drin, und ab jetzt kannst du fröhlich drauf los rechnen, 
ohne das der Code sich nochmals um soviel vergrößert.

Also, programmier erst einmal weiter, und schau, was passiert. Hilfreich 
ist dabei, den Code mit -Os auf minimale Größe zu optimieren.

Oliver

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andy schrieb:
> Nenner sieht ähnlich aus. Nun, wenn ich diese Berechnung programmieren
> sind gut 50% des Flash belegt.

Warscheinlich werden auch noch 264 Byte SRAM mehr benötigt. Dann hast du 
den Linkerschalter -lm vergessen.


Peter

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Antworten - werde mich nach der Festkommaarithmetik 
umsehen.

@Peter
Was ist der Linkerschalter -lm? Hör ich zum ersten mal!

mfg
Andy

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andy schrieb:
> Was ist der Linkerschalter -lm? Hör ich zum ersten mal!

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_math


Peter

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.