Forum: Mikrocontroller und Digitale Elektronik Berechnung im Mega


von Andy (Gast)


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

von Anselm (Gast)


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

von holger (Gast)


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.

von Sven P. (Gast)


Lesenswert?

Recht simpel: Man benutzt keine floats dafür.

Stichwort 'Festkommarechnung'.

von aha (Gast)


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.

von Falk B. (falk)


Lesenswert?


von Oliver (Gast)


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

von Peter D. (peda)


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

von Andy (Gast)


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

von Peter D. (peda)


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

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.