Forum: Mikrocontroller und Digitale Elektronik Arduino Array - wieviel Platz habe ich ?


von stefan baier (Gast)


Lesenswert?

Hallo,

ich möchte gern mit einem Arduino Pro Mini ( ATMEGA 328 P 5V ) gemessene 
Temperaturwerte in einem Array im 2KByte RAM speichern und später wieder 
auslesen. Das haben sicher schon viele gemacht ....
Jetzt würde mich interessieren wie groß dieses Array sein darf, da 
sicher Teile vom RAM schon vom Arduino-System für Variablen benutzt 
werden.
Gibt es da eine Möglichkeit das unter der Arduino-Programmieroberfläche 
rauszubekommen?
Den ATMEGA mit C oder Bascom zu programmieren möchte ich nicht, da ich 
für das verwendete Display ein vorhandene Arduino Bibliothek benutze.

erstmal vielen Dank für alle Antworten

: Verschoben durch Moderator
von Mitlesa (Gast)


Lesenswert?

stefan baier schrieb:
> Den ATMEGA mit C oder Bascom zu programmieren möchte ich nicht, da ich
> für das verwendete Display ein vorhandene Arduino Bibliothek benutze.

Dann benutze diese Bibliothek in der Arduino IDE und compiliere
sie. Bei (hoffentlich) erfolgreichen Abschluss gibt dir die IDE
eine Meldung aus wie gross der erzeugt Code (im Flash Speicher)
und das benutze RAM ist.

Da wir deine Bibliothek nicht kennen können wir nicht beurteilen
wie die Speicherauslastung aussieht.

von Mitlesa (Gast)


Lesenswert?

stefan baier schrieb:
> Den ATMEGA mit C oder Bascom zu programmieren möchte ich nicht, da ich
> für das verwendete Display ein vorhandene Arduino Bibliothek benutze.

Aber eine Anwendung für dein eigentliches Vorhaben programmiert
sich nicht von alleine ....  es sei denn du lässt programmieren ...

von stefan baier (Gast)


Lesenswert?

Die Anwendung an sich funktioniert. Nach dem kompilieren bekomme ich nur 
das angezeigt:

Binäre Sketchgröße: 12.056 Bytes (von einem Maximum von 30.720 Bytes)

evtl. gibt es eine Funktion die die Größe des unbenutzen RAM ausgibt.

von Peter F. (Gast)


Lesenswert?

>evtl. gibt es eine Funktion die die Größe des unbenutzen RAM ausgibt.

Ja gibt es. Aber du willst ja nur die vorhandene Arduino Bibliothek für 
das verwendete Display verwenden, die keiner außer dir kennt. Also such 
einfach selbst in dieser Bibliothek nach einer Funktion die die Größe 
des unbenutzen RAM ausgibt.

Wenn du weniger lernresistent wärst, könnte man dir andere Funktionen 
empfehlen. Aber was solls, wenn du so stur bist?

von Alexander K. (minjaman)


Lesenswert?

Hallo Stefan,

Du kommst dem freien Speicher schon ein wenig näher, wenn du die 
Belegung durch statisch angeforderten Speicher kennst. Die "kleinen" 
Programme tendieren ja dazu, im Wesentlichen statischen Speicher oder 
den Stack zu belegen.

Beim Compile eines Arduino-Programmes wird in einem Temp-Verzeichnis 
eine zum Programm passende elf-Datei produziert. Aus der kann dann die 
größe des statisch reservierten RAMS mit dem Tool avr-size ermittelt 
werden.

Beispiel bei mir auf dem Arbeitsrechner:
C:\Temp\arduino-1.0.5\hardware\tools\avr\bin\avr-size -C 
--mcu=atmega328p 
C:\Users\alex\AppData\Local\Temp\build7991906938669831025.tmp\VierkanalS 
ender.cpp.elf

Beitrag "avr-size: Wie groß ist das Programm denn nun wirklich?"
http://rn-wissen.de/wiki/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc

Gruß
Alexander

von Jojo S. (Gast)


Lesenswert?

stefan baier schrieb:
> Die Anwendung an sich funktioniert. Nach dem kompilieren bekomme ich nur
> das angezeigt:

dann scheint deine Arduino IDE Version zu alt zu sein, bei meiner 
1.5.6-r2 gibt es zB diese Angaben zum Schluss:
'Der Sketch verwendet 4.554 Bytes (15%) des Programmspeicherplatzes. Das 
Maximum sind 28.672 Bytes.
Globale Variablen verwenden 151 Bytes (5%) des dynamischen Speichers, 
2.409 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.560 
Bytes.'

von Mitlesa (Gast)


Lesenswert?

Jojo S. schrieb:
> bei meiner 1.5.6-r2 gibt es zB diese Angaben zum Schluss:

Mittlerweile gibt es eine Arduino IDE (nicht-Beta) v1.6

von stefan baier (Gast)


Lesenswert?

vielen Dank an alle ...

ich hatte noch Version 1.0.5 ...

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.