Arduino: Variable Daten von SD Karte einlesen

OP #4916381
Hallo zusammen,

folgendes fiktives Projekt soll programmiert und abgegeben werden.

Eine Kuchenteigmaschine soll mit einem Arduino angesteuert werden. Die 
Verschiedenen Zutaten sollen zusammengemixt und weiterverarbeitet 
werden.
Dabei sind die Anzahl der Zutaten, einzelne Zutaten und Mengenangaben 
der verschiedenen Kuchen in einem Textdokument auf der SD-Karte 
gespeichert. Die SD-Karte ist dem Anwender zugänglich. Er kann die 
Textdatei also ändern und neue Kuchen hinzufügen oder Alte löschen.

Da verschiedene Kuchen ausgewählt werden können, kenne ich die Anzahl 
der Zutaten und Mengenangaben erst beim Einlesen der Daten.
Ist es sinnvoller Speicher für einen Array dynamisch zu allokieren und 
die einzelnen Zutaten/Mengen darin zu speichern oder einfach einen Array 
zu erstellen, der groß genug ist damit alles reinpasst?

Konnte in der SuFu nichts finden und bin verunsichert weil ich im Netz 
gesehen hab, dass von dynamischer Speicherverwaltung auf einem 
Microkontroller eher abgeraten wird. Hoffe ihr könnt mir helfen.

Grüße
thanekrios
Gast #4916387
Patrick N. schrieb:
> Ist es sinnvoller Speicher für einen Array dynamisch zu allokieren
Dynamisch allokieren ist nur dann sinnvoll, falls bei einer kleinen 
Allokierung der verbleibende Speicher durch irgendetwas anderes (z.B. 
eine weitere dynamische Allokierung) genutzt werden kann. Da man auf 
Mikrocontrollern eher selten ein OS mit mehreren Programmen nutzt, 
welche den freibleibenden Speicher nutzen können, braucht man diese 
nicht zu beachten. Falls der ungenutzte Speicher aber durch nichts 
anderes verwendet werden kann, ist die dynamische Allokierung nutzlos - 
dann kannst du gleich ein Array machen, das so groß ist wie der Speicher 
erlaubt, und das so voll machen wie nötig. So gilt zwar der ganze 
Speicher als "belegt" auch wenn das Array tatsächlich halb leer ist, 
aber das stört ja nicht (für unbelegten Speicher gibts kein Geld 
zurück).

Patrick N. schrieb:
> dass von dynamischer Speicherverwaltung auf einem
> Microkontroller eher abgeraten wird.
Richtig, denn die Allokierung bedeutet einen gewissen Overhead 
(Rechenzeit+Speicher) der nicht gut vorherberechnet werden kann, und es 
werden Fehlerbehandlungen nötig für wenn kein Speicher mehr frei ist. 
Insbesondere für sicherheitskritische Funktionen wäre es blöde, wenn sie 
nicht ausgeführt werden können, weil nicht mehr genug Speicher da ist. 
Daher verzichtet man oft darauf.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.