Speicher berechnen

Hallo miteinander,

ich möchte berechnen wie viel Messwerte ich auf dem Arduino zwischen Speichern kann.

Ich habe 5 Schieblehre eine Waage, jedes der Geräte gibt die Daten momentan über eine Variable Typ float aus, ich möchte aber die Daten zwischen Speichern damit ich sie Später auslesen kann.

Ich frage mich nur wie viel ich davon Speichern kann bevor der Speicher voll ist.

Ich verwende ein Arduino Mega.

kann mir einer sagen wie ich das was rechen muss? damit ich hier wies was ich Speicher kann?

Gruß Mücke

diese Funktion hast du doch schon in deinem anderen Programm, oder?

int getFreeRAM() 
{
  extern int __heap_start, *__brkval; 
  int v; 
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
}

Dann lass dir da mal den Speicher anzeigen den du noch frei hast.

Ein Float hat 4 Bytes. Dann kannst du ausrechnen was du belegen kannst. Wobei du immer etwas für den regulären Programmablauf frei lassen musst.

Stimmt, da war mal was, ...

Danke.

ich habe also noch 7910 Free laut Ausgabe, wenn ich also für jedes gerät 4Bytes benötige könnte ich Theoretisch 1977 Werte Sichern, bei 6 Geräten macht das ca. 329 mal jedes gerät Sichern.

hmm, das wäre gar nicht so schlecht,...

eine SD Karte doch noch mal etwas Besser.

Wie gesagt, du du solltest mindestens 100-200 Bytes frei lassen. Bei jedem Funktionsaufruf müssen Dinge zwischengespeichert werden (und Funktionsaufrufe sind verschachtelt). Variablen die lokal in Funktionen deklariert sind müssen auch Platz haben wenn auch nur temporär. Wie viel da man genau braucht, hängt vom jeweiligen Programm ab.

OK, dann lasse ich mir den Freien Speichern noch immer mit anzeigen - 200 ;) und rechne mir dann aus wie viel werte ich noch zwischen Speichern kann :-).

Denn eine SD Karte habe ich jetzt :-) schon ein Bekannter hat so viel das er mir eine so mit gegeben hat 256MB (256 000 000 bytes) jedoch ist das SD Karten Modul noch nicht da :-(

Danke erst mal.

[OT] ich dachte Funktionen werden mit "void" und nicht mit "int" aufgerufen, das werde ich glaube ich nie verstehen, da wird so was mal mit "int", "void" oder auch mit "float" aufgerufen.

http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/009_c_funktionen_015.htm#mj1ee1b27a557aba80141324548a5e2b65