- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 7 von 7

Thema: Findet den Fehler

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49
    Manchmal sieht man den Wald vor lauter Bäumen nicht.... den Fehler daran hab ich gefunden!!!


    Was anderes, ich schreibe gerade an einem Datenlogger der Laufzeitdaten aus einem Steuergerät kopiert (ca 106 Byte ,Serial ) , einen RTC und SD Karte verwaltet und dabei noch ein kleines Menü am TFT ausgibt ...
    Jetzt gibt der Compiler schon jedes mal die Meldung "Low memory available, stability problems may occur." aus weil ich bisher ca 87% des dynamischen Speichers verbraten hab. Der Dynamische Speicher ist doch der SRAM oder ?
    Kann ich wenigstens Teile davon auslagen ?
    Bisher hatte ich noch nie das Problem das mein UNO Speicher Probleme bekommt,daher kenne ich bisher keine Abhilfe.

    Das Programm ist bisher schon 20kbytes groß und wird sicher noch um 5-8kbytes wachsen.

    Die lib die ich bisher benütze sind...

    #include <AltSoftSerial.h>
    #include <SPI.h>
    #include <SD.h>
    #include "RTClib.h"
    #include <Wire.h>

    Ich bin mir nicht sicher ob es vill an meinem Code liegt ,ich hab jetzt immer öfter Probleme mit der Seriellen Kommunikation Probleme. Mir kommt es so vor das wenn ich den Code stark um lib s und Zeilen erleichtere das es besser wird.

    Gruß

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von jok3r Beitrag anzeigen
    Was anderes, ich schreibe gerade an einem Datenlogger der Laufzeitdaten aus einem Steuergerät kopiert (ca 106 Byte ,Serial ) , einen RTC und SD Karte verwaltet und dabei noch ein kleines Menü am TFT ausgibt ...
    Jetzt gibt der Compiler schon jedes mal die Meldung "Low memory available, stability problems may occur." aus weil ich bisher ca 87% des dynamischen Speichers verbraten hab.Kann ich wenigstens Teile davon auslagen ?
    Bisher hatte ich noch nie das Problem das mein UNO Speicher Probleme bekommt,daher kenne ich bisher keine Abhilfe.
    Dein RAM wird in 3 Teile aufgeteilt:
    1. Platz für statische Variablen.
    2. Stack. Auf dem Stack werden alle automatischen Variablen und die Parameter bei einem Funktionsaufruf abgelegt. Hinzu kommen noch die Rücksprung-Adressen bei Funktionsaufrufen und die Interrupts benötigen auch noch Platz auf dem Stack.
    3. Heap. In C wird der Heap mit alloc() und Free() verwaltet in C++ meistens mit new und free.

    Besonders der Stackbereich kann Probleme machen, wenn dieser überläuft, dann überschreibt er meistens einen der anderen beiden Bereiche.

    Deine Bibliotheken benötigen auch entsprechenden Platz im RAM.

    Das dies alles ins RAM passt, ist eine der Aufgaben der Programmierers.

    Wie das aufgeteilt ist, verrät dir teilweise das Listing des Linkers.
    Wie viel dynamischen Platz der Stack belegt, kannst du mit dem Debugger herausfinden.

    Zitat Zitat von jok3r Beitrag anzeigen
    Der Dynamische Speicher ist doch der SRAM oder ?
    Es gibt zwei Arten von dynamischem RAM:
    1. Hardware: Hier bezeichnet es den Aufbau der Speicherzellen. Bei dynamischem RAM werden die Bits im Prinzip in Kondensatoren gespeichert. Da sich die Kondensatoren mit der Zeit entladen, muss die Information dauernd gelesen und neu gespeichert werden.
    2. Programmtechnik: Wie oben beschrieben, z.B. der Heap. Das Programm kann zur Laufzeit einen Speicherblock anfordern und diesen dann benutzen. Braucht es diesen nicht mehr, gibt es ihn an den Heap zurück. Fordert das Programm erneut einen Block an, bekommt es einfach den nächsten passenden freien Block zugeteilt. Der Vorteil liegt einerseits darin, dass man beim Schreiben des Programms, noch nicht wissen muss, wie gross der Datenblock sein muss, das muss man erst bei der Anfrage an den Heap wissen. Andererseits kann man so das RAM besser ausnutzen, indem das RAM nur solange belegt wird, wie dieser Speicherblock auch benötigt wird.


    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. Ausuro sucht solange bis er den Durchgang findet...
    Von Thund3r im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 10.01.2009, 13:08
  2. Compiler findet i bewährt Deklarationen neue Fehler (gelöst)
    Von oberallgeier im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 22.10.2008, 14:25
  3. (Problem gelöst, DANKE)sehe den Fehler nicht
    Von jar im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 06.04.2007, 19:11
  4. Wer findet den Programmfehler? ..
    Von Lenox im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 25.02.2007, 13:03
  5. Wer findet den Trick??
    Von Roboter n00b im Forum Kopfnüsse / Wissensquiz
    Antworten: 10
    Letzter Beitrag: 06.07.2005, 23:00

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen