Benutzung von Flashspeicher

OP #4559865
Lesenswert?
• ▲
▼
Hallo zusammen

Ich bin derzeit an einem Projekt dran, bei dem ich unter anderem den 
gemessenen Lux Wert in candela/m2 umrechnen muss, was aber ganz einfach 
mit einer linearen funktion passiert. (Ich arbeite mit einem SAMD09)
Memory (derzeit):
Program Memory Usage   :  9308 bytes   56.8 % Full
Data Memory Usage   :  4064 bytes   99.2 % Full

Wenn ich nun bei meiner Candela Berechnung den Wert zurückgeben will, 
erhöht sich der Flash Speicher dabei auf

Program Memory Usage   :  16976 bytes   103.6 % Full(Memory Overflow)
Data Memory Usage   :  4064 bytes   99.2 % Full

Das man durch eine einfach y = mx + k Rechnung fask 8kB an RAM Speicher 
braucht scheint mir ein wenig schleierhaft.

Hier ist der Übeltäter:

/* y = mx + k */
/* Steigung wird hier mit Zwei Punkten mit x und y berechnen */
double m =  (1/ (double) denominator) *(double) numerator;
/* Gleichung nach k Auflösen und Punkt einsetzten */
double k = (double) lowerLuminancePoint - (m * 
(double)lowerAmbienceLightPoint);

double tmpValue =  m * (double) lux;
uint16_t candelaValue =  (uint16_t) (tmpValue + k);

Wenn ich jetzt hier "candelaValue" als return zurückgebe oder in eine 
globale Variable schreibe erhalte ich 8kB mehr Flashspeicher Nutzung?

Weiss jemand was hier der Fehler ist?
#4559869
Lesenswert?
• ▲
▼
@  Patrick Schmelzer (patricksch)

>Hier ist der Übeltäter:

>Wenn ich jetzt hier "candelaValue" als return zurückgebe oder in eine
>globale Variable schreibe erhalte ich 8kB mehr Flashspeicher Nutzung?

Da wird relativ knallhart die Fließkommabibliothek eingebunden und die 
scheint auf deinem System nicht sonderlich sparsam zu sein. Hier reicht 
wahrscheinlich Festkommaarithmetik.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren