INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ram Speicher bei Arduino Mega wird knapp
01.02.2019, 22:30 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2019 22:32 von GuaAck.)
Beitrag #9
RE: Ram Speicher bei Arduino Mega wird knapp
Hallo,

dass RAM eng wird, ok, bei den vielen Libs verständlich. Strings und feste Zahlenwerte in PROGMEM legen ist auch gut.

Variablen aus dem RAM entfernen: Wenn Variablen innerhalb ener Function deklariert werden, dann sollten sie auf den Stack kommen und damit nach Ende der Function wieder gelöscht sein. Also: "Löschbare" Variablen möglihst in Functions legen".

Merkwürdig: Du schreibst, dass es einige Zeit läuft. Wenig RAM kann die Ursache sein, dann müsste es ein "seltenes" Zusammentreffen unglücklicher Zufälle sein oder es gibt einen "Speicherfresser". Ich fürchte eher, das hat einen anderen Grund.

Ich hatte vor ein paar Wochen ein kleines Programm gefunden (Quelle habe ich nicht notiert), mit dem man zur Laufzeit den aktuellen freien RAM-Speicher ermitteln kann. Hat mir sehr geholfen. Das Programm ist als ZIP angehängt. Das Original-Testprogramm lief bei mir nicht, weil bestimmte Typen bei mir unbekannt waren, deshalb habe ich nach Vorlage ein eigenes kleines Testprogramm ("quick-and-dirty") gemacht, in dem bei jedem Durchlauf der Loop Speicher "gefressen" wird bis das Programm letzlich crashed.

Hilft Dir vielleicht.

Ansonsten:
Nextion kann ich empfehlen, man braucht aber etwas Zeit, um die Logik zu verstehen. ,

Größerer uC: Ich sehe da nur den DUE (mein Faviorit), der arbeitet allerdings mit 3,3V-Logik.

Gruß GuaAck


Angehängte Datei(en)
.zip  RAMfrei_Test.zip (Größe: 2,12 KB / Downloads: 11)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 08:40 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2019 09:19 von unkreativ.)
Beitrag #10
RE: Ram Speicher bei Arduino Mega wird knapp
(31.01.2019 23:21)hotsystems schrieb:  Auch die Time.h, die TimeLib.h und die DCF77.h ist doppelt aufgeführt.

Code:
#include <DCF77.h>
#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Time.h>
#include <TimeLib.h>
#include <Wire.h>
#include <Time.h>
#include <TimeLib.h>
#include <DCF77.h>

War die Idee mit dem Nextion so abwegig oder warum kommt da keine Reaktion ?
Oder ist das Thema für dich zu schwer ?
Sorry, mir ging es gerade einfach nicht gut und ich habe mich mit dem Thema noch nicht auseinandergesetzt

(01.02.2019 22:30)GuaAck schrieb:  Hallo,

dass RAM eng wird, ok, bei den vielen Libs verständlich. Strings und feste Zahlenwerte in PROGMEM legen ist auch gut.

Variablen aus dem RAM entfernen: Wenn Variablen innerhalb ener Function deklariert werden, dann sollten sie auf den Stack kommen und damit nach Ende der Function wieder gelöscht sein. Also: "Löschbare" Variablen möglihst in Functions legen".

Merkwürdig: Du schreibst, dass es einige Zeit läuft. Wenig RAM kann die Ursache sein, dann müsste es ein "seltenes" Zusammentreffen unglücklicher Zufälle sein oder es gibt einen "Speicherfresser". Ich fürchte eher, das hat einen anderen Grund.

Ich hatte vor ein paar Wochen ein kleines Programm gefunden (Quelle habe ich nicht notiert), mit dem man zur Laufzeit den aktuellen freien RAM-Speicher ermitteln kann. Hat mir sehr geholfen. Das Programm ist als ZIP angehängt. Das Original-Testprogramm lief bei mir nicht, weil bestimmte Typen bei mir unbekannt waren, deshalb habe ich nach Vorlage ein eigenes kleines Testprogramm ("quick-and-dirty") gemacht, in dem bei jedem Durchlauf der Loop Speicher "gefressen" wird bis das Programm letzlich crashed.

Hilft Dir vielleicht.

Ansonsten:
Nextion kann ich empfehlen, man braucht aber etwas Zeit, um die Logik zu verstehen. ,

Größerer uC: Ich sehe da nur den DUE (mein Faviorit), der arbeitet allerdings mit 3,3V-Logik.

Gruß GuaAck
Es ist definitiv ein Speicherfresser da drin, wie der Test zeigt. Ich habe mir den freien Arbeitsspeicher per Seriellen Monitor ausgeben lassen und dadurch sieht man dass er immer weniger wird. (Der freie Arbeitsspeicher ist die Zahl unter ,,Arbeitsspeicher")

   

Huh
Von den vielen Dingen die ich verloren habe vermisse ich am meisten meinen Verstand. -Ozzy Osbourne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 09:30
Beitrag #11
RE: Ram Speicher bei Arduino Mega wird knapp
Hallo,

dann laß Dir die Speicherwerte sytematisch bei jedem Funktionsaufruf in der Loop ausgeben, also vor Aufruf und nach Rückkehr, dann solltest Du rausfinden können, wer da immer 30 Byte frisst.
Mach das aber nicht bei allen Aufrufen gleichzeitig, der Ausgabekram braucht temorär ja auch Speicher...

Gruß aus Berlin
Michal
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 10:01 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2019 12:04 von unkreativ.)
Beitrag #12
RE: Ram Speicher bei Arduino Mega wird knapp
(02.02.2019 09:30)amithlon schrieb:  Hallo,

dann laß Dir die Speicherwerte sytematisch bei jedem Funktionsaufruf in der Loop ausgeben, also vor Aufruf und nach Rückkehr, dann solltest Du rausfinden können, wer da immer 30 Byte frisst.
Mach das aber nicht bei allen Aufrufen gleichzeitig, der Ausgabekram braucht temorär ja auch Speicher...

Gruß aus Berlin
Michal

Scheinbar scheint meine GUI-Funktion den Arbeitsspeicher für sich zu beanspruchen...

Wäre es sonst irgendwie möglich, den EEPROM als weiteren RAM zu nutzen, indem ich darin einige Variablen speichere und ihn jeweils zu beginn des Loop-Teils cleare?

   

Huh
Von den vielen Dingen die ich verloren habe vermisse ich am meisten meinen Verstand. -Ozzy Osbourne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 12:26
Beitrag #13
RE: Ram Speicher bei Arduino Mega wird knapp
Hallo,

(02.02.2019 10:01)unkreativ schrieb:  Scheinbar scheint meine GUI-Funktion den Arbeitsspeicher für sich zu beanspruchen...

Wäre es sonst irgendwie möglich, den EEPROM als weiteren RAM zu nutzen, indem ich darin einige Variablen speichere und ihn jeweils zu beginn des Loop-Teils cleare?

Ich habe da jetzt nur schnell drübergescrollt, NotePad++ formatiert Deinen Source nicht gerade lesbar.
Kann es sein, daß Du innerhalb GUI(){} GUI() rekursiv aufrufst? Absichtlich?

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 12:49
Beitrag #14
RE: Ram Speicher bei Arduino Mega wird knapp
(02.02.2019 10:01)unkreativ schrieb:  ......
Wäre es sonst irgendwie möglich, den EEPROM als weiteren RAM zu nutzen, indem ich darin einige Variablen speichere und ihn jeweils zu beginn des Loop-Teils cleare?

Du kannst zwar Inhalte aus Variablen im EEProm ablegen und diese bei Bedarf wieder zurückholen, am Platzbedarf im Ram ändert sich da jedoch nichts.
Die einzelnen Variablen reservieren immer den entsprechenden Speicherbedarf.

Da hilft nur konsequent den Sketch aufräumen oder eben alternativen zu verwenden.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 13:19
Beitrag #15
RE: Ram Speicher bei Arduino Mega wird knapp
(02.02.2019 12:26)amithlon schrieb:  Hallo,

(02.02.2019 10:01)unkreativ schrieb:  Scheinbar scheint meine GUI-Funktion den Arbeitsspeicher für sich zu beanspruchen...

Wäre es sonst irgendwie möglich, den EEPROM als weiteren RAM zu nutzen, indem ich darin einige Variablen speichere und ihn jeweils zu beginn des Loop-Teils cleare?

Ich habe da jetzt nur schnell drübergescrollt, NotePad++ formatiert Deinen Source nicht gerade lesbar.
Kann es sein, daß Du innerhalb GUI(){} GUI() rekursiv aufrufst? Absichtlich?

Gruß aus Berlin
Michael
GUI() ist bei mir für die Darstellung auf einem TFT-Screen zuständig und muss, wenn sich die Werte aktualisieren, bzw ein Touch erkannt wurde aktualisiert werden und die alten Werte müssen überschrieben werden.

Huh
Von den vielen Dingen die ich verloren habe vermisse ich am meisten meinen Verstand. -Ozzy Osbourne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2019, 13:27
Beitrag #16
RE: Ram Speicher bei Arduino Mega wird knapp
Ich nehme mal an, Du hast meine Vorschläge und die der Anderen umgesetzt.

Jetzt wäre es an der Zeit, Deinen Sketch aufzuräumen und ordentlich zu formatieren. So wie er ist, wird sich wohl kaum jemand tiefer darin einarbeiten.

Das Ergebnis solltest Du dann wieder hier vorstellen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Bedingung wird nicht wiederholt ausgeführt Lite 16 670 29.03.2019 05:11
Letzter Beitrag: Lite
  HC-06 Arduino Mega Übertragungsprobleme fv1895 4 255 15.03.2019 11:35
Letzter Beitrag: fv1895
  Attiny85 zu wenig Speicher Harry 36 1.658 20.01.2019 16:15
Letzter Beitrag: Harry
  Elegoo Mega 2560 R3 lässt sich nicht programieren Union1925 6 780 03.12.2018 21:21
Letzter Beitrag: Tommy56
  Loop wird doppelt ausgeführt nanoheld 6 648 26.11.2018 21:06
Letzter Beitrag: hotsystems
  Befehl wird nicht ausgeführt renesworld 15 1.066 19.10.2018 12:37
Letzter Beitrag: hotsystems
  Mega 2560 + USB Host Shield + USB-Stick Cospieler 4 908 19.09.2018 11:17
Letzter Beitrag: Tommy56
  Serielle Daten Windigipet 2018 Software, Arduino Mega 2560 verarbeiten/melden Christian_Moba-Arduino 11 1.898 15.09.2018 09:43
Letzter Beitrag: MicroBahner
  Code für Speicher optimieren Sasch600xt 35 3.120 31.08.2018 12:41
Letzter Beitrag: Sasch600xt
  am besten nur für Arduino MEGA compilieren ? uweq 12 1.262 17.08.2018 19:22
Letzter Beitrag: uweq

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste