Gast
#443142
Hallo,
ich hab mal ein paar Fragen:
1. Wie ermittle ich den Speicherverbrauch(RAM) eines C-Programms?
Also nicht die Größe des Codes, sondern die letztendlich vom laufenden
Programm maximal benötigte Speichergröße.
Zusammenzählen der von den globalen Variablen verbrauchten Bytes ist
einfach, aber wie sieht es mit dem Stack etc. aus?
Und was passiert, falls der µC an die Grenze seines RAM stößt? Wirds
undefiniert oder macht der einen sauberen Reset?
----
2. Wie viele Bytes sind die Datentypen "Float" und "Double" bei WinAvr
und AtMega16 groß? Und wie groß ist der jeweilig verwendbare
Wertebereich der Datentypen?
Konkret geht es um folgende Funktion:
vsolly = vsoll*labs(ysoll-y_act_ok)
/sqrt((xsoll-x_act_ok)*(xsoll-x_act_ok)
+(ysoll-y_act_ok)*(ysoll-y_act_ok));
welche dank irgendeinem Wertüberlauf nur Mist produziert und damit einen
Portalroboter unsanft durch die Gegend schickt.
ysoll und y_act_ok sind als 32-Bit-Variablen(unsigned int32) gespeichert
und können dabei Werte von ca. 2.700.000 bis ca. 3.300.000 annehmen,
während vsoll zwischen 0 und 128 groß ist.
Ich weiß, einen 8-Bitter soll man nicht mit so großen Zahlen quälen,
aber hier geht es leider nicht anders... ;-)
Vielen Dank schonmal im Voraus für die Hilfe.
MfG,
Richard