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
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
>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.
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.
>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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.